Установка Nginx+PHP-FPM+MySQL CentOS 6
Roman Bogachev
VMware Specialist | Drone Pilot | Traveler
Настройка веб-сервера на базе NGINX с установкой PHP-FPM как fastcgi и MySQL в качестве базы данных.
Устанавливаем необходимые репозитории
1 2 3 4 5 rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Создадим файл /etc/yum.repos.d/nginx.repo
и добавим в него следующие строки:
1 2 3 4 5 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever /$basearch / gpgcheck=0 enabled=1
Устанавливаем Nginx, PHP и PHP-FPM 1 yum --enablerepo=remi,remi-php55 install nginx php-fpm php-common
1 yum --enablerepo=remi,remi-php55 install php-pecl-apc php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-dom
Если необходима 6-ая или 7-ая версия PHP, то изменим репозиторий remi-php55
на необходимый, например remi-php70
.
Запускаем NGINX и PHP-FPM 1 2 service nginx start service php-fpm start
Настраиваем автостарт Добавляем параметры автостарта для NGINX и PHP-FPM 1 2 3 4 5 chkconfig --add nginx chkconfig --levels 235 nginx on chkconfig --add php-fpm chkconfig --levels 235 php-fpm on
Приступаем к непосредственной настройке web-сервера: Создаем папку под сайт
1 2 3 mkdir -p /srv/www/example.com/public_htmlmkdir /srv/www/example.com/logschown -R apache:apache /srv/www/example.com
альтернативный вариант:
1 2 3 4 mkdir -p /srv/www/testsite.local/public_htmlmkdir -p /var/log/nginx/testsite.localchown -R apache:apache /srv/www/testsite.localchown -R nginx:nginx /var/log/nginx
Я использую пользователя и группу apache
, потому что php-fpm
по-умолчанию их использует. Можно изменить в его настройках.
Создаем и настраиваем каталог под виртуальные хосты 1 2 mkdir /etc/nginx/sites-availablemkdir /etc/nginx/sites-enabled
Добавляем в файл /etc/nginx/nginx.conf
следующие строки после “include /etc/nginx/conf.d/*.conf”
1 2 include /etc/nginx/sites-enabled/*;
Создаем файл в директории /etc/nginx/sites-available/
с названием хоста, в нашем случае example.com и добавим туда следующие настройки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 server { server_name example.com; access_log /srv/www/example.com/logs/access.log; error_log /srv/www/example.com/logs/error .log; root /srv/www/example.com/public_html; location / { try_files $uri $uri / /index.html; } location ~ /\.ht { deny all; } location ~ /\. { deny all; access_log off ; log_not_found off ; } location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { try_files $uri =404 ; } location ~* .php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000 ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public_html$fastcgi_script_name ; } }
Подключаем наш виртуальный хост: 1 2 3 cd /etc/nginx/sites-enabled/ln -s /etc/nginx/sites-available/example.comservice nginx restart
Прописываем правила доступа в iptables
: Для этого добавим строчку в файл /etc/sysconfig/iptables
1 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Перезагружаем сервис 1 service iptables restart
Если возникает 403 ошибка 1 chcon -R -t httpd_sys_content_t /srv/www/example.com/public_html
Альтернативный вариант
1 chcon -R -t httpd_sys_rw_content_t /srv/www/example.com/public_html