CentOS 7.5 - NGINX, PHP 7.3, LetsEncrypt SSL - Установка и настройка

В дальнейшем используя интернет страницу cloudhosting.lv, вы соглашаетесь с правилами пользования Куки. Узнай больше. Согласен

CentOS 7.5 - NGINX, PHP 7.3, LetsEncrypt SSL - Установка и настройка

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

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

Установите yum-utils для инструмента yum-config-manageryum 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, мы круче, чем vim'ers)

nano /etc/opt/remi/php73/php.ini

Заменить:

;cgi.fix_pathinfo=1

От:

cgi.fix_pathinfo=0

(Remove semicolon, change 1 to 0)

Now we need to edit the configuration for 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

Now edit the same file, lower in the configuration you will need to change the following 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 Mainline

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;
  }
  
  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 "" >> /usr/share/nginx/example.com/info.php

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

Чтобы обновить NGINX в будущем до новых основных сборок, просто запустите следующую

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

Добавить:

35 4 * * 1 certbot renew >> /var/log/certbot-renew.log

Все сделано!