Рубрики
Uncategorized

Разверните приложение Laravel с Nginx на Ubuntu 18.04 на Digitalocean

Полная прогулка по развертыванию приложения Larave на свежей капельке Digitalocean Ubuntu 18.04. Он включает в себя шаги установки всех зависимостей. Теги с Laravel, Nginx, Ubuntu, Devops.

Это полное руководство по развертыванию приложения Laravel на свежей капельке Ubuntu 18.04 на Digitalocean. Мы можем выполнить те же шаги для развертывания на любом подобном хосте (например, Linode) с ОС Ubuntu 18.04. Для этого вам понадобится свежая капля с сервером Ubuntu 18.04, установлена и корневым доступом этого сервера. Нам также нужен домен/поддомен, указанный на IP-адрес этого сервера (вы можете сделать это, установив «значение» в вашем DNS-менеджере). Если мы все настроены до этого момента, давайте переместим вперед и настройте наш новый сервер Ubuntu.

Теперь мы собираемся установить следующее:

  • Nginx.
  • MySQL 5.7
  • PHP 7.2

Прежде всего запустить следующую команду:

$ apt-get update

1. Nginx.

NGINX — один из самых популярных веб-серверов в мире и несет ответственность за проведение некоторых из крупнейших и самых высоких площадок трафика в Интернете. Это более ресурсоирено, чем Apache в большинстве случаев и может использоваться в качестве веб-сервера или обратного прокси.

1.1. Установка Nginx.

$ apt-get install nginx

1.2. Регулировка брандмауэра

Перед тестированием Nginx программное обеспечение для брандмауэра необходимо настроить, чтобы разрешить доступ к сервису. Nginx регистрирует себя как услугу с UFW При установке, сделав его прямо, чтобы разрешить доступ NGINX.

Перечислите конфигурации приложений, которые UFW Знает, как работать, набрав:

$ ufw app list

Мы должны получить список профиля приложения

//Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Теперь мы можем включить HTTP, набрав

$ ufw allow 'Nginx HTTP'

Давайте проверим изменение, набрав

$ ufw status

Мы должны увидеть HTTP-трафик, разрешенный на отобранном выходе:

//Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

1.3. Проверка веб-сервера

В конце процесса установки Ubuntu 18.04 начинает nginx. Веб-сервер уже должен быть запущен и работает. Мы можем проверить по следующей команде

$ systemctl status nginx
//Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-06-09 00:00:00 ; 3h 33min ago
     Docs: man:nginx(8)
  Process: 2062 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 1803 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 2064 (nginx)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─2064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─2066 nginx: worker process
           ├─2068 nginx: worker process
           ├─2071 nginx: worker process
           └─2072 nginx: worker process

Теперь Если мы пойдем к нашему Server_ip_or_domain из вашего браузера мы будем на следующей странице

2. MySQL 5.7

На Ubuntu 18.04 только последняя версия MySQL включена в репозиторий Package APT по умолчанию. На момент написания, это MySQL 5.7. Чтобы установить выполнить следующую команду:

$ apt-get install mysql-server

Это установит MySQL, но не предложит вам установить пароль или внести любые другие изменения конфигурации. Потому что это оставляет нашу установку небезопасности MySQL, мы запустим следующую команду.

$ mysql_secure_installation

Это приведет нас через серию подсказков, где мы можем внести некоторые изменения в наши параметры безопасности MySQL, такие как установить пароль для пользователя root и т. Д. Мы должны установить пароль для пользователя root. Чтобы войти в пользователь root с недавно заданным паролем, мы можем запустить следующую команду

$ mysql -u root -p

Чтобы проверить будь то MySQL работает запускать следующую команду

$ systemctl status mysql
// Output
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-06-09 00:00:00; 3h 53min ago
  Process: 1948 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS)
  Process: 1792 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1950 (mysqld)
    Tasks: 28 (limit: 4915)
   CGroup: /system.slice/mysql.service
           └─1950 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

3. PHP 7.2

PHP 7.2 включен в репозиторий Ubuntu по умолчанию на 18.04. Мы можем перечислить каждый из доступных пакетов PHP 7.2 со следующей командой

$ apt-cache pkgnames | grep php7.2

Далее мы можем установить пакеты, которые требуют нашего приложения

$ apt-get install php curl git unzip
$ apt-get install php-pear php-fpm php-dev php-zip php-curl php-xmlrpc php-gd php-mysql php-mbstring php-xml libapache2-mod-php

Наконец, мы можем перезапустить Nginx, чтобы позволить PHP запустить

$ systemctl restart nginx

И подтвердить версию PHP

$ php --version
// Output
PHP 7.2.16-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Mar  7 2019 20:23:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.16-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Основной файл конфигурации PHP 7.2 будет сохранен как /так далее/php/7.2/fpm/php.ini . Мы можем использовать любой текстовый редактор для изменения соответствующих настроек в этом файле

$ nano /etc/php/7.2/fpm/php.ini

Теперь нам нужен другой инструмент, прежде чем мы сможем настроить настроить Laravel. Этот инструмент — композитор Отказ Composer — это популярный инструмент управления зависимостями для PHP, созданный в основном для облегчения установки и обновлений для зависимостей проекта. Чтобы установить композитор Мы должны запустить следующие команды

$ cd ~
$ curl -sS https://getcomposer.org/installer -o composer-setup.php

