Как развернуть приложение Laravel с помощью Debian 11 Vagrant Box
25 октября 2022 г.Эта статья послужит руководством по развертыванию примера приложения laravel с использованием vagrant box Debian 11. Vagrant Box можно использовать в качестве испытательного полигона перед развертыванием приложения в облаке с помощью поставщика облачных услуг, такого как AWS, чтобы ваши потребители могли получить доступ к созданному вами приложению.
Для начала вам нужно будет установить vagrant на свой локальный компьютер. Если вы новичок в vagrant, вы можете ознакомиться с этой статьей< /a> о том, как его настроить.
После того, как вы запустили свою машину, пришло время установить важные пакеты и зависимости, необходимые для запуска приложения в вашем vagrant box. Следует отметить, что бродяга выступает в роли нашего сервера.
Вы можете найти некоторые очень важные требования к серверу для развертывания приложения laravel здесь. Также в нашем vagrant box потребуются следующие пакеты;
* апач2 => Программное обеспечение веб-сервера для доступа к нашему развернутому приложению из браузера. * git => Инструмент для совместной работы, необходимый для переноса кода приложения из онлайн-репозитория на наш локальный компьютер. * композитор => Инструмент для управления зависимостями в PHP.
Всегда рекомендуется создавать пользователя для определенной задачи в Linux. Итак, мы начинаем с создания пользователя для этого развертывания. Чтобы создать пользователя и его пароль и переключиться на этого пользователя, выполните приведенную ниже команду.
sudo useradd -m -s /bin/bash -c "Laravel User" laravelUser # User Creation
sudo passwd laravelUser # User password creation
sudo usermod -aG sudo laravelUser # Add user to the sudo group
su laravelUser. # Switching to the created user
Следующим шагом является установка apache на наш локальный компьютер, но перед этим вам необходимо обновить и обновить репозиторий apt на нашем бродячем компьютере (дистрибутив Debian 11 Linux). Чтобы обновить и обновить, выполните эту команду.
sudo apt update && sudo apt upgrade
Чтобы установить apache на ваш vagrant box и убедиться, что его служба всегда запускается сразу после загрузки, выполните следующие команды.
sudo apt install apache2 # Installation of Apache
sudo systemctl enable apache2 # Enabling apache server after boot
На этом этапе, если мы свернем наш IP-адрес из бродячего окна, мы сможем увидеть официальную веб-страницу apache. Чтобы увидеть эту веб-страницу в командной строке, выполните этот набор команд.
ip a # Command to show your ip address
curl http://<ip_address> # check for apache server running
Итак, наш веб-сервер запущен и работает. Наша следующая задача — установить PHP 8.1 и его зависимости в наш бродячий ящик. PHP и его зависимости необходимы для запуска приложения laravel. Поскольку PHP 8.1 отсутствует в репозитории Debian 11 по умолчанию, нам придется добавить репозиторий deb.sury.org, который содержит PHP 8.1 и его зависимости от репозитория vagrant box apt.
sudo apt-get install ca-certificates apt-transport-https software-properties-common -y # Packages needed to add the deb.sury repo to our apt repo
Теперь запустите эту команду, чтобы добавить репозиторий deb.sury в наш репозиторий vagrant apt.
sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
Чтобы убедиться, что добавленный репозиторий защищен и работает правильно, ключ GPG (GNU Privacy Guard) загружается и используется для перекрестной проверки с сертификатом репозитория.
Чтобы сделать это, запустите эту команду:
sudo wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
Затем мы обновляем и обновляем наш репозиторий apt и устанавливаем PHP 8.1 и его зависимости.
sudo apt update && sudo apt upgrade -y # repo update and upgrade
sudo apt install php8.1 # install php8.1
Установив PHP 8.1, мы устанавливаем зависимости PHP, необходимые для нашего приложения.
sudo apt install php8.1-mysql libapache2-mod-php php8.1-imap php8.1-ldap php8.1-xml php8.1-fpm php8.1-curl php8.1-mbstring php8.1-zip # php dependencies
Чтобы управлять этими зависимостями, необходимыми приложению laravel, laravel использует composer для этого управления. Итак, мы устанавливаем композитор на нашу бродячую машину.
sudo curl -sS https://getcomposer.org/installer | php
Переместите загруженный файл в папку usr/local/bin
в другом месте, чтобы использовать команду composer глобально.
sudo mv composer.phar /usr/local/bin/composer
Наш код laravel находится в этом GitHub репозитории, который нам нужно клонировать в наш /var/www /html
папка. Чтобы клонировать проект из репозитория GitHub, на вашей бродячей машине должен быть установлен git.
sudo apt install git -y # install git
cd /var/www/html # change directory
sudo git clone https://github.com/f1amy/laravel-realworld-example-app.git # get app code
cd laravel-realworld-example-app
С кодом приложения в нашем бродячем поле приложение laravel запускается с помощью этой команды
sudo composer create-project
Затем мы должны установить права собственности и разрешения для папки нашего приложения laravel.
sudo chown -R www-data:www-data /var/www/html/laravel-realworld-example-app/
sudo chmod -R 775 /var/www/html/laravel-realworld-example-app/
Поскольку наш веб-сервер apache уже работает в фоновом режиме, нам нужно создать файл конфигурации виртуального хоста apache, чтобы связать каталог нашего приложения laravel с нашим веб-сервером, чтобы мы начали видеть содержимое нашего приложения, а не официальная страница apache. р>
sudo vi /etc/apache2/sites-available/laravel.conf
Затем добавьте эти строки конфигурации в созданный файл laravel.conf
.
<VirtualHost *:80 *:3000>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/laravel-realworld-example-app/public/
<Directory /var/www/html/laravel-realworld-example-app/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Чтобы конфигурация в файле laravel.conf
вступила в силу, нам нужно будет запустить следующую команду, чтобы сервер apache распознал ее как требуемую конфигурацию, а не конфигурацию по умолчанию, найденную в < code>000-default.conf.
sudo a2enmod rewrite
sudo a2ensite laravel.conf
На этом этапе мы можем просто перезагрузить наш сервер Apache, и наше приложение будет развернуто. Чтобы перезагрузить наш сервер Apache, выполните эту команду.
sudo systemctl reload apache2
Наша база данных в настоящее время не синхронизирована с приложением laravel. Для этого проекта мы будем использовать базу данных MySQL с нашим приложением. Чтобы начать синхронизацию, мы установим пакет MySQL в наше приложение laravel. Запустите команды в домашнем каталоге созданного пользователя.
sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb # download mysql repo
sudo apt install ./mysql-apt-config_0.8.22-1_all.deb # install packages needed for the mysql server
sudo apt update # updating our apt repository
sudo apt install mysql-server # installation of the mysql server
Как только мы установим сервер MySQL, вам будет предложено создать пароль root. Этот пароль потребуется для входа в командную строку MySQL или для создания таблицы базы данных.
Чтобы создать таблицу базы данных и пользователя, необходимого для нашего приложения;
sudo mysql -u root -p # use created root password
## This commands are run the the mysql commandline ##
create database laravel; # database creation
create user 'laravel'@'<ip_address>' identified by 'password'; # user creation
grant all privileges on laravel.* TO laravel@<ip_address>; # granting privilege to created user
flush privileges;
quit;
Теперь у нас настроена наша база данных, давайте свяжем ее с нашим приложением. Эта ссылка будет сделана в файле .env
, расположенном в каталоге нашего приложения laravel.
cd /var/www/html/laravel-realworld-example-app # change directory into app directory if not already in the directory
sudo mv .env.example .env
sudo php artisan key:generate
sudo vi .env
Затем добавьте эти строки конфигурации в созданный файл .env
APP_URL=http://"your server IP"
DB_PORT= "3306"
DB_USERNAME= laravel
DB_HOST="your server IP"
DB_DATABASE= "name of the database you created"
DB_PASSWORD= "the mysql password of the laravel user you created in the mysql command line"
Как только это будет сделано, перенесите данные из своей базы данных, чтобы сделать их доступными в вашем приложении.
sudo php artisan migrate --seed
Наконец, перезагрузите свой apace еще раз, и все готово.
sudo systemctl reload apache2
Вот и все для этого урока.
Как обычно, дайте мне знать, если у вас есть какие-либо вопросы или проблемы в комментариях.
Спасибо за прочтение!
Оригинал