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, хотя это не важно.

Открываем под админом 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$ {
                                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                                fastcgi_pass unix:/run/php-fpm/www.sock;
                                fastcgi_index index.php;
                                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                include fastcgi_params;
                                fastcgi_read_timeout 300;
                        }
        }

Меняем путь сокета в /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
setenforce 1

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

После директивы 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
max_allowed_packet = 128M
default_storage_engine=InnoDB
innodb_large_prefix=on

конфиг php

/etc/php.ini


session.save_path=/tmp
short_open_tag=On
date.timezone=Europe/Moscow

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


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

Leave a comment

Your email address will not be published.


*