Украина, Днепр
(095) 478-70-11
Установим необходимые утилиты
yum update yum install -y wget net-tools
Добавим репу Nginx в ОС
(cat <<-EOF [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/x86_64/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key EOF )>/etc/yum.repos.d/nginx.repo Включим репозитарий nginx-mainline: просмотреть источникраспечатать? yum --enablerepo=nginx-mainline update
Установим Nginx и OpenSSL (опционально)
yum -y install nginx yum -y install openssl
Запустим Nginx
systemctl enable --now nginx
Проверим запуск Nginx
systemctl status nginx
Проверим открытые порты
netstat -ltupn | grep nginx
Базовая настройка.
1. Создадим директорию для хранения SSL сертификатов и DH-ключей, а также создаем файл с параметрами для DHE-шифров: mkdir /etc/nginx/ssl openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048 2. Создадим директории для хранения настроек Web-сайтов: mkdir /etc/nginx/sites-available /etc/nginx/sites-enabled 3. Отредактируем основной файл настроек Nginx. Я приведу базовый эталонный файл настроек который использую я на 99% серверов, рекомендую использовать его с дополнительными Вашими правками под конкретные нужды. В предыдущей статье мы уже рассматривали его, с тех пор ничего не изменилось. Скачать уже готовый файл для Nginx версии 1.21.x : wget https://gist.githubusercontent.com/CHERTS/8e9ecf4fbfb765556311a88e5106174b/raw/nginx.conf -O /etc/nginx/nginx.conf sed -i 's/user www-data;/user nginx;/g' /etc/nginx/nginx.conf
проверяем конфигурацию Nginx
nginx -t
Перезагружаем конфигурацию Nginx:
nginx -s reload
Открываем порты в фаерволе
firewall-cmd --list-all firewall-cmd --add-service=http --permanent firewall-cmd --reload
Если после смены папки в настройках сервера в браузере отображается 403 forbidden значит у нас проблема с SELinux, воспользуемся одной из команд ниже
sudo restorecon -R /var/www/html sudo chcon -R -t httpd_sys_content_t DIRPATH
Если мы пытаемся сделать простой proxy_pass на другой сервак но в итоге получаем 502, то скорее всего проблема тоже с SELinux, воспользуемся командой
sudo setsebool -P httpd_can_network_connect 1
Установим сторонний репозитарий EPEL и Remi
Centos 7
yum install -y yum-utils yum localinstall https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum localinstall https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php74 yum makecache fast
Centos 8
yum install -y yum-utils dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm rpm -qa | grep epel dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm rpm -qa | grep remi dnf module list php dnf module enable php:remi-7.4 dnf install php php-cli php-common dnf install -y php-mysqlnd php -v
Глянем пакеты которые есть -> PHP 7.4
yum search php7
если мы обновляем 7.4 на более новую версию, нужно почистить лишние реми файлы
dnf clean all rm -r /var/cache/dnf rm -r /var/cache/PackageKit dnf upgrade
Установим PHP 7.4 и необходимые либы, вот стандартно используемых. php-bcmath — модуль для PHP приложений с использованием библиотеки BCMath. php-cli — интерфейс командной строки для PHP (CLI). php-common — Common (общие) файлы для PHP. php-dba — модуль абстрактного слоя с использованием БД для PHP приложений. php-devel — Файлы, необходимые для сборки расширений PHP. php-embedded — библиотека PHP для встраивания в приложения. php-enchant — Enchant расширение для PHP приложений. php-fpm — PHP FastCGI Process Manager php-gd — модуль для PHP приложений для использования графической библиотеки GD. php-imap -модуль для PHP приложений которые используют протокол IMAP. php-intl -Интернационализация расширения для PHP приложений. php-ldap -модуль для PHP приложений которые используют LDAP. php-mbstring — A module for PHP applications which need multi-byte string handling php-mcrypt — Стандартный модуль PHP с поддержкой Mcrypt. php-mysql -модуль для PHP приложений которые используют MySQL. php-mysqlnd -модуль для PHP приложений которые используют MySQL. php-odbc -модуль для PHP приложений которые используют ODBC. php-pdo — модуль абстракции доступа к базе данных для PHP приложений. php-pear.noarch — PHP Extension and Application Repository framework php-pecl-memcache — расширение для работы с Memcached. php-pgsql — модуль для PHP приложений которые используют PostgreSQL. php-process — Модуль для PHP, который использует интерфейсы системного процессора. php-pspell — модуль для PHP приложений для использования интерфейсов pspell. php-recode -модуль для PHP приложений которые используют библиотеку recode. php-snmp — модуль для PHP приложений, которые запрашивают SNMP-управляемые устройства. php-soap -модуль для PHP приложений которые используют протокол SOAP. php-xml -модуль для PHP приложений которые используют XML. php-xmlrpc -модуль для PHP приложений которые используют протокол XML-RPC.
yum install -y php-cli php-fpm php-common php-curl php-gd php-imap php-intl php-mbstring php-xml php-zip php-bz2 php-bcmath php-json php-opcache php-devel php-mysqlnd
Запускаем PHP-FPM
systemctl enable --now php-fpm
Проверим работоспособность
systemctl status php-fpm
Настройка Nginx и PHP-FPM
systemctl status php-fpm или ps -ef |grep "[p]hp-fpm: pool"
Пользователь и группа от имени которой работает пул www — это apache, нужно сменить на nginx
sed -i "s/user = apache/user = nginx/g" /etc/php-fpm.d/www.conf sed -i "s/group = apache/group = nginx/g" /etc/php-fpm.d/www.conf
Перезапускаем PHP-FPM
systemctl restart php-fpm
Проверяем все пулы, убеждаемся что пользователь nginx
ps -ef |grep "[p]hp-fpm: pool"
Создаем файл виртуального сервера для Nginx
(cat<<-EOF server { listen 195.56.56.10:80; server_name mysite.org www.mysite.org; root /var/www/mysite.org; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } } EOF )>/etc/nginx/sites-available/mysite.conf
Создадим симлинк на файл /etc/nginx/sites-available/mysite.conf в директории /etc/nginx/sites-enabled. это удобный способ быстро включать и выключать виртуальные серверы, ведь в файле /etc/nginx/nginx.conf мы прописали такую директиву: include /etc/nginx/sites-enabled/*;
ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/100-mysite.conf
Проверяем создание симлинки
ls -l /etc/nginx/sites-enabled
Создаем папку для сайта, которую мы указали в директиве root в файле /etc/nginx/sites-available/mysite.conf:
mkdir -p /var/www/mysite.org
Задаем права для папок в которых хранятся сайты
chown -R nginx:nginx /var/www chmod -R 775 /var/www
Проверяем настройку nginx, если все ок, перезапускаем его
nginx -t nginx -s reload
На всякий случай разрешаем в фаерволе http
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --reload
Создадим файл в котором будут храниться пароли. Дальше установим пакет htpasswd который входим в apatch, для генерации паролей
touch /etc/nginx/webpagestudio.htpasswd sudo yum install httpd-tools
Установим пароль, для этого укажем имя пользователя и два раза повторим пароль.
sudo htpasswd /etc/nginx/htpasswd webpagestudio
Теперь в location добавляем защиту
auth_basic "Restricted"; auth_basic_user_file /etc/nginx/htpasswd;
Перезапускаем nginx
sudo service restart nginx
Обновляем локаль
sudo yum -y update
Устанавливаем необходимые зависимости
yum install php-cli php-zip wget unzip
Скачиваем скрипт установщика
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Загрузите авторизованную подпись со страницы Composer на Github в переменной HASH и потом используем скрипт, чтобы сравнить официальный хеш-код с тем, который мы скачали:
HASH="$(wget -q -O - https://composer.github.io/installer.sig)" php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Устанавливаем composer
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Прверяем наличие composer и потом удаляем лишние связи
composer php -r “unlink(‘composer-setup.php’);”
Copyright © 2012-2023 All rights reserved.
created by WPS.