nginx + php-fpm на vps centos 7, ubuntu

Развернем сервачок на vps под centos 7 или убунту. Покупаем любой за 150 рублей. После активации поставим последнюю версию php , nginx. Об установке писать не буду, вкратце опишу конфиги. Обратите внимание на наличие свопа, без него mysql будет частенько падать с памятью 256-512 Мб. Как поставить swap есть хорошая статья https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps. Также не помешает проверить частоту процессора командой cat /proc/cpuinfo, лучше будет от 2000Mhz, чем 500, хотя это не важно.

adduser aaa
passwd aaa
// useradd аналог, но придется все делать вручную в том числе создавать домашний каталог.

Открываем под админом www.conf


// centos
nano /etc/php-fpm.d/www.conf
// ubuntu
nano /etc/php/7.0/fpm/pool.d/www.conf

Меняем пользователя с php-fpm на своего


user = aaa
group = aaa

listen.owner = aaa
listen.group = aaa

Раскомментируем строку сокета


// centos
listen = /run/php-fpm/www.sock
// ubuntu
listen = /run/php/php7.0-fpm.sock

И чтобы не возникало ошибки 403 наподобие этой

connect() to unix:/run/php-fpm/www.sock failed (13: Permission denied) while connecting to upstream

разрешаем нашему пользователю доступ к сокету.


listen.acl_users = aaa

или просто рестартанем php-fpm


service php-fpm restart

Ошибка

ERROR: [pool www] cannot get uid for user ‘apache’: Success (0)

говорит что надо убрать пользователя apache из конфига, ибо апача у вас нет.
Другие ошибки смотрим cat /var/log/php-fpm/error.log

Nginx

Переходим в папку nginx , конфиг nginx.conf


cd /etc/nginx

Меняем пользователя nginx на своего


user                    aaa;
// создаем директорию для php скриптов
mkdir /home/aaa/www

И настройки сервера, с указанием сокета, в зависимости от ОС


      	server {
            listen 80;
            server_name localhost;
            index index.php index.html index.htm;
            root /home/aaa/www/;
                        location ~ \.php$ {
# centos
                                fastcgi_pass unix:/run/php-fpm/www.sock;
# debian
# 				fastcgi_pass unix:/run/php/php7.0-fpm.sock;

                                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                fastcgi_read_timeout 300;
# когда проблемы с памятью
                        fastcgi_param PHP_VALUE "memory_limit = 1000M";
# полезные конфиги
                        fastcgi_buffers 4 256k;
                        fastcgi_busy_buffers_size 256k;
                        fastcgi_temp_file_write_size 256k;

                        }
        }

Меняем путь сокета в /etc/nginx/conf.d/php-fpm.conf


upstream php-fpm {
        #server 127.0.0.1:9000;
        server unix:/run/php-fpm/www.sock;
}

Если выдает ошибку 503

connect() failed (111: Connection refused) while connecting to upstream

проверьте путь к сокету.
Если сервер не стартует, выдает ошибки 403,404, 503 — смотрите логи nginx /var/log/nginx/error.log

Под Centos частенько бывает ошибка

is forbidden (13: Permission denied), client: 127.0.0.1

дело как обычно в Selinux. Решается просто


//semanage permissive -a httpd_t
//semanage permissive -d httpd_t
setenforce 0

Открыть порт 80 для centos

firewall-cmd --list-all
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
// services: ssh dhcpv6-client http

iptables порты

// список открытых
iptables -L -v -n
// 
iptables -I INPUT -p tcp --dport 25 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
//
service iptables save
// права
chown -R user:user /var/lib/nginx

Виртуальные хосты

После директивы server{} добавляем


include sites-enabled/*;

Конфиг mysql

/etc/my.cnf

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

collation-server = utf8_unicode_ci 
init-connect='SET NAMES utf8' 
character-set-server = utf8 
// тут можно и 256 если совсем все плохо
max_allowed_packet = 128M 
default_storage_engine=InnoDB 
innodb_large_prefix=on 
sql-mode=""
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

конфиг php

/etc/php.ini


session.save_path=/tmp
short_open_tag=On
date.timezone=Europe/Moscow
; для битрикс
max_input_vars = 100000

а также, чтобы сессия работала,


chown -R aaa:aaa /var/lib/php

Отправка почты

также может не работать отправка почты. Проверяем

php -a
mail('test@mail.ru', 'My Subject', 'message');

ошибки

/usr/sbin/sendmail: not found

cannot connect to 127.0.0.1, port 25: В соединении отказано

значит нет почтового сервера. Можно поставить sendmail, exim или postfix .

yum install sendmail
service sendmail start 
systemctl enable sendmail.service

Leave a comment

Your email address will not be published.


*