- Установка и настройка: Nginx + php5-fpm
- Установка и настройка
- Пример конфига
- Безопасность
- Установка Nginx 0.8.54
- Debian «Squeeze»
- Установка
- Конфигурирование
- Конфигурирование nginx
- Конфигурирование php-fpm
- См. также
- Установка NGINX и PHP-FPM на Debian 10
- Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
- Устанавливаем PHP-FPM
- Настраиваем NGINX
- Похожие записи
- Установка LAMP (Linux, Apache, MySQL, PHP)
- Установка PostgreSQL из исходников, и запуск двух версий на одном сервере в Centos 8
- Установка почтового сервера iRedMail на CentOS 7. Часть 4. Настройка Postfix, авторизация без ввода домена
- Установка Docker Compose в Centos 7
- Автоматическое переподключение WireGuard при обрыве соединения
Установка и настройка: Nginx + php5-fpm
В данной заметке, будет показано как поставить связку Nginx + php5-fpm (php5.3) на Debian Lenny и настроить безопасную конфигурацию.
Установка и настройка
Важно: все команды от root’а.
Добавляем репозитарии и генерируем ключи:
echo "deb http://backports.debian.org/debian-backports lenny-backports main" >> /etc/apt/sources.list echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list gpg --keyserver keys.gnupg.net --recv-key 89DF5277 && gpg -a --export 89DF5277 | apt-key add -
aptitude install -t lenny-backports "nginx" apt-get install php5-cli php5-common php5-suhosin apt-get install php5-fpm php5-cgi
user www-data; worker_processes 1; # Ставим число по количеству ядер timer_resolution 100ms; worker_rlimit_nofile 8192; worker_priority -5; #Увеличитвваем приоритет error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events < worker_connections 1024; >http < include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_min_length 1100; #gzip_disable "msie6"; #Быстрее, но работает только на новых версиях nginx gzip_disable "MSIE 4\.(. *SV1)"; gzip_proxied any; gzip_comp_level 4; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_vary on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; >
Пример конфига
Конфиг для использования с CMS WordPress, с учетом использования chroot /etc/nginx/sites-enabled/example.ru :
server < listen 80; server_name www.example.ru; rewrite ^ http://example.ru$request_uri? permanent; #301 redirect >server < listen 80; server_name example.ru; root /var/www/example.ru; index index.php; location / < try_files $uri $uri/ /index.php?q=$uri&$args; >location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ < access_log off; expires max; >location ~ \.php$ < # fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /example.ru; fastcgi_param SCRIPT_FILENAME /example.ru$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /example.ru$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; >location = /favicon.ico < log_not_found off; access_log off; >location = /robots.txt < allow all; log_not_found off; access_log off; >## Disable viewing .htaccess & .htpassword location ~ /\.ht < deny all; >>
apt-get install mysql-server mysql-client php5-mysql mkdir -p /var/www/var/run/mysqld mount --bind /var/run/mysqld/ /var/www/var/run/mysqld/
mkdir -p /var/www/example.ru echo "" >/var/www/example.ru/index.php
/etc/init.d/nginx restart /etc/init.d/php5-fpm restart
Безопасность
chown -R www-data /var/www/example.ru && chmod -R 750 /var/www/example.ru
Включим использование chroot, для ограничения доступа PHP к системе. Для этого редактируем файл /etc/php5/fpm/php5-fpm.conf, прописываем:
mkdir /var/www/; cp /etc/hosts /var/www/etc/hosts; cp /etc/resolv.conf /var/www/etc/resolv.conf; cp /lib/libnss_dns.so.2 /var/www/lib/libnss_dns.so.2 //ваша система 32 битная cp /lib64/libnss_dns.so.2 /var/www/lib64/libnss_dns.so.2 //ваша система 64 битная
Заходим на страницу нашего сайта example.ru и любуемся на вовод phpinfo() нашего сайта.
P.S. C настройками мне помог разобраться inkvizitor68sl автор блога Debian.pro.
NEW:
Установка Nginx 0.8.54
apt-get update apt-get install libxml2-dev libbz2-dev libcurl4-openssl-dev libmcrypt-dev libmhash2 libmhash-dev libpcre3 libpcre3-dev make wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz tar zxf nginx-0.8.54.tar.gz cd nginx-0.8.54 ./configure \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-client-body-temp-path=/var/lib/nginx/body \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-log-path=/var/log/nginx/access.log \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --lock-path=/var/lock/nginx.lock \ --pid-path=/var/run/nginx.pid \ --with-debug --with-http_dav_module \ --with-http_gzip_static_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_sub_module make && make install
Debian «Squeeze»
echo "deb http://packages.dotdeb.org squeeze all" >> /etc/apt/sources.list wget http://www.dotdeb.org/dotdeb.gpg && cat dotdeb.gpg | apt-key add - && aptitude update
UPD: Добавил пару строк в установку mysql, указание в настройках localhost теперь работает. Спасибо inkvizitor68sl.
Установка
До окончания настроек рекомендуется остановить nginx и php-fpm:
/etc/init.d/nginx stop; /etc/init.d/php5-fpm stop;
Конфигурирование
Конфигурирование nginx
Нужно создать location в котором указать рабочую директорию для php скриптов (например /home/www-data/mysite ) и параметры соединения с php-fpm:
server #имя сервера: server_name mysite.com; #логи access_log /var/log/nginx/mysite.access.log; error_log /var/log/nginx/mysite.error.log; # корневая директория root /home/www-data/mysite; location ~ \.php$ try_files $uri = 404; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; > # порядок индексов location / index index.php index.html index.htm; > #кастомная страница 404 location /errors alias /home/www-data/mysite/errors ; > error_page 404 /errors/404.html; >
Конфигурирование php-fpm
- static — фиксированное число дочерних процессов (определяться параметром pm.max_children);
- dynamic — число дочерних процессов определяется на основе следующих директив. В этом режиме всегда будет хотя бы 1 дочерний процесс.
- ondemand — по требованию, дочерние процессы не будут созданы при старте. Дочерние процессы создаются при помощи fork, когда приходит новый запрос на соединение.
По умолчанию соединение происходит через Unix-сокеты, unix:/var/run/php5-fpm.sock;
Более подробную информацию о директивах конфигурационного файла Вы можете найти на сайте проекта php-fpm configuration file.
См. также
Установка NGINX и PHP-FPM на Debian 10
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
user@debian:~# sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
user@debian:~# sudo ufw allow 'Nginx FULL'
Устанавливаем PHP-FPM
Поскольку Nginx не содержит нативную обработку PHP, нам нужно установить fpm, что означает «менеджер процессов fastCGI». Мы скажем Nginx передать PHP-запросы этому программному обеспечению для обработки
user@debian:~# apt install php-fpm
user@debian:~# apt install php-mysql php-bcmath php-ctype php-json php-mbstring php-pdo php-tokenizer php-xml php-curl
Настраиваем NGINX
user@debian:~# sudo mkdir -p /var/www/%site_name%/
user@debian:~# sudo nano /etc/nginx/sites-available/%site_name%.conf server < listen 80; listen [::]:80; root $root_path; set $root_path /var/www/%site_name%/htdocs; set $php_sock unix:/var/run/php/php7.3-fpm.sock; index index.php index.html index.htm; server_name %site_name%; access_log /var/www/%site_name%/logs/access.log; error_log /var/www/%site_name%/logs/error.log; location / < try_files $uri $uri/ =404; >location ~ \.php$ < include snippets/fastcgi-php.conf; fastcgi_pass $php_sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; >>
user@debian:~# sudo ln -s /etc/nginx/sites-available/%site_name%.conf /etc/nginx/sites-enabled/
user@debian:~# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
user@debian:~# systemctl restart nginx php7.3-fpm
user@debian:~# sudo nano /etc/hosts 127.0.0.1 %site_name%
У блога появился новый хостинг от компании Selectel.
Нашли интересную или полезную информацию в блоге? Хотели бы видеть на нем еще больше полезных статей? Поддержи автора рублем. Если вы размещаете материалы этого сайта в своем блоге, соц. сетях, и т.д., убедительная просьба публиковать обратную ссылку на оригинал.
Похожие записи
Установка LAMP (Linux, Apache, MySQL, PHP)
Добавляем репозиторий Atomic
[root@virtual ~]# wget -q -O – http://www.atomicorp.com/installers/atomic.sh | sh[root@virtual ~]# sh atomic.sh
Устанавливаем пакеты:
[root@virtual ~]# yum -y install httpd php mysql mysql-server php-mysql php-pear php-pdo php-pgsql php-pecl-memcache php-gd php-mbstring php-mcrypt php-xml
Запускаем MySQL:
[root@virtual ~]# service mysqld start
Задаем root-пароль для MySQL:
[root@virtual ~]# mysqladmin -u root password ‘ENTER-PASSWORD-HERE’
Коннектимся к MySQL и удаляем тестовую базу
[root@virtual ~]# mysql -u …
Установка PostgreSQL из исходников, и запуск двух версий на одном сервере в Centos 8
PostgreSQL from sources PostgreSQL — свободная объектно-реляционная система управления базами данных, наиболее развитая из открытых СУБД и являющаяся реальной альтернативой коммерческим базам данных. PostgreSQL базируется на языке SQL. Подготовка Устанавливаем необходимые пакеты $ sudo dnf -y install gcc make readline-devel zlib-devel systemd-devel Создаем системного пользователя postgres $ sudo useradd -M -s -d /var/lib/postgresql postgres Создаем каталог для логов PostgreSQL и назначаем права $ …
Установка почтового сервера iRedMail на CentOS 7. Часть 4. Настройка Postfix, авторизация без ввода домена
Установка почтового сервера iRedMail. Настройка Postfix, авторизация без ввода домена Postfix — агент передачи почты (MTA — mail transfer agent). Postfix является свободным программным обеспечением, создавался как альтернатива Sendmail. Изначально Postfix был разработан Вейтсом Венемой в то время, когда он работал в Исследовательском центре имени Томаса Уотсона компании IBM. Цикл статей по установке и настройке почтового сервера …
Установка Docker Compose в Centos 7
Docker, Docker Compose Docker Compose – пакетный менеджер позволяющий описывать необходимую структуру в одном файле (конфиге). Установка Docker Устанавливаем необходимые пакеты $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 Добавляем репозиторий docker-ce $ sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo Устанавливаем Docker-CE $ sudo yum install -y docker-ce Добавляем нашего пользователя, под которым настраиваем ОС, в группу Docker $ sudo usermod -aG docker $(whoami) Применяем изменения к группам $ newgrp …
Автоматическое переподключение WireGuard при обрыве соединения
WireGuard auto reconnect Протокол WireGuard VPN разработан без сохранения состояния. Соединения рассматриваются как интерфейс — когда они активны, они всегда остаются активными. Если соединение с VPN-сервером потеряно, интернет-соединение перестает работать до тех пор, пока VPN-сервер снова не станет доступным. Как только VPN-сервер снова становится доступным, WireGuard повторно устанавливает VPN-соединение, и трафик снова начинает проходить. Иногда возникают ситуации, …