Настройка VPS сервера на CentOS 6 с нуля, для чата VOC++BSE NginX mod_voc
В данной статье будут рассмотрены вопросы настройки VPS сервера на CentOS 6 с нуля, для чата VOC++BSE
Что будет на борту - NginX PHP-FPM 5.5, MariaDB(MySQL)5.5, mod_voc
Также выложены файлы -
daemon_x_86_64.cpp(Демон на С++ переделанный для работы в 64-битной система с mod_voc и NginX)
ngx_http_voc_module.c (Модуль для NginX на С переделанный для работы в 64-битной система с NginX)
Приступим
Итак хостер прислал вам данные для доступа к серверу, все что нам потребуется это IP-адрес сервера, и пароль для учетной записи root
Идем на сайт - http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
и качаем программу эмулятор терминала PuTTY, через нее мы и будем работать.
Откроем программу в поле Host Name (or IP adress) вводим IP-адрес вашего сервера
Далее, программа попросит ввести логин для авторизации, введите root
Далее, программа попросит вас ввести пароль, введите пароль который вам прислал хостер (Внимание! Пароль, который Вы будете вводить, отображаться не будет, т.е. курсор будет неподвижен. Пароль надо вводить "вслепую".)
Если все сделанно правильно, вам будет отображаться [root@localhost ∽]# или что-то похожее -
Установим локаль по умолчанию UTF-8
LANG="ru_RU.UTF-8"
Установим Midnight Commander(аналог Norton Commander в windows)
yum install mc
Подключим дополнительные репозитории.
rpm -ihv http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
Установка MariaDB(MySQL)
Для установки проделаем следующее
yum install mysql.`uname -i` yum-plugin-replace
yum replace mysql --replace-with mysql55w
yum install mysql55w mysql55w-server
Добавим MySQL в автозагрузку и запустим MySQL-сервер
chkconfig --levels 235 mysqld on
service mysqld start
Запустим конфигурацию MySQL
/usr/bin/mysql_secure_installation
У вас запросит пароль root от MySQL:
Enter current password for root:
Так как сервер устанавливается с нуля, пароля нет, поэтому нажмем просто Enter.
Далее вам будут заданны вопросы -
Set root password? [Y/n]
Установить новый пароль для root MySQL?
Жмем Y - да
New password: вводим пароль суперпользователя на mysql
Придумайте пароль посложнее и введите его 2 раза(Внимание! Пароль, который Вы будете вводить, отображаться не будет, т.е. курсор будет неподвижен. Пароль надо вводить "вслепую").
Если трудно придумать сложный пароль, можете воспользоваться нашим сервисом - генератор паролей
Remove anonymous users? [Y/n]
Удалить анонимных пользователей? Жмем Y - да
Remove test database and access to it?
Удалить тестовую базу? Жмем Y - да
Reload privilege tables now?
Перегрузить привелегии пользователей? Жмем Y - да
Создадим новую базу и пользователя MySQL
mysql -p
CREATE DATABASE `vocbase`;
GRANT ALL PRIVILEGES ON vocuser.* TO 'vocbase'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
Этими командами мы создали базу - vocbase, пользователя с именем - vocuser и паролем - my_password, а также дали этому пользователю привелегии на созданную базу.
Для того чтобы покинуть настройки MySQL наберите -
\q
Установка NginX
"<combr /> "Легким движением ./configure && make && make install
<combr /> нормальный дистрибутив превращается в слакварь :)" ;)))" (c)Bash
Так как мы собираемся запускать чат с поддержкой mod_voc, нам придется собирать NginX из исходников.
Идем на сайт - http://nginx.org/ru/download.html
Смотрим последнюю версию NginX, на сегодня это - nginx-1.7.9
создаем и переходим в папку - /etc/nginx/
mkdir /etc/nginx/
cd /etc/nginx/
Качаем при помощи wget последнюю версию NginX
wget http://nginx.org/download/nginx-1.7.9.tar.gz
Распакуем файлы
tar zxf nginx-1.7.9.tar.gz
Запустим Midnight Commander
mc
Переходим в папку на сервере /etc/nginx/nginx-1.7.9/auto/
Выделим файл modules и нажмем на клавиатуре F4 для его редактирования
После строк
# Copyright (C) Nginx, Inc.
Допишем внимательно и без ошибок следующее
HTTP_MODULES="$HTTP_MODULES ngx_http_voc_module"
HTTP_SRCS="$HTTP_SRCS src/http/modules/ngx_http_voc_module.c"
После этого нажмем F2 чтобы сохранить и F10 2раза для выхода из Midnight Commander
Переходим в папку /etc/nginx/nginx-1.7.9/src/http/modules/
cd /etc/nginx/nginx-1.7.9/src/http/modules/
Теперь нам надо узнать какая у нас на сервере система 32-битная или 64-битная намираем
uname -a
Вам выдаст строку внимательно осмотрите ее
Если в строке встречается выраажение - x86_64, то у вас 64-битная система
А если в строке встречается выраажение - i386, то у вас 32-битная система
Теперь в зависимости от системы надо закачать ngx_http_voc_module.c
Для 32-битной системы команда
wget http://voc.cvs.sourceforge.net/viewvc/voc/voc/data/daemon/ngx_http_voc_module.c
Для 64-битной системы mod_voc был переделан и поэтому надо качать с моего сайта, команда -
wget http://doctormario.ru/ngx_http_voc_module.c
Закачали? Ну и отлично займемся сборкой
Для того чтобы собрать NginX а в последствии и демона, установим gcc-компиллятор а также инструменты разработчика
yum groupinstall 'Development Tools'
yum install gcc gcc-c++ kernel-devel pcre-devel GeoIP-devel libxslt-devel openssl-devel
Переходим в папку /etc/nginx/nginx-1.7.9/
cd /etc/nginx/nginx-1.7.9/
Конфигурируем NginX с модулями следующей немножко длинной командой
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
если конфигурация прошла успешно то мы увидим что то вроде
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/etc/nginx"
nginx binary file: "/usr/sbin/nginx"
nginx configuration prefix: "/etc/nginx"
nginx configuration file: "/etc/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/var/cache/nginx/client_temp"
nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
Собираем NginX
make
make install
Если вы собираете для 64 битной системы, с модулем с моего сайта, тогда все должно пройти без ошибок
Если вы собираете для 32-битной системы, с модулем с сайта Влада, тогда возможны ошибки
В этом случае повторите конфигурирование и попытайтесь собрать с игнорированием ошибок командами
make -i
make install-i
nginx будет установлен в каталог /etc/nginx/, директорию nginx-1.7.9 и архив nginx-1.7.9.tar.gz можно удалить.
Делаем скрипт испольняемым
/etc/rc.d/init.d/nginx
chmod +x /etc/rc.d/init.d/nginx
Теперь надо создать группу и пользователя NginX
Добавить NginX в автозагрузку.
А также добавить Nginx в исключения iptables
И запустить NginX
Все это делается при помощи следующих команд
groupadd nginx
useradd -g nginx nginx
chkconfig --levels 235 nginx on
service iptables stop
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables-save > /etc/sysconfig/iptables
service iptables start
service nginx start
Установим PHP и модули
yum --enablerepo=remi,remi-php55 install php php-opcache php-xml php-pecl-jsonc php-mbstring php-cli php-fpm php-mysqli php-gd gd gd-devel
Закроем уязвимость откроем
/etc/php.ini
Вместо
;cgi.fix_pathinfo = 1
Вставим
cgi.fix_pathinfo = 0
Подробности уязвимости на
http://php.net/manual/ru/ini.core.php#ini.cgi.fix-pathinfo
http://habrahabr.ru/post/100961/
Откроем
/etc/php-fpm.d/www.conf
Вместо
user = apache
group = apache
Вставим
user = nginx
group = nginx
Запустим PHP-FPM и добавим его в автозагрузку
chkconfig --levels 235 php-fpm on
service php-fpm start
Теперь чтобы работали сессии надо поставить разрешения для записи на session.save_path
chmod 777 -R /var/lib/php/session/
Конфигурируем NginX
Содержимое файла /etc/nginx/nginx.conf
меняем на это
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name ""; #default
return 444;
}
server {
listen 80;
server_name vochat.ru;
location / {
root /var/www/vhosts/vochat.ru;
index index.php index.html index.htm;
}
location /vocd {
voc /tmp/vochat;
}
location ~ \.php$ {
root /var/www/vhosts/vochat.ru;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Создадим каталог vochat.ru в каталоге /var/www/vhosts/
mkdir /var/www/vhosts/vochat.ru/ [/code]
http://doctormario.ru/voc_ssh.html
Далее редактируем URL демона в чате.
Тут возможно несколько вариантов на ваш вкус -
Первый вариант - в админке чата, в Параметры демона и URL чата в поле URL демона ставим
http://ваш_чат/vocd
или
Второй вариант - в chat/voc.php
строки
if ($chat_type=="tail") $shower = "$daemon_url?$session";
заменяем на
if ($chat_type=="tail") $shower = $chat_url."vocd?".$session;
2 раза
Этот вариант более предпочтителен, если у вас есть моды, использующие переменную - $daemon_host
Не забывайте!!! Если чат расположен не в корневой папке сайта, а например в папке ваш_сайт/chat/. перед /vocd и в первом и втором варианте надо заменить на /chat/vocd.
Убедитесь что в файле data/daemon/daemon.cpp не закомментирована поддержка mod_voc примерно 24 строка должна иметь вид -
#define SUPPORT_MOD_VOC 1
11. В админке чата в в Параметры демона и URL чата установить режим работы демона mod_voc.
Откомпилировать демона командой -
для Linux
g++ -O3 -DSUPPORT_MOD_VOC daemon.cpp -o daemon
для FreeBSD командой -
g++ -O3 -DSUPPORT_MOD_VOC daemon_bsd.cpp -o daemon
Запускаем демона командой -
./daemon
Смотрим -
http://ваш_чат/vocd?stat
при правильной установке, и при наличии хоть 1 юзера в чате, должна показываться информация см. Картинку(увеличивается) -
Ну и бонус для пользователей 64-битной системы исправленный демон а также модуль mod_voc
Автор инструкции Marik. doctormario.ru
при перепечатке ссылка и указание автора обязательно
Комментарии 1