Как развернуть приложение Laravel с помощью Debian 11 Vagrant Box

Как развернуть приложение 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

Вот и все для этого урока.

Как обычно, дайте мне знать, если у вас есть какие-либо вопросы или проблемы в комментариях.

Спасибо за прочтение!


Основной источник изображения


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE