Установка php-fpm на CentOS 7
Устанавливаем php-fpm и некоторые модули, которые скорее всего пригодятся в дальнейшей работе:
# yum install -y php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap
Так же я предлагаю установить APC — бесплатный и открытый кэшер кода PHP, который кэширует и оптимизирует промежуточный код PHP, ускоряя его исполнение. Установим APC из хранилища PHPpecl. Для того, чтобы скомпилировать пакет APC нужно установить Centos Development tools.
# yum install -y php-devel # yum groupinstall 'Development Tools'
Компилируем APC:
# pecl install apc
На все вопросы просто жмем enter, выбирая параметры по-умолчанию.
Теперь отредактируем /etc/php.ini как нам рекомендует инсталлятор:
# mcedit /etc/php.ini
Задаем параметр cgi.fix_pathinfo=0 и добавляем в конце строку extension=apc.so
Заодно установим сразу же часовой пояс: date.timezone = «Europe/Moscow»
Создадим файл настроек APC:
# mcedit /etc/php.d/apc.ini extension = apc.so apc.enabled = 1 apc.cache_by_default = 1 apc.ttl = 7200 apc.shm_size = 64M apc.max_file_size = 4M apc.stat = 1
Добавляем php-fpm в автозагрузку:
# systemctl enable php-fpm.service ln -s '/usr/lib/systemd/system/php-fpm.service' '/etc/systemd/system/multi-user.target.wants/php-fpm.service'
И запускаем:
# systemctl start php-fpm.service
Проверяем:
# netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2907/php-fpm: maste
Установка и настройка FTP-сервера
В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей.
ProFTPd можно устанавливать командой:
dnf install proftpd
Загружаем скрипт ftpasswd:
wget http://www.castaglia.org/proftpd/contrib/ftpasswd -P /etc/proftpd
Разрешаем запуск на выполнение скрипта:
chmod +x /etc/proftpd/ftpasswd
Создаем виртуального пользователя:
/etc/proftpd/ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpwww —uid=48 —gid=48 —home=/var/www —shell=/sbin/nologin
* где
- /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи;
- ftpwww — имя пользователя (логин);
- uid и gid — идентификаторы пользователя и группы системной учетной записи (apache);
- /var/www — домашний каталог пользователя;
- /sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Изменим права для созданного файла с паролями:
chmod 440 /etc/proftpd/ftpd.passwd
* в противном случае, при запуске proftpd мы получим ошибку «…fatal: AuthUserFile: unable to use /etc/proftpd.d/ftpd.passwd: Operation not permitted…»
Открываем на редактирование конфигурационный файл proftpd:
vi /etc/proftpd.conf
И редактируем следующее (комментируем):
#AuthOrder …
Создадим конфигурационный файл со своими настройками:
vi /etc/proftpd/conf.d/custom.conf
И добавим следующее:
UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
* где 60000 — 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd —now
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS.
Установка phpMyAdmin
Установка может быть выполнена из репозитория (для CentOS 7) или путем загрузки портала с сайта разработчика (CentOS 8 или CentOS 7). Рассмотрим оба варианта.
а) Установка из репозитория
Данный вариант доступен только для CentOS 7.
Устанавливаем расширенный репозиторий EPEL:
yum install epel-release
Устанавливаем phpMyAdmin:
yum install phpmyadmin
* если мы увидим ошибку «пакета с названием phpmyadmin не найдено», проверяем еще раз наличие установленного репозитория epel.
б) Установка вручную
Данный способ универсальный — он подходит для CentOS 8 и CentOS 7.
Устанавливаем пакеты, необходимые для скачивания и распаковки архива:
yum install wget unzip
Переходим на сайт разработчика phpMyAdmin и копируем ссылку на нужную нам версию, например, последнюю:
Воспользовавшись скопированной ссылкой, скачиваем архив с установочными файлами:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip
* на момент написания инструкции, последняя стабильная версия была 4.9.1.
Распаковываем скачанный архив:
unzip phpMyAdmin-*-all-languages.zip
Создаем каталог для phpmyadmin, например:
mkdir /usr/share/phpMyAdmin
… и переносим в него содержимое распакованного архива:
mv phpMyAdmin-*-all-languages/* /usr/share/phpMyAdmin/
Задаем владельца для каталога:
chown -R apache:apache /usr/share/phpMyAdmin
* как правило, сервис, которых обрабатываем php-запросы работает от пользователя apache.
Установка Memcached
Первым этапом мы установим и настроим сервис memcached. Вторым — модуль php-memcached.
Сервис memcached
Выполняем установку пакетов:
dnf install memcached libmemcached
Создаем или открываем на редактирование конфигурационный файл для запуска сервиса:
vi /etc/sysconfig/memcached
Приводим его к виду:
PORT=»11211″
USER=»memcached»
MAXCONN=»1024″
CACHESIZE=»512″
OPTIONS=»-l 127.0.0.1 -U 0″
* где PORT указываем на каком порту будет слушать сервис кэширования; USER — пользователь, под которым должен запускаться сервис; MAXCONN — максимальное число одновременных подключений; CACHESIZE — размер под кэш в мегабайтах; OPTIONS — параметры запуска (в данном примере наш сервис будет принимать запросы только с адреса локальной петли).
После разрешаем автозапуск и запускаем сервис кэширования:
systemctl enable memcached —now
Модуль для php
Переходим на страницу загрузки memcached сайта pecl.php.net и копируем ссылку на стабильную версию memcached:
Обратите внимание, что у каждой версии пакета есть свои требования к версии PHP. Внимательно изучаем, подойдет ли версия php-memcached для нашего сервера
Скачиваем архив, ссылку на который мы скопировали:
wget http://pecl.php.net/get/memcached-3.1.5.tgz
Устанавливаем пакеты, необходимые для сборки php-pecl-memcached:
dnf install php-devel zlib-devel make
dnf —enablerepo=PowerTools install libmemcached-devel
Распаковываем скачанный архив:
tar -xvzf memcached-*.tgz
Переходим в распакованный каталог:
cd memcached-*/
Запускаем компиляцию php-расширения:
phpize
Конфигурируем исходник:
./configure
Собираем расширение:
make
Копируем созданный модуль в каталог php-модулей:
cp modules/memcached.so /usr/lib64/php/modules/
Создаем конфигурационной файл для подключения расширения:
vi /etc/php.d/20-memcached.ini
extension=memcached.so
После установки модуля перезапускаем php-fpm:
systemctl restart php-fpm
… или вводим команду:
php -m | grep memcached
Мы должны получить:
memcached
Шаг 1 — Установка MySQL
В CentOS 8 версия MySQL 8 доступна в репозиториях по умолчанию.
Запустите следующую команду для установки пакета и ряда его зависимостей:
При появлении запроса нажмите , а затем , чтобы подтвердить, что вы хотите продолжить:
После этого MySQL будет установлена на ваш сервер, но использовать ее пока нельзя. Пакет, который вы только что установили, настраивает запуск MySQL в качестве службы с именем . Чтобы использовать MySQL, вам потребуется запустить ее с помощью команды :
Чтобы проверить, что служба работает корректно, запустите следующую команду
Обратите внимание, что для многих команд , включая и, как показано здесь, , вы не должны использовать после имени службы:. Если MySQL была запущена успешно, вывод покажет, что служба MySQL активна:
Если MySQL была запущена успешно, вывод покажет, что служба MySQL активна:
Затем настройте запуск MySQL при загрузке сервера с помощью следующей команды:
Примечание. Если вы когда-нибудь захотите изменить это поведение и отключить запуск MySQL при загрузке, вы можете сделать это, запустив следующую команду:
Теперь MySQL установлена на вашем сервере, запущена и активирована. Ниже мы рассмотрим то, как можно повысить безопасность вашей базы данных, используя скрипт оболочки, который устанавливается вместе с вашим экземпляром MySQL.
Включить хранилище Remi
Если вы собираетесь установить стабильный дистрибутив PHP версии 7.2, пропустите этот шаг. В противном случае, если вы хотите установить PHP 7.3 или 7.4, включите репозиторий Remi, выполнив следующую команду от имени пользователя root или пользователя с привилегиями sudo:
Приведенная выше команда также активирует репозиторий EPEL.
После завершения установки выполните команду ниже, чтобы получить список всех доступных версий PHP:
Вывод покажет список всех доступных модулей, включая связанный поток, версию и профили установки.
Модуль PHP по умолчанию установлен на PHP 7.2. Чтобы установить более новую версию PHP, включите соответствующую версию:
PHP 7.3
PHP 7.4
Теперь вы готовы установить PHP на свой сервер CentOS.
Apache (httpd)
Несмотря на то, что мы установили и настроили PHP-FPM, Apache нам понадобится, как минимум, по двум причинам. Во-первых, многие сайты используют файл .htaccess, который читает только Apache. Во-вторых, последний включает большое число модулей, которые может использовать портал.
В некоторых случаях, можно обойтись без Apache, но в данной инструкции мы опишем процедуру его установки и настройки.
И так, устанавливаем httpd:
yum install httpd
Заходим в настройки:
vi /etc/httpd/conf/httpd.conf
И редактируем следующее:
Listen 8080
* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html
Добавляем:
<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
* где Directory — разрешенные каталоги для запуска из apache; Options — разрешенные опции; Require — с каких IP-адресов можно открывать сайты, определенные в данном каталоге. Итого, мы разрешаем все каталоги в /var/www, но только если следующий каталог будет www; разрешаем опции Indexes (возвращает список файлов, если нет индексного файла, например, index.php), ExecCGI (разрешены сценарии CGI), FollowSymLinks (включены символические ссылки в этом каталоге); доступ для данных каталого разрешен со всех адресов (all granted).
Проверяем синтаксис конфигурационного файла httpd:
apachectl configtest
Разрешаем автозапуск и запускаем службу:
systemctl enable httpd —now
Создаем php-файл со следующим содержимым:
vi /var/www/html/index.php
<?php phpinfo(); ?>
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера и добавляем :8080. Мы должны увидеть привычную страницу:
NGINX + Apache
Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.
Открываем конфигурационный файл nginx:
vi /etc/nginx/conf.d/default.conf
* если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.
Находим наш настроенный location для php-fpm:
…
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
…
и меняем на:
…
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
…
Проверяем и перезапускаем nginx:
nginx -t
systemctl restart nginx
Пробуем открыть в браузере IP-адрес нашего сервера — должна открыться та же страница, что при проверке Apache (с добавлением 8080):
Apache Real IP
Так как все запросы на httpd приходят от NGINX, они воспринимаются как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей.
Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:
yum install httpd-devel gcc unzip
Переходим в каталог /usr/local/src:
cd /usr/local/src
Скачиваем модуль:
wget https://github.com/gnif/mod_rpaf/archive/stable.zip
Распаковываем его:
unzip stable.zip
Переходим в распакованный каталог:
cd mod_rpaf-stable/
Собираем модуль и устанавливаем его:
make
make install
* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой yum install which.
Создаем конфигурационный файл со следующим содержимым:
vi /etc/httpd/conf.d/mod_rpaf.conf
LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off
Перезапускаем httpd:
systemctl restart httpd
Для проверки настройки открываем на редактирование созданный index-файл для httpd:
vi /var/www/html/index.php
И редактируем содержимое на:
<?php echo $_SERVER ?>
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера. Мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу.
Тюнинг веб-сервера
PHP
Открываем на редактирование следующий файл:
vi /etc/php.ini
И правим следующее:
upload_max_filesize = 512M
…
post_max_size = 512M
…
short_open_tag = On
…
date.timezone = «Europe/Moscow»
Перезапускаем php-fpm и httpd:
systemctl restart php-fpm
systemctl restart httpd
NGINX
Открываем на редактирование следующий файл:
vi /etc/nginx/nginx.conf
И внутри секции http добавляем:
client_max_body_size 512M;
После перезапускаем nginx:
systemctl restart nginx
Подробнее про тюнинг NGINX в статье Практические советы по тюнингу веб-сервера NGINX.
Postfix
Чтобы отправляемая почта меньше попадала в СПАМ, необходимо выполнить следующие шаги:
- Прописать PTR-запись.
- Создать запись SPF.
- Настроить DKIM.
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:
* в моем случае это ссылка на https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb. Чтобы понять, какое кодовое название нашей системы, вводим команду cat /etc/lsb-release | grep DISTRIB_CODENAME.
Скачиваем файл репозитория командой:
wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1%2Bbionic_all.deb
Устанавливаем его:
dpkg -i zabbix-release_4.2-1+bionic_all.deb
Обновляем списки пакетов:
apt-get update
Устанавливаем сервер, вводя команду:
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-get
Настройка базы данных
Входим в оболочку ввода sql-команд:
mysql -uroot -p
Создаем базу данных:
> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
* мы создали базу zabbix.
Создаем пользователя для подключения и работы с созданной базой:
> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY ‘zabbixpassword’;
* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.
Выходим из sql-оболочки:
> \q
В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.
Для применения схемы переходим в каталог:
cd /usr/share/doc/zabbix-server-mysql/
Распаковываем архив с дампом базы:
gunzip create.sql.gz
Восстанавливаем базу их дампа:
mysql -v -u root -p zabbix < create.sql
* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.
Настройка zabbix
Открываем конфигурационный файл zabbix:
vi /etc/zabbix/zabbix_server.conf
Добавляем строку:
DBPassword=zabbixpassword
* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.
И проверяем следующие строки:
…
DBName=zabbix
…
DBUser=zabbix
…
* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).
Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):
mkdir /etc/zabbix/zabbix_server.conf.d
Также создаем каталог для логов и задаем владельца:
mkdir /var/log/zabbix-server
chown zabbix:zabbix /var/log/zabbix-server
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга:
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/default
Редактируем параметры root и set $root_path:
…
root /usr/share/zabbix;
…
set $root_path /usr/share/zabbix;
…
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:
В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix. После нажимаем Next Step:
* в нашем случае, пароль был zabbixpassword;
В следующем окне оставляем все как есть:
… и нажимаем Next Step.
В последнем окне мы проверяем настройки и кликаем Next Step.
Установка завершена — нажимаем Finish:
В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:
Установка на nginx
Настроим работу phpmyadmin на веб сервере nginx + php-fpm. Подробно вопрос настройки такого сервера я рассматривал ранее в статье установка и настройка веб сервера nginx + php-fpm на CentOS 7. Там речь шла именно о веб сервере и уклон был в эту сторону. Но phpmyadmin может понадобиться не только на веб серверах. Так что рассмотрим общий случай быстрой и простой настройки phpmyadmin на nginx.
Устанавливаем nginx:
# yum install -y nginx
Устанавливаем php-fpm:
# yum install -y php-fpm
Запускаем службы и добавляем в автозагрузку:
# systemctl start nginx.service # systemctl enable nginx.service # systemctl start php-fpm.service # systemctl enable php-fpm.service
Заходим по адресу http://ip-адрес-сервера и проверяем. Вы должны увидеть тестовую страницу nginx:
Дальше устанавливаем phpmyadmin на web сервер с nginx:
# yum install -y phpmyadmin
Редактируем конфигурационный файл nginx для добавления установленной веб панели управления:
# mcedit /etc/nginx/nginx.conf
Приводим секцию server {} к следующему виду:
server { listen 80 default_server; listen :80 default_server; server_name _; root /usr/share/nginx/html; index index.php index.html index.htm; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_ignore_client_abort off; } include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
Я взял стандартные параметры и добавил несколько новых строк для корректной работы. Теперь нам нужно сделать символьную ссылку (сим линк) из папки со скриптами phpmyadmin в корневой каталог веб сервера nginx:
# ln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpmyadmin
Перезапускаем nginx:
# systemctl restart nginx
Дальше по идее все должно работать, но у меня не работало, пришлось перезагрузить весь сервер, так как не работал модуль php mbstring, хотя он установлен и подключен. Перезапуск php-fpm тоже не помогал, а перезагрузка помогла. Проверил 2 раза, оба раза воспроизвел ошибку. Разбираться не стал в чем причина такого поведения, просто перезагрузите сервер и продолжайте.
Идем по адресу http://ip-адрес-сервера/phpmyadmin. Должны увидеть стандартную страницу входа. У меня на ней было предупреждение:
Warning in ./libraries/session.inc.php#105 session_start(): open(/var/lib/php/session/sess_j0r4moac0oo7oh250e6t14rn1kfkl6ta, O_RDWR) failed: No such file or directory (2)
Это сязано с тем, что в папке /var/lib/php нет директории session. Исправляем это:
# cd /var/lib/php/ # mkdir session # chown apache:apache session/
Обращаю внимание на то, что я назначил владельцем папки с сессиями пользователя apache, хотя у нас веб сервер nginx. Это связано с тем, что php-fpm по-умолчанию работает под пользователем apache
Логичнее изменить это и запускать его от nginx. Для этого надо отредактировать файл /etc/php-fpm.d/www.conf, изменив там параметры user и group. Я не стал этого делать сейчас для простоты. Оставляю данный параметр на ваше усмотрение.
Перезагружаем страницу, ошибка должна исчезнуть. Можно подключиться к mysql. Если сервер бд у вас не установлен, смотрите выше, как быстро его поставить и запустить. На этом установка закончена, рассматрим несколько полезных настроек phpmyadmin.
Установка MariaDB или MySQL
В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.
Устанавливаем MariaDB следующей командой:
dnf install mariadb mariadb-server
* для установки mysql выполняем команду dnf install mysql
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb —now
* для работы с mysql меняем mariadb на mysql.
Сразу создаем пароль для учетной записи root:
mysqladmin -u root password
PHP + MariaDB (MySQL)
Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:
dnf install php-mysqli
Если мы установили php5, также ставим php-mysql:
dnf install php-mysql
После перезагружаем php-fpm:
systemctl restart php-fpm
* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.
Установка NGINX
Устанавливаем NGINX:
dnf install nginx
Внесем небольшую корректировку в файл nginx.conf:
vi /etc/nginx/nginx.conf
В секцию http добавим строку:
http {
…
server_names_hash_bucket_size 64;
….
}
* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Разрешаем автозапуск сервиса и запустим его:
systemctl enable nginx
systemctl start nginx
Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:
* обратите внимание, что данное приветствие может иметь и другой вид
Настройка backup
С резервным копированием в vestacp все достаточно просто. Есть соответствующий раздел, в котором можно выполнить бэкап.
После нажатия на плюс, задание на backup ставится в очередь. Очередь обрабатывается отдельным заданием в кроне раз в 5 минут. После завершения резервного копирования приходит оповещение на почту. После этого бэкап можно скачать через веб интерфейс весты.
Бэкап сайта в vesta cp состоит из:
- Исходников сайтов, сертификатов к ним, конфигураций nginx и самой весты к каждому домену.
- Конфигурационных файлов системного профиля на сервере.
- Дампа mysql баз и системных настроек для них.
- Cron файла пользователя.
Восстановить backup из подобного архива можно как на самой панели управления хостингом vestacp, так и на другом сервере. Мне понравилась такая простая и надежная реализация бэкапа.
Настройка виртуального домена
Настройка виртуального домена зависит от веб-сервера, который мы используем. Разберем примеры для NGINX и Apache.
NGINX
В данном примере мы рассмотрим настройку связки NGINX + php-fpm. Также мы сконфигурируем два варианта прослушивания — виртуальный домен и с добавлением пути /phpmyadmin.
1) На отдельном домене
Создаем конфигурационный файл для виртуального домена:
vi /etc/nginx/conf.d/phpMyAdmin.conf
server {
listen 80;
server_name phpmyadmin.dmosk.local;
set $root_path /usr/share/phpMyAdmin;
location / {
root $root_path;
index index.php;
}
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
fastcgi_read_timeout 300;
}
}
* где:
listen — порт, на котором слушает nginx для данного домена.
server_name — домен для которого применяются настройки server. В данном примере phpmyadmin.dmosk.local.
root_path — переменная, в которую мы заносим наш путь до phpMyAdmin.
location / — настройки для запросов к серверу. В конкретном случае, мы используем root_path в качестве корневой директории для скриптов сайта; опция index нужна для поиска скрипта по умолчанию, если нет явного обращения клиентом.
location ~ \.php$ — параметры для обработки скриптов php. В нашем случае, мы обрабатываем скрипты с помощью php-fpm
Стоить обратить внимание, что последний может слушать на порту (по умолчанию, 9000) или через сокет-файл. В примере выше используется последний вариант, а способ с портом закомментирован.
fastcgi_pass — данный параметр важен и зависит от настройки php-fpm
Если последний слушает на порту, мы задаем первый вариант (который закомментирован), иначе — указываем путь до сокетного файла.
Проверяем корректность настройки nginx:
nginx -t
… и если ошибок нет, перезапускаем сервис:
systemctl restart nginx
2) С помощью location /phpmyadmin
Открываем конфигурационный файл для домена по умолчанию:
vi /etc/nginx/conf.d/default.conf
* в вашей ситуации, файл с доменом по умолчанию может быть другим.
Добавляем location ^~ /phpmyadmin со следующими настройками:
server {
listen 80 default_server;
…
location /phpmyadmin {
root /usr/share/;
index index.php;
location ~ ^/phpmyadmin/(.+\.php)$ {
root /usr/share/;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
}
* где:
root — каталог, в котором находится каталог с phpmyadmin с порталом.
location ~ \.php$ — параметры для обработки скриптов php. В нашем случае, мы обрабатываем скрипты с помощью php-fpm
Стоить обратить внимание, что последний может слушать на порту (по умолчанию, 9000) или через сокет-файл. В примере выше используется последний вариант, а способ с портом закомментирован.
fastcgi_pass — данный параметр важен и зависит от настройки php-fpm
Если последний слушает на порту, мы задаем первый вариант (который закомментирован), иначе — указываем путь до сокетного файла.
Проверяем корректность настройки nginx:
nginx -t
… и если ошибок нет, перезапускаем сервис:
systemctl restart nginx
3) Проверка настройки php-fpm
После настройки nginx проверяем настройку php-fpm:
vi /etc/php-fpm.d/www.conf
Так как в нашем примере мы используем подключение на основе сокетов, то настройка опции listen должна быть такой:
listen = /run/php-fpm/www.sock
* на основе порта — listen = 127.0.0.1:9000.
Если конфигурационный файл пришлось менять, перезапускаем сервис:
systemctl restart php-fpm
Apache
Создаем конфигурационный файл для виртуального домена:
vi /etc/httpd/conf.d/phpMyAdmin.conf
<VirtualHost *:80>
Define root_domain phpmyadmin.dmosk.local
Define root_path /usr/share/phpMyAdmin
ServerName ${root_domain}
ServerAlias www.${root_domain}
DocumentRoot ${root_path}
<Directory /usr/share/phpMyAdmin>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
Проверяем корректность настройки apache:
apachectl configtest
… и если ошибок нет, перезапускаем сервис:
systemctl restart httpd