Главная > CentOS > Установка nginx+php+mysql+VSftpd на CentOS6.5

Установка nginx+php+mysql+VSftpd на CentOS6.5

Буду я разворачивать всю эту связку с нуля.
Mysql я буду использовать на базе Percona-Server он полностью совместим со стандартным Mysql но гораздо выше по производительности.
Поэтому для начала его установим

yum install Percona-Server-client-56.x86_64 Percona-Server-server-56.x86_64

После настраиваем безопасность

mysql_secure_installation

Включаю в автозапуск

chkconfig --level 345 mysql on

Далее мне понадобится PHP

yum install php php-fpm

Включаю в автозапуск

chkconfig --level 345 php-fpm on

Настраиваем PHP-FPM:

vi /etc/php-fpm.d/www.conf
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;	will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
Заменяем listen = 127.0.0.1:9000 на listen = /tmp/php-fpm.sock


Редактируем /etc/php-fpm.conf

emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 10

Подредактируем php.ini

vi /etc/php.ini
было:    ;cgi.fix_pathinfo = 1
стало:    cgi.fix_pathinfo = 0
date.timezone = Asia/Novosibirsk

Подробнее о cgi.fix_pathinfo можно почитать тут: http://www.php.net/manual/ru/ini.core.php#ini.cgi.fix-pathinfo
Перезапустим сервис

service php-fpm restart

Далее мы добавляем репозиторий, создаем файл /etc/yum.repos.d/nginx.repo и вставляем в него:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

После этого устанавливаем сам nginx

yum install nginx.x86_64

После установки запускаем его:

service nginx start

Включаю в автозапуск

chkconfig --level 345 nginx on

И добавить себя в группу nginx.
usermod -a -G nginx root
Редактируем конфиг Nginx под свои нужды, он находится здесь /etc/nginx/nginx.conf.

Базовая настройка Nginx
Сделайте резервную копию конфигурационных файлов :

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.back

Откройте файл конфигурации nginx /etc/nginx/nginx.conf и измените значение параметра worker_processes. Оно должно равняться количеству процессоров на Вашем сервере.

worker_processes 1;

Чтобы узнать количество процессоров выполните следующую команду :

lscpu | grep '^CPU(s)'

Разрешите сжатие, раскомментировав следующую строку :

gzip on;

Сохраните и закройте файл.

Открытие фаервола для Nginx
Отредактируйте файл /etc/sysconfig/iptables, если Вы пользуетесь фаерволом. Добавьте следующую строку, перед строкой REJECT, для открытия порта 80 :

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Сохраните и закройте файл. Перезапустите фаервол.

service iptables restart

Для того чтобы убедиться что Nginx успешно установлен, введите имя сервера или его IP-адрес в веб-браузере.
Вы должны увидеть страницу «Welcome to Nginx!».

Создаем папку куда мы поместим файлы нашего веб содержимого.

mkdir -p /var/www/nginx/myfolder

Копируем файлы сайта
Устанавливаем права на директории

chown nginx:nginx -R /var/www/nginx/myfolder
chown nginx:nginx -R /var/lib/php/session
chmod -R a-rwx,u+rwX,g+rX -R /var/www/nginx/myfolder

Создаем файл виртуальной директории vi /var/www/nginx/myfolder/myfolder_v_host.conf

server {
	listen 80;
	server_name example.com;
	rewrite ^(.*) http://www.example.com$1 permanent; }
 
	server {
	listen 80;
	server_name www.example.com;
 
	client_max_body_size 5m;
	client_body_timeout 60;
 
	access_log /var/log/nginx/myfolder.tld-access;
	error_log /var/log/nginx/myfolder.tld-error error;
 
	root /var/www/nginx/myfolder/;
	index index.php;
 
	location / {
	try_files $uri $uri/ /index.php?$args; }
 
	error_page 403 =404;
	location ~ /\. { access_log off; log_not_found off; deny all; }
	location ~ ~$ { access_log off; log_not_found off; deny all; }
 
	location = /robots.txt { access_log off; log_not_found off; }
	location = /favicon.ico { access_log off; log_not_found off; }
 
	location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
	location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
	location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; }
 
	location ~ \.php?$ {
	try_files $uri =404;
	include fastcgi_params;
	fastcgi_pass unix:/tmp/php-fpm.sock;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_intercept_errors on;
	fastcgi_split_path_info ^(.+\.php)(.*)$; }
}

Создаем виртуальную ссылку

cd /etc/nginx/conf.d/
ln -s /var/www/nginx/myfolder/myfolder_v_host.conf

Перезапустим nginx

service nginx restart

По сути на этом все!

Но я бы хотел еще упомянуть про установку joomla.
Создаем базу

# mysql -uroot -p
mysql> create database joomlaDB;
mysql> grant all on joomlaDB.* to joomla@localhost identified by 'sEcReT_pASsWoRd';
mysql> \q

Скачиваем последнюю версию и распаковываем в наш каталог.

cd /var/www/nginx/myfolder/mydomain.tld
wget http://joomlacode.org/gf/download/frsrelease/18838/86936/Joomla_3.2.0-Stable-Full_Package.zip -O joomla.zip
unzip joomla.zip
rm joomla.zip

Правим разрешения

chown -R nginx:nginx /var/www/nginx/myfolder

Для закачки контента на свой сайт я решил поставить VSftpd FTP Сервер
Для установки VSftpd FTP Сервера, выполним следующую команду :

yum install vsftpd

На всякий случай, сделаем резервную копию конфигурационного файла ‘vsftpd.conf’ :

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

Откроем файл настроек :

vi /etc/vsftpd/vsftpd.conf

Смотрите мануал по vsftpd.conf, чтобы узнать обо всех опциях. http://centos.name/?page/howto/Install-Vsftpd
Проверяем минимальные настройки:

Опция Описание
anonymous_enable=NO Запрещаем анонимный доступ
local_enable=YES Разрешаем доступ локальным пользователям
write_enable=YES Даем пользователям FTP права на запись
connect_from_port_20=NO Отключаем 20 порт, уменьшает привилегии VSftpd
chroot_local_user=YES Chroot всех пользователей
local_umask=022 Устанавливаем маску 022, чтобы быть уверенными в том, что для всех файлов (644) и папок (755) которые мы закачиваем, устанавливаются соответствующие права

Добавление нового FTP Пользователя
Создадим нового пользователя, назовем его ‘ftpuser’ и назначим ему домашнюю директорию ‘/var/www/nginx/myfolder/’ :

useradd -d '/var/www/nginx/myfolder/' -s /sbin/nologin ftpuser

Установим пароль для нового пользователя :

passwd ftpuser

Создаем группу ‘ftpusers’ для FTP пользователей, и добавляем в нее ‘ftpuser’ :

usermod -G nginx ftpuser
usermod -G ftpusers nginx

Настройка Фаервола для VSftpd
Если Вы используете IPTABLES, необходимо создать соответствующее правило для VSftpd :

vi /etc/sysconfig/iptables

Добавьте следующую строку, перед REJECT строкой, для открытия 21 порта :

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

Сохраните и закройте файл. Перезапустите фаервол.

service iptables restart

Настраиваем сервис VSftpd на запуск при загрузке системы

chkconfig --levels 235 vsftpd on

Стартуем VSftpd FTP сервис.

service vsftpd start

Вот и все!

Categories: CentOS Tags: