Как установить Nginx, MySQL, PHP (FEMP) на FreeBSD 12

Вступление

Стек FEMP (FreeBSD, Nginx, MySQL, PHP) представляет собой комбинацию программного обеспечения FOSS, которое можно использовать вместе для размещения динамических веб-сайтов и систем управления контентом, таких как Wordpress или Joomla.

Это руководство поможет с установкой и настройкой стека FEMP на FreeBSD 12.

Предполагается, что вы работаете как root пользователь во время этого руководства. Используйте su для изменения на, root если вы уже не работаете root.

Шаг 1 - Обновление FreeBSD

По умолчанию FreeBSD не поставляется с pkg менеджером пакетов, но поставляется с инструментом для его начальной загрузки. Если FreeBSD попросит установить его, ответьте «Да».

Лучше всего обновить систему заранее, чтобы убедиться, что вы получаете самые последние пакеты при установке стека FEMP. Вы можете сделать это, выполнив следующую команду:

pkg update ; pkg upgrade

Это обновит репозитории pkg, а затем обновит все установленные вами пакеты.

Шаг 2 - Установка Nginx

Чтобы установить Nginx, веб-сервер, который мы используем для этого урока, используйте следующую команду:

pkg install nginx

Прежде чем мы сможем запустить nginx для проверки его работоспособности, нам нужно включить его при загрузке.

Вы можете сделать это, добавив nginx_enable="YES"в конец /etc/rc.conf.

echo 'nginx_enable="YES"' >> /etc/rc.conf
service nginx start

Проверьте, работает ли он, перейдя на свой IP-адрес в веб-браузере. Вы можете проверить IP-адрес своего сервера, запустив fetch -qo- http://ifconfig.co или проверив панель управления.

http://10.0.0.1/

Вы должны увидеть что-то вроде этого:

Добро пожаловать в Nginx!

Шаг 3 - Установка PHP

Далее нам нужно установить и настроить PHP, который мы будем использовать для обработки запросов PHP от nginx.

pkg install php73 php73-mysqli

Как и раньше, нам нужно включить его при загрузке, прежде чем мы сможем запустить службу.

echo 'php_fpm_enable="YES"' >> /etc/rc.conf

Однако, прежде чем мы сможем его запустить, нам нужно внести несколько изменений в файл конфигурации /usr/local/etc/php-fpm.d/www.conf

cd /usr/local/etc/
vi php-fpm/www.conf

Ищите строку:

listen = 127.0.0.1:9000

Замените его следующим, чтобы PHP прослушивал сокеты unix:

listen = /var/run/php-fpm.sock

Далее в файле ищите эти строки:

;listen.owner = www
;listen.group = www
;listen.mode = 0660

Раскомментируйте их, чтобы это выглядело так, чтобы изменить владельца сокета unix таким же, как у пользователя nginx:

listen.owner = www
listen.group = www
listen.mode = 0660

После этого сохраните и закройте файл.

php.ini Файл должен быть создан. Файл примера php.ini-production может быть использован с небольшим изменением для безопасности:

Предполагая, что вы все еще в /usr/local/etc/
cp php.ini-production php.ini
sed -i -E 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' php.ini

Затем, наконец, запустите службу PHP.

service php-fpm start

Шаг 3.1 - Настройка Nginx для использования PHP

Nginx и PHP теперь включены, однако нам необходимо настроить Nginx, чтобы он знал о PHP и использовал его для обработки.php страниц.

Откройте файл /usr/local/etc/nginx/nginx.conf в текстовом редакторе:

vi /usr/local/etc/nginx/nginx.conf

Найдите в файле следующее (закомментированные части удалены):

server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/local/www/nginx;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }

    }

В nginx.conf файл необходимо внести следующие изменения:

  • Заменить localhost под server_name с доменом вашего сервера или IP - адрес.
  • Удалить location / блок.
  • Добавить index.php под index.
  • Отредактировать корневой каталог nginx в /var/www/html/.
  • Настроитье nginx для обработки PHP.
Ваш nginx.conf файл должен выглядеть примерно так:

server {
        listen       80;
        server_name  example.com;

        root   /var/www/html;
        index  index.php index.html index.htm;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }

        location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        try_files $uri $document_root$fastcgi_script_name =404;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }

    }

Затем, наконец, создайте корневой каталог nginx, символическую ссылку на index.html страницу nginx по умолчанию и перезапустите nginx.

mkdir -p /var/www/html/
ln -s /usr/local/www/nginx-dist/index.html /var/www/html/
service nginx restart

Если nginx не перезапускается, запустите, nginx -t чтобы проверить все ошибки конфигурации в вашем конфигурационном файле и устранить их, затем попробуйте перезапустить nginx еще раз.

Переход на домен или IP-адрес вашего сервера по-прежнему должен вернуть Welcome to nginx!страницу с ранее.

Чтобы проверить, работает ли PHP, создайте файл /var/www/html/phpinfo.php со следующим содержимым:

<?php phpinfo(); ?>

Затем перейдите на тестовую страницу, созданную на IP-адресе / домене вашего сервера.

http://example.com/phpinfo.php
Он должен вернуть страницу, как это:

Информация о PHP

Лучше всего удалить файл впоследствии для безопасности, так как он может предоставить информацию о вашей установке PHP любому.

rm /var/www/html/phpinfo.php

Шаг 4 - Установка MySQL (MariaDB)

Теперь, когда у нас есть Nginx и PHP, которые работают и работают вместе, нам осталось только установить и настроить MySQL.

Однако мы будем использовать замену MySQL, поддерживаемую сообществом, MariaDB; который полностью совместим с приложениями, ориентированными на MySQL.

pkg install mariadb103-server mariadb103-client

Как и ранее, нам нужно разрешить запуск сервиса при загрузке, прежде чем мы сможем запустить его с помощью сервиса.

echo 'mysql_enable="YES"' >> /etc/rc.conf
service mysql-server start

Далее нам нужно обезопасить установку MariaDB.

mysql_secure_installation

Enter current password for root (enter for none):
Поскольку мы настраиваем MariaDB в первый раз, у учетной записи root нет пароля, поэтому просто нажмите здесь клавишу «ENTER».

Set root password? [Y/n]

Нажмите здесь клавишу «ENTER», чтобы ответить «да», а затем введите безопасный пароль для вашего пользователя root MariaDB.

Remove anonymous users? [Y/n] 
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

Последние несколько вопросов вы можете просто использовать по умолчанию, нажав клавишу «ENTER», так как они являются нормальными значениями по умолчанию, которые использует установщик.

MariaDB уже использует сделанные нами изменения, поэтому нет необходимости перезапускать их.

Заключение

Теперь у вас должен быть полностью работающий стек FEMP на вашем сервере FreeBSD, использующий Nginx для размещения веб-страниц, PHP для обработки динамических веб-страниц и использующий MySQL (MariaDB) для хранения данных. Вместе они являются основой для множества различных веб-приложений, некоторые примеры включают в себя: Wordpress, Gitea, Joomla и многие другие.

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своем руководстве.

Комментариев 0