Laravel – популярная открытая PHP-платформа для веб-приложений. Она имеет выразительный, элегантный синтаксис и предоставляет инструменты, необходимые для больших, надежных приложений. Deployer – это модульный инструмент для развертывания PHP с открытым исходным кодом, оснащенный функциями экономии времени и оптимизации. Он поддерживает развертывание многих популярных фреймворков, включая Laravel, Symfony, Zend Framework и CodeIgniter. В этой статье мы покажем вам, как развернуть приложение Laravel с помощью Deployer на Ubuntu 16.04.
Требования
- Сервер Ubuntu 16.04 с доступом root или sudo.
- Git сервер. Вы можете использовать свой собственный сервер GIT или любые популярные сервисы Git, такие как Gitlab, Github или Bitbucket.
Настройка локальной среды разработки
Вы разворачиваете приложение Laravel с локального компьютера, поэтому сначала вам нужно настроить локальную среду разработки и установить Deployer.
Сначала, если у вас уже нет композитора, установленного на вашем локальном компьютере, установите его с помощью:
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer chmod +x /usr/local/bin/composer
Затем создайте новый проект Laravel на вашем локальном компьютере:
composer create-project --prefer-dist laravel/laravel my-laravel-app
Чтобы установить Deployer на локальный компьютер, выполните следующие команды в консоли:
curl -LO https://deployer.org/deployer.phar mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep
Наконец, подключитесь к серверу git, добавьте свой локальный ПК ssh на сервер git.
Если у вас нет ключей SSH, вы можете проверить нашу статью о том, как настроить SSH-ключи на Ubuntu 16.04
Установка и настройка PHP
Теперь, когда ваша локальная машина разработки готова, прежде чем мы начнем развертывание, нам нужно настроить сервер, установив все необходимые службы.
Чтобы установить последнюю стабильную версию PHP версии 7 и все необходимые модули, запустите:
sudo apt update sudo apt install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-mcrypt php-pear php7.0-curl
Нам также необходимо установить композитор:
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer chmod +x /usr/local/bin/composer
Установите и настройте Nginx
Установите последнюю стабильную версию Nginx из официальных репозиториев Ubuntu:
sudo apt install nginx
Затем создайте новый серверный блок Nginx:
sudo nano /etc/nginx/sites-available/my-laravel-app.com
server { listen 80; server_name my-laravel-app.com; root /var/www/html/my-laravel-app.com/current/public; 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$ { include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Активируйте серверный блок, создав символическую ссылку:
sudo ln -s /etc/nginx/sites-available/my-laravel-app.com /etc/nginx/sites-enabled/my-laravel-app.com
Проверьте конфигурацию Nginx и перезапустите nginx:
sudo nginx -t sudo service nginx restart
Создание базы данных MySQL
Если у вас нет MySQL, вы можете посетить наш учебник о том, как установить MySQL на Ubuntu 16.04
Чтобы создать базу данных для приложения laravel, выполните следующие команды:
mysql -u root -p
CREATE DATABASE laravel; GRANT ALL PRIVILEGES ON laravel.* TO 'laraveluser'@'localhost' IDENTIFIED BY 'your-password'; FLUSH PRIVILEGES; \q
Создание пользователя Deployer
Основная цель этого пользователя – развернуть наше приложение Laravel, выполнив команды на нашем сервере.
Чтобы создать пользователя, выполните следующую команду:
sudo adduser deployer
Оба Nginx и PHP FPM работают как пользователь www-data. Файлы и каталоги, созданные пользователем deployer, должны быть доступны для записи пользователем www-user.
Выполните следующую команду, чтобы добавить пользователя развертывателя в группу www-data:
sudo usermod -aG www-data deployer
Измените корневую правку документа, запустив:
sudo chown deployer: www-data /var/www/html/my-laravel-app.com
и установите идентификатор группы пользователей
sudo chmod g + s /var/www/html/my-laravel-app.com
С помощью приведенной выше команды все новые файлы и подкаталоги, созданные в файле `/var/www/html/my-laravel-app.com`, наследуют идентификатор группы каталогов.
Добавьте свой публичный SSH-ключ местного пользователя в файл /home/deployer/.ssh/authorized_keys, чтобы вы могли войти в удаленный сервер с локального компьютера без пароля в качестве пользовательского развертывателя и выполнить команды развертывания.
Наконец, вам нужно добавить SSH-ключ пользователя развертывателя на ваш сервер git, как и у вашего локального пользователя.
Использование Deployer
Откройте локальный компьютерный терминал и перейдите в каталог проекта laravel.
cd ~/my-laravel-app
Выполните следующую команду, чтобы создать файл рецепта с именем deploy.php
.
dep init -t Laravel
Откройте файл и настройте и установите правильные учетные данные репозитория и настройте параметр хоста следующим образом:
host('your_remove_server_ip') ->user('deployer') ->set('deploy_path', '/var/www/html/my-laravel-app.com');
Внутри каталога проекта вы можете запустить команду `dep` для развертывания вашего приложения.
Дополнительные сведения о настройке и использовании Deployer см. на странице документации по адресу https://deployer.org/docs.