Чтобы установить Composer по всему миру, используйте следующую команду, которая загрузится и установит композитор в виде команды System-Share с именем композитор под /usr/local/bin

$ php composer-setup.php --install-dir=/usr/local/bin --filename=composer
//Output
All settings correct for using Composer
Downloading...

Composer (version 1.6.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Чтобы проверить нашу установку, мы можем запустить

$ composer

И мы получим следующий вывод со всеми аргументами композитора

Output
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.6.5 2018-05-04 11:44:59

Usage:
  command [options] [arguments]
...

Как мы закончили установку всех зависимостей. Теперь его время для нас, чтобы создать основной проект. Здесь я собираюсь использовать Git, чтобы потянуть мой Laravel Project из удаленного репозитория и поддерживать контроль версий приложения.

Настройка базы данных

Но сначала мы должны создать новую базу данных для приложения. Чтобы создать базу данных MySQL и пользователей, мы должны следовать этим шагам.

  • На командной строке мы должны войти в MySQL в качестве пользователя root.
$ mysql -u root -p

Вставьте пароль root для входа в mysql оболочку.

  • Чтобы создать пользователь базы данных, мы должны ввести следующую команду. Заменить Имя пользователя с пользователем, который вы хотите создать, и заменить пароль с паролем пользователя.
$ mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Затем введите \ Q, чтобы выйти из программы MySQL.

  • Чтобы войти в MySQL как пользователь, который мы только что создали, введите следующую команду. Заменить Имя пользователя с именем пользователя, который вы создали на предыдущем шаге.
$ mysql -u username -p

Вставьте пароль пользователя для входа в Shell MySQL.

  • Чтобы создать базу данных, мы должны вводить следующую команду. Заменить dbname с именем базы данных, которую вы хотите создать.
$ mysql> CREATE DATABASE dbname;

Настройка приложений

Мы собираемся принять наше приложение в /var/www/html каталог нашего сервера. Вы можете использовать любой другой каталог, если хотите. Мы будем использовать Гит Загрузить файлы проекта и поддерживать контроль версий. Я полагаю, мы знаем основы git. Давайте погрузиться в.

  • Создайте пустой репозиторий Git в /var/www/html каталог.
$ cd /var/www/html
$ git init

Скажем, наш удаленный репозиторий на Гадость И у нас есть ссылка https://github.com/username/project-name.git И это репо имеет Производство ветвь. Теперь давайте добавим это удаленное репо на наше недавно созданное пустое репо и потяните файлы проекта с пульта.

$ git remote add origin https://github.com/username/project-name.git
$ git pull origin production

Возможно, нам придется войти в ваше имя пользователя и пароль GitHub здесь. Тогда мы должны ждать, пока полная ветвь не будет загружена на сервер. Теперь мы настроим приложение Laravel на нашем сервере. Убедитесь, что мы находимся в нашем каталоге проекта (здесь это /var/www/html ).

$ cp .env.example .env
$ nano .env

Это откроет .env Файл в нано Редактор, чтобы мы могли внести необходимые изменения.

// .env file
APP_NAME=application_name
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=application_url

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=username
DB_PASSWORD=password

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

После редактирования мы сохраним файл by Ctrl + O и выход из Ctrl + x Отказ Теперь давайте устанавливаем все зависимости через композитор Отказ

$ composer update

После того, как все зависимости установлены успешно запустите следующие команды.

$ composer dump-autoload
$ php artisan config:clear
$ php artisan key:generate
$ php artisan migrate
$ php artisan db:seed

Наше приложение Laravel почти настроено сейчас. Единственное, что осталось делать сейчас, — сделать файл конфигурации NGINX. Мы можем использовать /etc/nginx/sites-available/default.conf файл или мы можем сделать новый файл конфигурации. В любом случае это будет работать. Здесь мы собираемся использовать по умолчанию файл.

$ nano /etc/nginx/sites-available/default.conf

Очистите все из файла и добавьте следующий фрагмент.

// /etc/nginx/sites-available/default.conf file
server {
    listen 80;
    listen [::]:80;

    root /var/www/html/public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name ;

    location / {
    try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
      try_files $uri /index.php =404;
      fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Сохраните и закройте файл. Теперь мы должны сделать символическую ссылку этого файла к /etc/nginx/sites-sisted/ каталог. Выполнить, что выполняет следующую команду.

$ ln -S /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/

Чтобы проверить, правильно ли правильная настройка NGINX, мы можем запустить следующую команду.

$ nginx -t

Если файл конфигурации правильный, он выводит следующее.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Теперь мы должны перезапустить обслуживание Nginx.

$ systemctl restart nginx

В этот момент наше приложение Laravel успешно развернуто на нашем сервере Ubuntu 18.04. Теперь, чтобы проверить мы просматриваем IP или домен сервера из браузера и увидим наше приложение в прямом эфире.

В этом посте я попытался дать вам, ребята, полное руководство по тому, как вы можете развернуть приложение вашего Laravel с Nginx на Ubuntu 18.04 на цифровой платформе или Linode или любой другой подобной платформе хостинга. Надеюсь, это поможет вам все в некотором роде. Мир.

Оригинал: «https://dev.to/shuv1824/deploy-laravel-application-with-nginx-on-ubuntu-18-04-on-digitalocean-1egl»