Поиск по сайту:

Как настроить Symfony 4 на сервере Debian 9


На этой странице

  1. Создание сервера DigitalOcean
    1. IP-адрес сервера
    2. Имя пользователя
    3. Пароль или ключ SSH

    Symfony — излюбленный выбор PHP-разработчиков для создания небольших и крупных приложений. С каждым новым выпуском Symfony превращается в лучший набор инструментов для разработчиков. Symfony позволяет ускорить процессы разработки приложений, чтобы разработчики могли создавать полномасштабные API, платформы электронной коммерции, приложения для финансовых технологий и бухгалтерского учета и т. д. С другой стороны, разработчики могли создавать простые веб-сайты с помощью механизма шаблонов Twig.

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

    Учитывая популярность Symfony 4, я решил сконфигурировать и установить эту версию на машине с Debian 9. В этой статье я покажу вам, как настроить полный стек Symfony для запуска приложений Symfony. Процесс включает шаги, касающиеся разрешений, веб-корней и веб-сервера.

    Создайте сервер DigitalOcean

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

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

    Теперь следующий шаг — запустить SSH-терминал. Если вы являетесь пользователем Linux или Mac, вы получаете его по умолчанию на своем компьютере. Если вы пользователь Windows, вам необходимо скачать PuTTY. Хорошей новостью является то, что Windows 10 поставляется с собственной оболочкой PowerShell, которую вы можете использовать для целей этой статьи.

    После запуска дроплета вам понадобятся следующие три элемента для входа в SSH-терминал:

    IP-адрес сервера Имя пользователя Пароль или SSH-ключ

    Поскольку я использую Windows, я буду использовать PuTTY для всех действий, связанных с SSH. Запишите вышеуказанные элементы из дроплета и войдите в терминал SSH. В PuTTY, когда вы вводите IP-адрес и нажимаете Enter, сервер спросит вас о кэшировании ключа. Простой удар Да.

    Затем введите учетные данные, и вы войдете в свою каплю DigitalOcean с корневым доступом.

    Стек Symfony LAMP

    Symfony опирается на типичный стек LAMP, состоящий из PHP, Apache/Nginx, MySQL и дистрибутива Linux. Вам нужно сначала установить все эти программные компоненты, а затем настроить Apache/Nginx в соответствии с требованиями Symfony. К счастью, все компоненты для создания стека Symfony имеют открытый исходный код, поэтому вам просто нужно запустить команды и установить их через SSH на свой сервер.

    Symfony также определила конфигурацию веб-сервера для Nginx и Apache в своей документации, поэтому я расскажу об основных настройках здесь, а остальное вы можете прочитать там.

    Обновите пакеты в Debian

    Первым действием в списке является обновление пакетов на машине с Debian.

    Начните с проверки версии Debian на сервере, выполнив следующую команду:

    cat /etc/debian_version

    Итак, у меня есть Debian 9.4 на моем сервере DigitalOcean.

    Затем выполните следующие команды для обновления пакетов через SSH:

    apt-get update
    apt-get upgrade
    apt-get dist-upgrade

    После того, как все было обновлено, я готов установить веб-сервер.

    Установите Apache2 для Symfony 4

    Перейдите к терминалу SSH и сначала установите Apache2 с помощью следующей команды:

    apt-get install apache2 -y

    После завершения команды получите доступ к IP-адресу вашего сервера, и вы увидите страницу приветствия Apache:

    Следующий. перейдите в структуру подкаталогов с помощью команды:

    cd /etc/apache2/sites-available/

    Сначала быстро включите опцию mod_rewrite с помощью этой команды:

    a2enmod rewrite

    Теперь откройте файл 000-default.conf и добавьте следующее, чтобы настроить веб-хост в Apache 2:

    <VirtualHost *:80>
       ServerName domain.tld
       ServerAlias www.domain.tld
     
       DocumentRoot /var/www/html/symfony4/public
       <Directory /var/www/html/symfony4/public>
           Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
           Allow from All
       </Directory>
     
       # uncomment the following lines if you install assets as symlinks
       # or run into problems when compiling LESS/Sass/CoffeeScript assets
       # <Directory /var/www/html>
       #  Options FollowSymlinks
       # </Directory>
     
       ErrorLog /var/log/apache2/project_error.log
       CustomLog /var/log/apache2/projec_access.log combined
    </VirtualHost>

    Теперь Apache2 настроен на запуск проекта из папки /var/www/html. Но вы также можете расширить конфигурацию несколькими дополнительными параметрами, которые лучше всего подходят для Symfony 4. Вот пример:

    <VirtualHost *:80>
       ServerName domain.tld
       ServerAlias www.domain.tld
     
       DocumentRoot /var/www/html/symfony4/public
       <Directory /var/www/html/symfony4/public>
           AllowOverride None
           Require all granted
           Allow from All
     
           <IfModule mod_rewrite.c>
               Options -MultiViews
               RewriteEngine On
               RewriteCond %{REQUEST_FILENAME} !-f
               RewriteRule ^(.*)$ index.php [QSA,L]
           </IfModule>
       </Directory>
     
       # uncomment the following lines if you install assets as symlinks
       # or run into problems when compiling LESS/Sass/CoffeeScript assets
       # <Directory /var/www/crvfakeexample.com>
       #  Options FollowSymlinks
       # </Directory>
     
       # optionally disable the RewriteEngine for the asset directories
       # which will allow apache to simply reply with a 404 when files are
       # not found instead of passing the request into the full symfony stack
       <Directory /var/www/crvfakeexample.com/public/bundles>
           <IfModule mod_rewrite.c>
               RewriteEngine Off
           </IfModule>
       </Directory>
       ErrorLog /var/log/apache2/crvfakeexample.com_error.log
       CustomLog /var/log/apache2/crvfakeexample.com_access.log combined
     
       # optionally set the value of the environment variables used in the application
       #SetEnv APP_ENV prod
       #SetEnv APP_SECRET <app-secret-id>
       #SetEnv DATABASE_URL "mysql://db_user::3306/db_name"
    </VirtualHost>

    Вы также можете использовать последние параметры Apache, такие как Требовать все предоставленные, и настроить переменные среды в указанных выше параметрах. Теперь перезагрузите сервер Apache с помощью следующей команды, чтобы новые настройки вступили в силу:

    service apache2 reload

    Установите Nginx для Symfony 4

    Если вы не хотите использовать Apache, Nginx — отличный вариант веб-сервера. Процесс во многом похож.

    Начните с установки Nginx с помощью следующей команды:

    apt-get update
    apt-get install nginx -y

    Теперь запустите cd /etc/nginx/conf.d и настройте файл как:

    server {
       server_name domain.tld www.domain.tld;
       root /var/www/html/symfony4/public;
     
       location / {
           # try to serve file directly, fallback to index.php
           try_files $uri /index.php$is_args$args;
       }
       location ~ ^/index\.php(/|$) {
           fastcgi_pass unix:/var/run/php7.1-fpm.sock;
           fastcgi_split_path_info ^(.+\.php)(/.*)$;
           include fastcgi_params;
     
           # optionally set the value of the environment variables used in the application
           # fastcgi_param APP_ENV prod;
           # fastcgi_param APP_SECRET <app-secret-id>;
           # fastcgi_param DATABASE_URL "mysql://db_user::3306/db_name";
     
           # When you are using symlinks to link the document root to the
           # current version of your application, you should pass the real
           # application path instead of the path to the symlink to PHP
           # FPM.
           # Otherwise, PHP's OPcache may not properly detect changes to
           # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
           # for more information).
           fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
           fastcgi_param DOCUMENT_ROOT $realpath_root;
           # Prevents URIs that include the front controller. This will 404:
           # http://domain.tld/index.php/some-path
           # Remove the internal directive to allow URIs like this
           internal;
       }
       # return 404 for all other php files not matching the front controller
       # this prevents access to other php files you don't want to be accessible.
       location ~ \.php$ {
           return 404;
       }
       error_log /var/log/nginx/project_error.log;
       access_log /var/log/nginx/project_access.log;
    }

    Теперь перезагрузите сервер, выполнив следующую команду:

    service nginx reload

    Установите PHP 7.2 для Symfony 4

    Важной зависимостью Symfony 4 является PHP 7.1.3 (или выше) на сервере. Чтобы установить требуемую версию, мне нужно обновить/установить несколько пакетов в Debian 9, чтобы установить PHP 7.2. Перейдите в терминал SSH (убедитесь, что вы находитесь в корневом каталоге) и выполните следующие команды:

    sudo apt install ca-certificates apt-transport-https
    wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
    sudo echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list

    Теперь на следующем шаге выполните следующие команды:

    sudo apt update
    sudo apt install php7.2

    После успешной установки проверьте версию PHP:

    php -v

    Мне также нужно установить еще несколько библиотек, чтобы убедиться, что PHP 7.2 правильно работает на сервере. Выполните следующую команду, чтобы установить необходимые библиотеки:

    sudo apt install php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml libapache2-mod-php7.2

    Библиотеки будут установлены, а PHP 7.2 правильно настроен для Symfony 4.

    Установите MySQL для настройки баз данных

    Давайте быстро установим базу данных MySQL.

    Начните с выполнения следующей команды:

    apt-get install mysql-server

    Процесс будет приостановлен, чтобы спросить вашего разрешения. Введите (y) и нажмите Enter. В следующем окне установите пароль для пользователя root MySQL.

    Процесс завершается за считанные минуты.

    Далее я настрою MySQL в соответствии с требованиями стека LAMP. Для этого введите следующую команду:

    mysql_secure_installation

    На этом установка сервера завершена в соответствии с требованиями Symfony 4. Теперь я сосредоточусь на установке самого фреймворка.

    Установите Composer на Debian 9

    Глобальная установка Composer — хорошая идея, потому что таким образом каждый пользователь может легко его использовать. Итак, я установлю его в каталог /user/local/bin.

    Давайте сначала скопируем установщик в каталог /tmp:

    php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"

    Затем выполните следующую команду, чтобы выполнить файл Composer и установить его глобально:

    sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

    Теперь, когда Composer установлен, я приступлю к фактической установке Symfony 4.

    Наконец, установите Symfony 4 на сервер Debian 9.

    На данный момент я настроил сервер Apache для веб-корня, указав URL-адрес: /var/www/html/symfony4/public.

    Перейдите в папку html и выполните следующую команду Composer, чтобы установить Symfony 4:

    composer create-project symfony/skeleton symfony4

    Фреймворк будет установлен за несколько секунд. Поскольку Symfony 4 очень оптимизирован с небольшой кодовой базой и зависимостями, он не будет запрашивать никаких учетных данных во время установки. После этого вам нужно настроить базу данных.

    Как только процесс завершится, получите доступ к IP-адресу вашего сервера, и вы увидите страницу приветствия:

    Далее я добавлю учетные данные базы данных в .env файл Symfony.

    ###> doctrine/doctrine-bundle ###
    APP_ENV=dev
    APP_DEBUG=1
    APP_SECRET=bd4d4fxxxx035a97fxxxed13f18646f
     
    # customize this line!
    DATABASE_URL="mysql://db_user::3306/db_name"
    ###< doctrine/doctrine-bundle ###

    Заключительные слова

    Symfony 4 получила широкое признание и высокую оценку PHP-разработчиков и уже была загружена миллионами. Вы также можете использовать стандартные версии Symfony 3.x (вам просто нужно обновить команду, чтобы установить конкретную версию):

    Для Symfony 3.0:

    composer create-project symfony/framework-standard-edition your_project_name "3.0.*"

    Для Symfony 3.1:

    composer create-project symfony/framework-standard-edition your_project_name "3.1.*"

    Если вам нужна помощь в установке и настройке Symfony 4 на компьютере с Debian 9, дайте мне знать в комментариях.