И так начнем все по порядку. Во первых объясню что зачем. Хотелось чистый сервер без ISPmaneger и в такой связке Apache + Nginx + php-fpm(fast-cgi)+mysql+PhpMyAdmin+FTP ну и что то там еще. Ну и плюсом все эти вещи последних стабильных ревизий.
Те кто будет делать комментарии, просьба сильно не пинать, говорить по делу и по сути, приводить примеры из практики, диванные комментаторы неинтересно.
Имеем чистую (минимальная установка) CentOS Linux 7.6.1810, 2 гига 2 ядра KVM и root по ключам, ни каких паролей по SSH.
Начнем настройку:
Обновим репы
yum update
установим доп репу
yum install -y epel-release
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum update
Выполним настройку времени
Ставим утилиту, вторая строка установит тайм зону
yum install ntpdate
cp /usr/share/zoneinfo/Asia/Irkutsk /etc/localtime
Синхронизируем разово
ntpdate ru.pool.ntp.org
Установим утилиту синхронизации
yum install chrony
Установим необходимые инструменты, без них жить трудно
yum install firewalld net-tools yum-utils mc bind-utils atop htop iftop gcc wget unzip
Откроем порты
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=20-21/tcp
firewall-cmd --permanent --add-port=40900-40999/tcp
firewall-cmd --permanent --add-port=25/tcp
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=587/tcp
firewall-cmd --reload
Ставим репу для nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
ну и ставим его )))
yum install nginx
Стартуем
systemctl start nginx
Включаем в автозагрузку
systemctl enable nginx
Кое что добавим для будущего
mcedit /etc/nginx/nginx.conf
worker_processes auto;
В секции http добавим
server_names_hash_bucket_size 64;
client_max_body_size 256M;
Проверим конфиг
nginx -t
Перезапустим
systemctl restart nginx
Идем на свой ip и смотрим страницу приветствия
Ставим репы для PHP
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
Я включил самую последнюю версию, это по желанию (можно все версии поставить и переключать их по потребностям, но это другая задача)
yum install yum-utils yum-config-manager --enable remi-php73
Ставим
yum install php php-fpm
Стартуем
systemctl start php-fpm
Включаем автозагрузку
systemctl enable php-fpm
Поправим кое что
mcedit /etc/nginx/conf.d/default.conf
Добавим индексный файл
location / {
index index.php index.html index.htm;
}
И подключим php-fpm
location ~ \.php$ {
set $root_path /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$ fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
Проверим конфиг
nginx -t
Перезапустим
systemctl restart nginx
Создадим
mcedit /usr/share/nginx/html/index.php
Пишем туда
<?php phpinfo(); ?>
и сохраняем
Смотрим свой IP
должно быть хорошо )))
Ставим репу для БД
mcedit /etc/yum.repos.d/MariaDB.repo
Пишем туда
# MariaDB 10.3 CentOS repository list - created 2019-05-01 12:57 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Ставим mysql
yum install MariaDB-server MariaDB-client
Включаем автозагрузку
systemctl enable mariadb
Запускаем
systemctl start mariadb
Создаем пароль для root:
mysqladmin -u root password
Ставим для связки mysql и php
yum install php-mysql php-mysqli
Перезапустим
systemctl restart php-fpm
Смотрим php страничку на своем IP появилась секция mysql
Ставим Админку для мускуля
yum install phpmyadmin
для работы с nginx
mcedit /etc/nginx/conf.d/phpMyAdmin.conf
server {
listen 80;
server_name phpmyadmin.ВАШЕДОМЕННОЕ.ИМЯ;
set $root_path /usr/share/phpMyAdmin;
location / {
root $root_path;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
Перезапустим
systemctl reload nginx
systemctl restart php-fpm
Ставим кое какие плюшки
yum install memcached php-pecl-memcached php-opcache
Откроем
mcedit /etc/php.d/10-opcache.ini
Поправим при необходимости
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
opcache.enable_cli = 1
Включаем автозагрузку и запускаем сервис
systemctl enable memcached
systemctl start memcached
Перезапустим php-fpm:
systemctl restart php-fpm
Смотрим на сайте в браузере — в phpinfo новая секция memcached Zend OPcache
Ставим Apache
yum install httpd
Сразу идем в настройки:
mcedit /etc/httpd/conf/httpd.conf
Правим
Listen 8080
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Allow from all
</Directory>
Включаем запуск
systemctl enable httpd
Стартуем службу
systemctl start httpd
mcedit /var/www/html/index.php
Туда вставим
<?php echo $_SERVER['REMOTE_ADDR'] ?>
<?php phpinfo(); ?>
смотрим свой адрес в браузере с добавлением порта :8080
Видим phpinfo и вверху свой IP
Ставим mod_rpaf
mcedit /etc/yum.repos.d/nux-misc.repo
туда пишем
[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
Запускаем установку
yum --enablerepo=nux-misc install mod_rpaf
Свяжем Apache и Nginx
mcedit /etc/nginx/conf.d/default.conf
Уберем
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
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 -t
перезапустим
systemctl restart nginx
идем смотреть phpinfo откроется та же что и с портом 8080 (в верху буде Ваш IP)
Кое что подправим для души
mcedit /etc/php.ini
upload_max_filesize = 256M
max_execution_time = 600
max_input_time = 600
memory_limit = 512M
post_max_size = 256M
short_open_tag = On
date.timezone = "Asia/Irkutsk"
Перезапустим
systemctl restart php-fpm
systemctl restart httpd
Можно кстати не писать конфиг для Nginx для работы с phpMyAdmin, а просто сделать символьную ссылку
ln -s /usr/share/phpMyAdmin /usr/share/nginx/html
Ну вот кратко будет так. Все рабочее, на момент написания и проверено прямо в работе на установке нового KVM.
Позже рассмотрим установку mpm-itk модуля для работы в среде мультиюзер (все выше написанное будет радостно работать с этим модулем).
Ну и возможно сразу настроим сайтик тестовый.