Установка Laravel на чистый LEMP

Установка Laravel на чистый LEMP

В прошлой статье мы подготовили наш VPS сервер и установили на него LEMP.

В этой статье мы развернем наше laravel приложение на нашем удаленном сервере.

Для этого нам понадобится:

  • Домен привязанный к нашему серверу.
  • Git репозиторий с нашим приложением
  • ssh доступ к нашему серверу

Домен для проекта

Если у Вас еще нет домена - не спешите огорчаться или покупать домен для своего проекта. Для учебных целей Вы можете использовать бесплатный домен на год от dot.tk. Используя настройки самого сервиса Вы с легкостью можете привязать Ваш домен к ip адресу сервера

Установка Laravel на LEMP сервер

Первое что нам необходимо сделать - это подключиться по ssh к нашему серверу.

В терминале вводим следующую команду:

ssh login@ip_address

где указываем логин вашего пользователя и ip-адрес сервера. при необходимости вводим пароль

Т.к. Laravel требует наличие нескольких php библиотек - установим их.

sudo apt install php7.4-fpm php7.4-mysql php7.4-mbstring php7.4-xml php7.4-bcmath

Теперь наш сервер полностью готов к установке Laravel.

 

Создание базы данных для Laravel приложения

В прошлом туториале мы установили mariaDB сервер.

Для начала войдите в консоль MySQL как пользователь root с помощью команды:

sudo mysql

Далее выполним запрос на создание базы данных:

mysql> CREATE DATABASE test_app;

Теперь вы можете создать нового пользователя и предоставить ему полные права доступа к только что созданной базе данных. В этом примере мы создаем пользователя с именем test_user с паролем password.  Желательно создать более сложный пароль.

Создаем пользователя mysql для нашей базы данных:

GRANT ALL ON test_app.* TO 'test_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Этот запрос даст пользователю test_user полные привилегии над базой данных palravel_app, не позволяя этому пользователю создавать или изменять другие базы данных на вашем сервере.

После этого выйдите из оболочки MySQL:

mysql> exit

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

mysql -u test_user -p

Обратите внимание на флаг -p в этой команде, который запросит пароль, используемый при создании пользователя test_user. После входа в консоль MySQL убедитесь, что у вас есть доступ к базе данных laravel_app:

mysql>SHOW DATABASES;

Это даст вам следующий результат:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| test_app           |
+--------------------+
2 rows in set (0.01 sec)

Убедившись, что в результирующей таблице есть необходимая база данных, вы можете выйти из консоли MySQL:

mysql> exit

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

 

Загружаем Laravel приложение на сервер

Как таковых требований о расположении приложении нет. Код приложения может находится в любой директории на сервере, но обычно для хранения проектов используется директория /var/www . С этой директорией мы и будем работать. Для этого перейдем в вышеуказанную директорию:

cd /var/www

Далее клонируем с гит репозитория наш проект:

git clone 

Вы должны увидеть следующее:

remote: Enumerating objects: 225, done.
remote: Total 225 (delta 0), reused 0 (delta 0), pack-reused 225
Получение объектов: 100% (225/225), 12.70 МиБ | 1.44 МиБ/с, готово.
Определение изменений: 100% (33/33), готово.

Ваш проект склонирован на сервер. Чтобы убедится в этом выполните следующую команду:

ls -la

В результате выполнения вы должны увидеть директорию со своим проектом. Перейдем в эту директорию:

cd 

 

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

В первую очередь нам необходимо создать файл .env . В этом  файле хранятся настройки локального укружения, такие как логин/пароль пользователя базы данных, ключ шифрования и т.д. Для этого выполним следующую команду:

cp .env.example .env

Теперь мы отредактируем файл .env, чтобы настроить параметры конфигурации для текущей среды приложения. Откройте файл .env с помощью выбранного редактора командной строки. Здесь мы будем использовать nano:

nano .env

Несмотря на то, что в этом файле много переменных конфигурации, вам не нужно настраивать их все сейчас. В следующем списке содержится обзор переменных, требующих немедленного внимания:

  • APP_NAME:  название приложения
  • APP_ENV: название текущего окружения
  • APP_KEY: Этот уникальный ключ, используемый для генерации солей и хэшей.
  • APP_DEBUG: Показывать ли отладочную информацию на стороне клиента.
  • APP_URL: Базовый URL-адрес приложения, используемый для создания ссылок на приложения.
  • DB_DATABASE: Имя базы данных.
  • DB_USERNAME: логин пользователя БД.
  • DB_PASSWORD: пароль для подключения к БД.

Мы сделаем следующие настройки:

APP_NAME=TestApp
APP_ENV=production
APP_KEY=
APP_DEBUG=true
APP_URL=http://domain_or_IP

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test_app
DB_USERNAME=test_user
DB_PASSWORD=password

...

 Сохраняем и выходим. Мы не случайно оставили параметр APP_KEY незаполненым. К нему мы вернемся чуть позже.

 Когда вы закончите редактирование, сохраните и закройте файл, чтобы сохранить изменения. Если вы используете nano, вы можете сделать это с помощью CTRL + X, затем Y и Enter для подтверждения.

Т.к. мы клонировали проект из гит репозитория, то нам необходимо установить все пакеты, которые используются в проекте. Для этого нам понадобится composer:

composer install

Далее сгенирируем ключ для нашего приложения (APP_KEY в файле .env):

php artisan key:generate

Если Ваше приложение использует базу данных, тогда необходимо еще запустить миграции на выполнение:

php artisan migrate

Отлично! Наше Laravel приложение настроено!

Связка Laravel и Nginx

Нам нужно предоставить пользователю веб-сервера доступ для записи в папки хранилища и кеша, где Laravel хранит файлы, созданные приложением:

sudo chown -R www-data.www-data /var/www/<app_dir>/storage
sudo chown -R www-data.www-data /var/www/<app_dir>/bootstrap/cache

где вместо <app_dir> укажите директорию со своим приложением.

Теперь файлы приложения в порядке, но нам все еще нужно настроить Nginx для обслуживания контента. Для этого мы создадим новый файл конфигурации виртуального хоста в /etc/nginx/sites-available:

sudo nano /etc/nginx/sites-available/test_app

Следующий файл конфигурации содержит рекомендуемые настройки для приложений Laravel на Nginx:

server {
    listen 80;
    server_name <имя домена или ip адрес>;
    root /var/www/<application_dir>/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Скопируйте это содержимое в файл /etc /nginx /sites-available /test_app и, скорректируйте выделенные значения в соответствии с вашей собственной конфигурацией. Сохраните и закройте файл, когда закончите редактирование.

Чтобы активировать новый файл конфигурации виртуального хоста, создайте символическую ссылку на test_app в sites-enabled:

sudo ln -s /etc/nginx/sites-available/test_app /etc/nginx/sites-enabled/

Чтобы убедиться, что конфигурация не содержит синтаксических ошибок, вы можете использовать:

sudo nginx -t

Если нет никаких ошибок, тогда можно перезапустить nginx:

sudo systemctl reload nginx

Теперь перейдите в свой браузер и войдите в приложение, используя доменное имя или IP-адрес сервера, как определено директивой server_name в вашем файле конфигурации.

Теперь Ваше приложение развернуто на удаленном сервере и доступно всем пользователям!

  • share:
Комментарии 0

Оставить комментарий


Комментарии могут оставлять только зарегистрированные пользователи

shape shape