
Установка 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 в вашем файле конфигурации.
Теперь Ваше приложение развернуто на удаленном сервере и доступно всем пользователям!
Оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи