Найти тему
Вячеслав Олд

Centos 7 настроим для сайтов

И так начнем все по порядку. Во первых объясню что зачем. Хотелось чистый сервер без 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 модуля для работы в среде мультиюзер (все выше написанное будет радостно работать с этим модулем).

Ну и возможно сразу настроим сайтик тестовый.