Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
склад:обживание:linux:первичная_настройка_сервера_centos7 [2016/09/21 21:22] will [Установка MySQL (epel, remi)] |
склад:обживание:linux:первичная_настройка_сервера_centos7 [2022/11/07 15:52] (текущий) will |
||
---|---|---|---|
Строка 847: | Строка 847: | ||
===== Установка nginx ===== | ===== Установка nginx ===== | ||
+ | |||
+ | Конвертер apache | ||
+ | https://winginx.com/ru/htaccess | ||
Официальный ман | Официальный ман | ||
Строка 938: | Строка 941: | ||
<file> | <file> | ||
/etc/init.d/mysql start | /etc/init.d/mysql start | ||
+ | </file> | ||
+ | |||
+ | Изменить модуль в webmin | ||
+ | <file> | ||
+ | So click module configuration and change: | ||
+ | Command to start MySQL server: /etc/init.d/mysql start | ||
+ | Command to stop MySQL server: /etc/init.d/mysql stop | ||
+ | MySQL configuration file: /var/lib/mysql/my.cnf | ||
+ | </file> | ||
+ | |||
+ | Запустить скрипт безопасности - задание пароля для баз, убрать гостя и тп | ||
+ | <file> | ||
+ | sudo mysql_secure_installation | ||
</file> | </file> | ||
Строка 1056: | Строка 1072: | ||
systemctl start php-fpm.service | systemctl start php-fpm.service | ||
+ | </file> | ||
+ | |||
+ | или так | ||
+ | <file> | ||
+ | chkconfig php-fpm on | ||
+ | </file> | ||
+ | |||
+ | Установим кешер | ||
+ | <file> | ||
+ | install -y php-pecl-apc | ||
</file> | </file> | ||
Строка 1062: | Строка 1088: | ||
PHP-FPM является процессом (со скриптом init /etc/init.d/php-fpm), который запускает FastCGI сервер на порте 9000. | PHP-FPM является процессом (со скриптом init /etc/init.d/php-fpm), который запускает FastCGI сервер на порте 9000. | ||
+ | |||
+ | ===== Сессии PHP ===== | ||
+ | |||
+ | После обновления бывает слетают права на сессии. Лечиться так | ||
+ | <file> | ||
+ | chown nginx:nginx /var/lib/php/wsdlcache | ||
+ | chown nginx:nginx /var/lib/php/session | ||
+ | |||
+ | </file> | ||
Строка 1372: | Строка 1407: | ||
Добавить spoiler в вики | Добавить spoiler в вики | ||
+ | |||
+ | |||
+ | ----- | ||
+ | |||
+ | php-fpm на сокете | ||
+ | Problem: | ||
+ | |||
+ | PHP-FPM support for nginx will not start when attempted in Tools & Settings > Services Management | ||
+ | |||
+ | |||
+ | Check error log: | ||
+ | |||
+ | #tail /var/log/php-fpm/error.log | ||
+ | |||
+ | ERROR: unable to bind listening socket for address '/var/www/vhosts/system/domain.tld/php-fpm.sock': Permission denied (13) | ||
+ | |||
+ | |||
+ | Possible problem: | ||
+ | |||
+ | SELinux may be preventing it. To test this do: | ||
+ | |||
+ | #setenforce 0 | ||
+ | |||
+ | Now try and start PHP-FPM support again in Tools & Settings > Services Management | ||
+ | |||
+ | If that now starts you know what the problem is. Go to "Fix" below | ||
+ | If it didnt work, you have a different issue. Turn SELinux back on while you figure it out: | ||
+ | |||
+ | #setenforce 1 | ||
+ | |||
+ | |||
+ | Fix: | ||
+ | |||
+ | The following worked for me but i know very little about SELinux - corrections welcome: | ||
+ | |||
+ | ## Turn SELinux to permissive | ||
+ | # setenforce 0 | ||
+ | |||
+ | ## In Plesk panel start PHP-FPM support in Tools & Settings > Services Management | ||
+ | |||
+ | # grep php-fpm /var/log/audit/audit.log | audit2allow -m php-fpmlocal > php-fpm.te | ||
+ | |||
+ | ## You can vi/cat/nano php-fpm.te and see the custom policy that will be created. When done, execute it with: | ||
+ | |||
+ | # grep php-fpm /var/log/audit/audit.log | audit2allow -M php-fpmlocal | ||
+ | |||
+ | ## now load the policy | ||
+ | # semodule -i php-fpmlocal.pp | ||
+ | |||
+ | ## Turn SElinux back on | ||
+ | #setenforce 1 | ||
+ | |||
+ | ## In Plesk panel start PHP-FPM support in Tools & Settings > Services Management | ||
+ | |||
+ | ## Still not working. Sorry - good luck finding the problem. | ||
+ | |||
+ | Reference page | ||
+ | http://wiki.centos.org/HowTos/SELinux | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | http://www.tech-notes.net/configure-selinux-apache-centos/ | ||
+ | |||
+ | ==== Настройка SELinux для Apache в CentOS ==== | ||
+ | |||
+ | Май 7, 2016 admin | ||
+ | |||
+ | SELinux это модуль ядра Linux, который предоставляет дополнительный механизм определения прав доступа к папкам и файлам. Иногда он создает немалые проблемы при расположении файлов сайта и логов в нестандартных папках. | ||
+ | |||
+ | Особым успехом эти грабли пользуются у новоиспеченных админов и разработчиков, которые не понимают, почему сайт возвращает 404-ю ошибку, при том, что пользователь apache или www-data является владельцем папки с файлами сайта. | ||
+ | |||
+ | Самым популярным способом проблемы является отключение selinux, что не совсем правильно. Даже админы из второй линии поддержки популярных хостингов пользуются этим способом решения проблемы, что, как минимум, странно. | ||
+ | |||
+ | Дело в том, что selinux определяет не столько права доступа к файлам, сколько что и какому демону можно делать (читать файлы, редактировать файлы). Очень часто сервера ломают используя уязвимости в CMS сайтов. При этом злоумышленник получает доступ к папкам и файлам, к которым имеет доступ web-сервер. | ||
+ | |||
+ | Используя selinux, можно запускать web-сервер хоть от имени пользователя root, но при этом быть спокойным. | ||
+ | |||
+ | Проверить состояние selinux в CentOS/RedHat можно с помощью следующей команды: | ||
+ | |||
+ | getenforce | ||
+ | |||
+ | Для управления правилами нам понадобятся дополнительные утилиты: | ||
+ | |||
+ | yum install -y policycoreutils-python setroubleshooting | ||
+ | |||
+ | Selinux по структуре конфига напоминает iptables. У него имеются свои таблицы доступа к файла. Для того что бы selinux разрешил процессу apache запись в определенный каталог - нужно этот каталог включить в "таблицу" httpd_sys_rw_content_t, папку с логами нужно добавить в "httpd_log_t" и т.д. | ||
+ | |||
+ | Следующие команды приводятся как пример или шпаргалка. В этом случае папки сайтов лежат в /home/webapps. | ||
+ | |||
+ | Разрешаем apache читать файлы в каталоге и подкаталогах /home/webapps (httpd_sys_content_t): | ||
+ | |||
+ | semanage fcontext -a -t httpd_sys_content_t "/home/webapps(/.*)?" | ||
+ | |||
+ | Разрешаем apache писать логи нестандартном месте (httpd_log_t): | ||
+ | |||
+ | semanage fcontext -a -t httpd_log_t "/home/webapps/logs(/.*)?" | ||
+ | |||
+ | Отдельная директива в selinux отведена для mod_cache. Если Вашему серверу нужно использовать произвольное хранилище для кэша - добавьте его в httpd_cache_t: | ||
+ | |||
+ | semanage fcontext -a -t httpd_cache_t "/home/webapps/cache(/.*)?" | ||
+ | |||
+ | Для того что бы разрешить запись - добавте путь к папке в httpd_sys_rw_content_t: | ||
+ | |||
+ | semanage fcontext -a -t httpd_sys_rw_content_t "/home/webapps/*/public_html/uploads(/.*)?" | ||
+ | |||
+ | Для применения изменений выполните следующую команду: | ||
+ | |||
+ | restorecon -Rv /home/webapps | ||
+ | |||
+ | На этом этапе apache может работать с каталогами всех сайтов, которые буду созданы в /home/webapps/ и писать файлы в каталоги uploads каждого сайта. | ||
+ | |||
+ | Список использованой литературы: | ||
+ | |||
+ | |||
+ | ===== Включаем отправку почты с php ===== | ||
+ | |||
+ | |||
+ | sendmail: fatal: chdir /var/spool/postfix: Permission denied | ||
+ | |||
+ | showing up in /var/log/httpd/error_log. This was caused by the apache user not having SELinux permission to send email. This could also occur on other distributions which use SELinux (particularly Fedora and CentOS, but possibly others as well), if it is set to "Enforcing". | ||
+ | |||
+ | You can check this by using | ||
+ | Code: [Select] | ||
+ | |||
+ | /usr/sbin/getsebool httpd_can_sendmail | ||
+ | |||
+ | which will report | ||
+ | Code: [Select] | ||
+ | |||
+ | httpd_can_sendmail --> {on|off} | ||
+ | |||
+ | and if it is off, you can turn it on using | ||
+ | Code: [Select] | ||
+ | |||
+ | sudo setsebool -P httpd_can_sendmail 1 | ||
+ | |||
+ | ===== Настройка ssl от Let’s Encrypt ===== | ||
+ | |||
+ | Шел по статье | ||
+ | https://habrahabr.ru/post/301558/ | ||
+ | |||
+ | и оф дока | ||
+ | https://certbot.eff.org/#centosrhel6-nginx | ||
+ | |||
+ | В CentOS7 - можно из пакетов, но в шестой пришлось качать | ||
+ | <file> | ||
+ | sudo yum install epel-release | ||
+ | sudo yum install certbot | ||
+ | </file> | ||
+ | |||
+ | Установка | ||
+ | |||
+ | Проще так | ||
+ | |||
+ | <file> | ||
+ | wget https://dl.eff.org/certbot-auto | ||
+ | chmod a+x certbot-auto | ||
+ | </file> | ||
+ | ** | ||
+ | Получение сертификата** | ||
+ | |||
+ | Далее следует команда непосредственно получения сертификата: | ||
+ | |||
+ | # ./certbot-auto certonly --webroot --agree-tos --email mypost@my-domain.ru -w /home/bitrix/www/ -d my-domain.ru -d www.my-domain.ru | ||
+ | |||
+ | |||
+ | --webroot — так как автоматическая установка для nginx пока не надежна, используем этот ключ; | ||
+ | --agree-tos — соглашаемся с лицензионным соглашением; | ||
+ | --email mypost@my-domain.ru — указываем свой e-mail. В дальнейшем он может пригодиться для восстановления своего аккаунта; | ||
+ | -w /home/bitrix/www — указываем корневую директорию сайта; | ||
+ | -d my-domain.ru — наш домен. так же можно указывать и поддомены, например -d site.my-domain.ru. | ||
+ | |||
+ | После этого скрипт начнет работу и предложит установить недостающие пакеты. Соглашаемся и ждём. | ||
+ | |||
+ | Если всё завершится успешно, вы увидите сообщение: | ||
+ | |||
+ | <file> | ||
+ | IMPORTANT NOTES: | ||
+ | - Congratulations! Your certificate and chain have been saved at | ||
+ | /etc/letsencrypt/live/my-domain.ru/fullchain.pem. Your | ||
+ | cert will expire on 2016-08-21. To obtain a new version of the | ||
+ | certificate in the future, simply run Certbot again. | ||
+ | - If you lose your account credentials, you can recover through | ||
+ | e-mails sent to mypost@my-domain.ru. | ||
+ | - Your account credentials have been saved in your Certbot | ||
+ | configuration directory at /etc/letsencrypt. You should make a | ||
+ | secure backup of this folder now. This configuration directory will | ||
+ | also contain certificates and private keys obtained by Certbot so | ||
+ | making regular backups of this folder is ideal. | ||
+ | - If you like Certbot, please consider supporting our work by: | ||
+ | |||
+ | Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate | ||
+ | Donating to EFF: https://eff.org/donate-le | ||
+ | </file> | ||
+ | |||
+ | Сертификаты установлены, осталось только указать nginx'у, где они лежат. | ||
+ | |||
+ | **Настройка** | ||
+ | |||
+ | Открываем конфигурационный файл ssl.conf: | ||
+ | |||
+ | # vim /etc/nginx/bx/conf/ssl.conf | ||
+ | |||
+ | |||
+ | Если у вас уже были установлены сертификаты, удаляем или комментируем строки с ними и вставляем новые: | ||
+ | |||
+ | <file> | ||
+ | ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem; | ||
+ | ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem; | ||
+ | </file> | ||
+ | |||
+ | Не забываем включить ssl, если этого не было сделано ранее: | ||
+ | |||
+ | <file> | ||
+ | ssl on; | ||
+ | keepalive_timeout 70; | ||
+ | keepalive_requests 150; | ||
+ | ssl_session_cache shared:SSL:10m; | ||
+ | ssl_session_timeout 10m; | ||
+ | </file> | ||
+ | |||
+ | После этого перезапускаем nginx: | ||
+ | |||
+ | # service nginx reload | ||
+ | |||
+ | |||
+ | Если он не выдал никаких ошибок, значит всё в порядке. Можно зайти на сайт и посмотреть что получилось. | ||
+ | |||
+ | Обновление | ||
+ | |||
+ | Сертификат выдается на 90 дней, так что после этого срока нужно будет его обновить. Делается это командой: | ||
+ | |||
+ | # certbot-auto renew | ||
+ | |||
+ | ===== Обновляем ===== | ||
+ | /var/local/ | ||
+ | |||
+ | wget https://dl.eff.org/certbot-auto | ||
+ | просто вот это | ||
+ | <file> | ||
+ | ./certbot-auto renew | ||
+ | service nginx restart | ||
+ | </file> | ||
+ | |||
+ | а так было раньше | ||
+ | <file> | ||
+ | ./certbot-auto certonly --webroot --agree-tos --email esa@magnes.su -w /var/www//html/zakaz.cloud/samart -d zakaz.samart.ru | ||
+ | service nginx restart | ||
+ | chmod a+x certbot-auto | ||
+ | </file> | ||
+ | |||
+ | |||
+ | Для тех, где бот не работает - сначала сделаем сертификат без проверок well-know, и вставим его после | ||
+ | <file> | ||
+ | ./certbot-auto certonly --webroot --agree-tos --email esa@magnes.su -w /var/www//html/zakaz.cloud/www -d zakaz.cloud | ||
+ | ./certbot-auto --nginx | ||
+ | |||
+ | |||
+ | |||
+ | Заказать wildcard | ||
+ | |||
+ | ./certbot-auto -d 3book.ru -d *.3book.ru --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly | ||
+ | |||
+ | В консоле выведет инфу, которую надо добавить в dns txt запись | ||
+ | |||
+ | Меняем на селектеле в dns и проверяем, чтоб она обновилась | ||
+ | |||
+ | dig -t txt _acme-challenge.3book.ru | ||
+ | |||
+ | Запускаем | ||
+ | ./certbot-auto на этот домен еще раз - готово, теперь осталось перезапустить nginx | ||
+ | |||
+ | Тоже на три месяца =( | ||
+ | |||
+ | </file> | ||
+ | |||
+ | |||
+ |