Centos 7 (чистый) - полная настройка
Centos 7 (чистый) - полная настройка
(ненужно) Устанавливаем обновления (если вам нужно)
Установка и настройка файрволла
Устанавливаем firewalld
1 yum install firewalld -y
Добавляем в автозагрузку
1 systemctl enable firewalld
Запускаем firewalld
1 systemctl start firewalld
Проверяем запустился ли firewalld
1 systemctl status firewalld
Разрешаем трафик для http и https(80,443)
1 2 sudo firewall-cmd --permanent --zone= public --add-service=http
sudo firewall-cmd --permanent --zone= public --add-service=https
Перезапустим службу firewalld
1 sudo systemctl restart firewalld
Подготовка
Устанавливаем nano
Установка nginx
Перед установкой nginx необходимо установить EPEL репозиторий
1 yum install epel-release -y
Устанавливаем nginx
Запускаем nginx
Добавляем в автозагрузку
Чтобы получить доступ к сайтам из вне необходимо разрешить трафик для веб-сервера в брандмауэре системы:
1 firewall-cmd --zone=public --permanent --add-service=http
1 firewall-cmd --zone=public --permanent --add-service=https
Остается лишь перезагрузить брандмауэр:
Далее необходимо настроить SElinux , чтобы не было ошибки 403 при указании папки веб-серверу
1 # chcon -Rt httpd_sys_content_t <путь_к_папке_с_сайтами>
Настройка виртуальных хостов
Создадим каталоги sites-available и sites-enabled
1 2 sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Откроем для редактирования конфигурационный файл nginx.conf
1 sudo nano /etc/nginx/nginx.conf
Добавим настройки, чтобы nginx считывал конфигурации из директории sites-enabled
1 2 include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
Скопируем шаблон конфигурации для нового виртуального хоста
1 sudo cp /etc/nginx/nginx.conf.default /etc/nginx/sites-available/<имя_сайта>.conf
Отредактируем скопированную конфигурацию для нового виртуального хоста
1 sudo nano /etc/nginx/sites-available/site.conf
Пример конфигурации
1 2 3 4 5 6 7 8 9 10 server {
listen 80;
server_name <имя_сайта> www.<имя_сайта>;
charset UTF-8;
location / {
root /var/www/<имя_сайта>;
index index.php index.html index.htm;
}
}
Создадим папку
1 mkdir -p /var/www/<имя_сайта>
Создадим индексный файл
1 echo "<h1> Имя сайта</h1> " > /var/www/<имя_сайта>/index.html
Создаем ссылку на конфигурацию
1 sudo ln -s /etc/nginx/sites-available/<имя_сайта>.conf /etc/nginx/sites-enabled/<имя_сайта>.conf
Перезагружаем Nginx
1 sudo systemctl restart nginx
Устанавливаем ssl сертификаты
Устанавливаем certbot и модуль для работы с сервером
1 yum install certbot python2-certbot-nginx -y
Запускаем получение сертификата
Указываем свой email-адрес
Принимаем соглашение
Certbot проверит конфигурационные файлы nginx. Выбираем доменные имена
Для успешной работы Certbot необходимо, чтобы у вас были открыты порты 80 и 443
Настройка автоматического обновления сертификатов
Открываем для редактирование cron
Создадим задание на обновление всех сертификатов с помощью certbot
1 0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q
;
Установка PHP 7.4
Добавляем REMI репозиторий
1 sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Устанавливаем дополнительные утилиты
1 sudo yum -y install yum-utils
Добавляем репозиторий с php7.4
1 sudo yum-config-manager --enable remi-php74
Обновляем репозитории
Устанавливаем php и дополнительные пакеты
Устанавливаем необходимые библиотеки
1 yum install -y php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-xmlrpc php-mbstring php-snmp php-soap
Настройка php-fpm.sock
Открываем для редактирования
1 nano /etc/php-fpm.d/www.conf
Редактируем настройки
1 2 3 4 5 user = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Добавляем настройки php-fpm в конфигурацию nginx нашего сайта по следующему пути
/etc/nginx/sites-available/<имя_сайта>.conf
1 nano /etc/nginx/sites-available/<имя_сайта>.conf
1 2 3 4 5 6 7 location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
try_files $uri = 404;
}
Установка Maridb
Добавим официальный репозиторий разработчиков.
Для этого пройдите по ссылке mariadb.org .
Далее выбираем версию mariadb и копируем код в файл Mariadb.repo
Добавляем информацию о репозитории на сервер
1 sudo nano /etc/yum.repos.d/Mariadb.repo
Устанавливаем mariadb
1 yum install -y mariadb mariadb-server net-tools
Обновляем репозитории
Обновляем системные таблицы и перезапустить сервер
Добавляем mariadb в автозагрузку
1 sudo systemctl enable mysql
Запускаем mariadb
1 sudo systemctl start mariadb
Проверяем статус
1 sudo systemctl status mariadb
Настраиваем безопасность Mariadb
1 mariadb-secure-installation
Switch to unix_socket authentication - Y
Change the root password? - Y
Remove anonymous users? - Y
Disallow root login remotely? - Y
Remove test database and access to it? - Y
Reload privilege tables now? - Y
Установка PhpMyAdmin
Устанавливаем wget unzip
1 yum install wget unzip -y
Переходим на официальный сайт phpmyadmin и копируем ссылку последней версии phpmyadmin
phpmyadmin.net
Вставляем ссылку и скачиваем phpmyadmin
1 wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
Распаковываем скаченный архив
1 unzip phpMyAdmin-*-all-languages.zip
Создаем каталог для phpmyadmin
1 mkdir /usr/share/phpMyAdmin
Измените контекст, чтобы NGINX (как процесс, помеченный контекстом httpd_t) мог получить доступ к папке:
1 chcon -Rt httpd_sys_content_t /usr/share/phpMyAdmin
Добавим необходимые права для работы с файлами и сессией
Нужно дать права движку web-сервера на операции с файлами и сессиями
1 2 3 4 5 6 chown -R nginx:nginx /var/lib/php/session
chown -R root:nginx /var/lib/php/wsdlcache
chown -R root:nginx /var/lib/php/opcache
chmod -R 755 /var/lib/php/session
chmod -R 755 /var/lib/php/wsdlcache
chmod -R 755 /var/lib/php/opcache
Защита phpMyAdmin: добавляем двойную авторизацию
Генерируем пароль
Создаем файл авторизации
1 sudo nano /usr/share/phpMyAdmin/pma_pass
Добавляем в него данные и сохраняем
1 <имя_пользователя>:<сгенерированный_пароль>
В настройках nginx добавляем блок location
1 2 auth_basic "Admin Login" ;
auth_basic_user_file /usr/share/phpMyAdmin/pma_pass;
Настройка phpMyAdmin
Создаем конфигурационный файл из шаблона
Переходим в папку с phpMyAdmin
1 cd /usr/share/phpMyAdmin
Создадим конфигурационный файл
1 cp config.sample.inc.php config.inc.php
Сгенерируем секретную фразу из 32 символов для blowfish_secret и вставим ее в конфигурационный файл
1 head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32 ; echo ''
Открываем для редактирование конфигурационный файл
Создадим каталог tmp для хранения временных файлов
1 mkdir /usr/share/phpMyAdmin/tmp
Укажем путь к созданной папке темп
1 $cfg['TempDir'] = './tmp/';
Обновим права
1 chown -R nginx:nginx /usr/share/phpMyAdmin
Cоздадим базу данных и таблицы конфигурации phpMyAdmin
1 mysql -u root -p < /usr/share/phpMyAdmin/sql/create_tables.sql
Настроим php.ini, который можно посмотреть в phpinfo()
1 2 3 short_open_tag = On
upload_max_filesize = 100M
post_max_size = 100M
Создадим специального пользователя pma и дадим ему привилегии на phpmyadmin
1 2 3 CREATE USER 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
В настоящее время для баз данных и таблиц MySQL рекомендуется использовать кодировку utf8mb4_unicode_ci .
Ссылки по теме:
losst.ru
jtprog.ru
pocketadmin.tech - Получение сертификатов
infoit.com.ua - Установка php7.4
infoit.com.ua - Настройка phpMyAdmin
linoxide.com
itzgeek.com
cloudwafer.com
maddot.ru