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

Операционная система: CentOS 7 (7.5) x86_64

Пакет программного обеспечения для установки:
- NGINX Mainline (Latest - журнал изменений)
- PHP 7.3, PHP-FPM (via Remi repository)
- LetsEncrpt SSL

В этом руководстве один из наших недавно установленных CentOS 7.5 KVM VPS используется с отключенным SELinux.


Установите PHP 7.3 из репозитория Remi



• Установите yum-utils для инструмента yum-config-manager
yum install -y yum-utils

• Установка репозитория EPEL и Remi
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

• включить remi-репозиторий
yum-config-manager --enable remi-php73

Заметка. В этом уроке вы можете изменить «php73» на «php72» (или другие версии), чтобы использовать другую версию PHP, если она не поддерживает модули, которые вам нужны здесь.
 
• Запустите обновления, затем установите пакеты PHP
yum update -y
yum install -y php73 php73-php-fpm

• Нам нужно отредактировать конфигурацию php.ini для этой установки PHP (вы можете использовать любой текстовый редактор, мы предпочитаем нано)
nano /etc/opt/remi/php73/php.ini
замещать:
;cgi.fix_pathinfo=1
С:
cgi.fix_pathinfo=0
(Remove semicolon, change 1 to 0)

• Теперь нам нужно отредактировать конфигурацию для PHP-FPM
nano /etc/opt/remi/php73/php-fpm.d/www.conf
замещать:
listen = 127.0.0.1:9000
С:
listen = /var/run/php73-fpm/php73-fpm.sock

• Теперь отредактируйте один и тот же файл, ниже в конфигурации вам нужно будет изменить следующее
nano /etc/opt/remi/php73/php-fpm.d/www.conf
замещать:
;listen.owner = nobody
;listen.group = nobody
С:
listen.owner = nginx
listen.group = nginx
(удалите точку с запятой и измените «nobody» на «nginx»)

• Теперь отредактируйте тот же файл еще раз, в верхней части конфигурации вам нужно будет изменить следующее
nano /etc/opt/remi/php73/php-fpm.d/www.conf
замещать:
user = apache
group = apache
С:
user = nginx
group = nginx

• Теперь создайте каталог для файла сокета
mkdir /var/run/php73-fpm

• Изменение прав доступа к файлам сеансов, чтобы PHP-сессии работали правильно
chown -R nginx:nginx /var/opt/remi/php73/lib/php/session

• После установки NGINX мы можем запустить PHP-FPM, если мы попробуем сейчас, это даст ошибку, так как пользователь системы «nginx» еще не создан
systemctl restart php73-php-fpm
systemctl enable php73-php-fpm
Примечание. Перед запуском PHP-FPM вам нужно будет установить Nginx ниже.


Установите NGINX Mainline из репозитория Nginx



• Сначала мы должны добавить ключ NGINX PGP для проверки целостности и подтверждения происхождения пакетов
wget http://nginx.org/keys/nginx_signing.key
rpm --import nginx_signing.key && rm -rf nginx_signing.key

• Давайте теперь добавим репозиторий NGINX, создадим новый файл
nano /etc/yum.repos.d/nginx.repo
Добавьте следующее содержимое и сохраните::
[nginx]
name=nginx
baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/
gpgcheck=1
enabled=1

• Теперь установите магистраль NGINX
yum update -y
yum install -y nginx

• Запуск NGINX и запуск при загрузке
systemctl start nginx
systemctl enable nginx

• Проверьте версию и статус NGINX, чтобы подтвердить
systemctl status nginx && nginx -v

• Теперь мы можем создать новую конфигурацию виртуального хоста для нашего домена. Обязательно замените все вхождения «example.com» своим собственным доменом
nano /etc/nginx/conf.d/example.com.conf
Вставьте следующее содержимое:
server {
  listen 80;
  server_name www.example.com example.com;
  root /usr/share/nginx/example.com;
  index index.php index.html index.htm;
  
  location / {
    try_files $uri $uri/ /index.php$query_string =404;
  }
  
  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;
  location = /50x.htm {
    root /usr/share/nginx/example.com;
  }
  
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php73-fpm/php73-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}

• Теперь перезапустите NGINX, также перезапустите PHP-FPM, так как пользователь nginx был создан сейчас
systemctl restart nginx
systemctl restart php73-php-fpm


• Позволяет сделать веб-каталог для виртуального хоста сейчас и создать индексный файл и файл информации PHP, чтобы подтвердить, что обработка PHP работает
mkdir /usr/share/nginx/example.com
echo "test index" >> /usr/share/nginx/example.com/index.html
echo "<?php phpinfo(); ?>" >> /usr/share/nginx/example.com/info.php

Посетите свой домен в своем веб-браузере, чтобы подтвердить, что все работает. Вы можете перейти в свой домен /info.php, чтобы проверить модули и параметры PHP

• Чтобы обновить NGINX в будущем к новым строкам mainline, просто запустите следующие
yum update nginx -y
systemctl restart nginx

• Если вы используете брандмауэр, убедитесь, что оба веб-порта
firewalld:
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
iptables:
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT


Установите LetsEncrypt SSL и включите HTTPS и HTTP / 2 для виртуального хоста



• Теперь установите LetsEncrypt Certbot
yum install -y certbot-nginx

• Запустите certbot сейчас, он попросит каталог webroot и ваш адрес электронной почты. Установленный нами «certbot-nginx» должен автоматически изменять вашу конфигурацию виртуального хоста Nginx, поэтому никаких ручных изменений не требуется.
certbot --authenticator webroot --installer nginx

• Создайте запись crontab для автоматического обновления сертификата каждый месяц
crontab -e
Add:
35 4 * * 1 certbot renew >> /var/log/certbot-renew.log

• Готово!

Помог ли вам данный ответ? 135 Пользователи нашли это полезным (363 голосов)