Slyweb
На разработку сайта! Скидки 50%!

Сам себе хостер!

jQuery и CSS

Привет! Хорошая настройка Apache (mtm.itk) + PHP + Nginx + Mysql

Далее зайдите в /etc/httpd/conf/httpd.conf и пропишите:

  • Код
  • Чистый код
  • Копировать в буфер
  1.<VirtualHost 37.230.112.175:80 >
  2.        ServerName 37.230.112.175
  3.        CustomLog /var/www/sait/data/logs/37.230.112.175.access.log combined
  4.        DocumentRoot /var/www/sait/data/www/sait.com/public
  5.        ErrorLog /var/www/sait/data/logs/37.230.112.175.error.log
  6.        ServerAdmin mail@mail.ru
  7.        #ServerAlias www.sait.com
  8.        #SuexecUserGroup jquery jquery
  9.        AssignUserId sait sait
10.        AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
11.        AddType application/x-httpd-php-source .phps
12.        php_admin_value open_basedir "/var/www:."
13.        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f eap1985@rambler dot ru"
14.        php_admin_value upload_tmp_dir "/var/www/sait/data/mod-tmp"
15.        php_admin_value session.save_path "/var/www/sait/data/www/sait.com/public/tmp/"
16.        #php_admin_value apc.rfc1867 On
17.        #php_admin_value apc.rfc1867_freq 10k
18.</VirtualHost>
19.

        

Mysql

Для пользователя впервые нужно установить пароль:

  • Код
  • Чистый код
  • Копировать в буфер
  1.mysqladmin -u root password newpass

        

Nginx

Далее следует настройка конфигурационного файла Nginx и отдельных хостов:

  • Код
  • Чистый код
  • Копировать в буфер
  1.yum install nginx

        

Далее зайдите в /etc/nginx/nginx.conf и пропишите:

  • Код
  • Чистый код
  • Копировать в буфер
  1.user apache;
  2.worker_rlimit_nofile 100000;
  3.worker_processes 1;
  4.
  5.error_log /var/log/nginx/error.log warn;
  6.pid        /var/run/nginx.pid;
  7.
  8.events {
  9.    worker_connections 1024;
10.}
11.
12.
13.http {
14.    include     /etc/nginx/mime.types;
15.    default_type application/octet-stream;
16.    client_body_buffer_size 5m;
17.    client_max_body_size 50m;
18.    upload_progress proxied 1m;
19.
20.    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
21.                     '$status $body_bytes_sent "$http_referer" '
22.             '$request_body '
23.                     '"$http_user_agent" "$http_x_forwarded_for"';
24.
25.    access_log /var/log/nginx/access.log main;
26.
27.    #output_buffers 1 32k;
28.    #postpone_output 1460;
29.
30.    sendfile        on;
31.    tcp_nopush     on;
32.    tcp_nodelay     on;
33.    server_tokens off;
34.    gzip            on;
35.    gzip_static     on;
36.    gzip_comp_level 5;
37.    gzip_min_length 1024;
38.    keepalive_timeout 65;
39.    limit_conn_zone     zone=addr:10m;
40.
41.    charset utf-8;
42.
43.    gzip_types text/plain text/css application/x-javascript application/xml application/xml+rss;    
44.    include /etc/nginx/conf.d/*.conf;
45.
46.}
47.

        

Новый сайт

Зайдите в /etc/nginx/conf.d/ Пропишите в файле (sait.conf) с удобным названием характеристики домена:

  • Код
  • Чистый код
  • Копировать в буфер
  1.include /usr/local/ispmgr/etc/nginx.domain;
  2.server {
  3.
  4.        listen    80;
  5.        server_name 37.230.112.175;
  6.
  7.    #server_name sait.com www.sait.com;
  8.    client_max_body_size 2G;
  9.
10.        error_page 404             /404.html;
11.        location = /404.html {
12.            root /usr/share/nginx/html;
13.        }
14.
15.        error_page 500 502 503 504 /50x.html;
16.        location = /50x.html {
17.            root /var/www/jquery/data/www/37.230.112.175;
18.        }
19.    
20.         location ~* ^$ {
21.                 root $root_path;
22.         #access_log /var/www/nginx-logs/a14860 isp;
23.                 #access_log /var/www/httpd-logs/kostr.net.access.log ;
24.                 error_page 404 = @fallback;
25.         }
26.
27.        location / {
28.         proxy_read_timeout 300;
29.                 proxy_pass http://37.230.112.175:81;
30.                 proxy_redirect http://37.230.112.175:81/ /;
31.                 proxy_set_header Host $host;
32.                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
33.                 proxy_set_header X-Forwarded-Proto $scheme;
34.                 proxy_set_header X-Real-IP $remote_addr;
35.         }
36.    
37.     location @fallback {
38.                        proxy_pass http://37.230.112.175:81;
39.                        proxy_set_header Host $host;
40.                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
41.                        proxy_set_header X-Forwarded-Proto $scheme;
42.                        proxy_set_header X-Real-IP $remote_addr;
43.        }
44.
45.    location ~* \.(jpg|jpeg|gif|png)$ {
46.            root         /var/www/jquery/data/www/37.230.112.175;
47.            access_log off;
48.            expires     30d;
49.        }
50.
51.    location ~* \.(css|js)$ {
52.             root         /var/www/jquery/data/www/37.230.112.175;
53.             #Кеширум картинки месяца на 4
54.
55.             expires 30s;
56.             #Кешируем везде (и на прокси и на клиентах)
57.             add_header Cache-Control public;
58.     }
59.
60.    location ~* \.(flv|mp4|zip)$ {
61.         root         /var/www/jquery/data/www/37.230.112.175;
62.
63.         add_header Cache-Control "no-cache";
64.         add_header Last-Modified "";
65.         add_header Expires "Mon, 21 Sep 2009 04:52:34 GMT";
66.         add_header Pragma "no-cache";
67.
68.    }    
69.
70.
71.}
72.

        

Httpd

  • Код
  • Чистый код
  • Копировать в буфер
  1.vi /etc/httpd/conf/httpd.conf

        

Нужно заменить

  • Код
  • Чистый код
  • Копировать в буфер
  1.Listen 80

        

на

  • Код
  • Чистый код
  • Копировать в буфер
  1.Listen 81

        

Itk mpm!

Для работы Itk mpm:

  • Код
  • Чистый код
  • Копировать в буфер
  1.cat /etc/httpd/conf.d/itk.conf | grep AssignUserId

        
если не существует добавьте.

В VitualHost так же нужно добавить:

  • Код
  • Чистый код
  • Копировать в буфер
  1.AssignUserId userID groupID

        

Это нужно для того, чтобы для каждого пользователя apache запускался отдельным сервисом.

Не забудьте перезагрузить указанные сервисы (service nginx restart и service httpd restart)

Добавьте в crontab запуск проверки работоспособности сервера:

  • Код
  • Чистый код
  • Копировать в буфер
  1.*/5 * * * *     /root/emailsend.sh

        
  • Код
  • Чистый код
  • Копировать в буфер
  1.#!/bin/bash
  2.
  3.################################################################################################
  4.# Проверка статуса apache, nginx, mysql, ssh и перезагрузка сервисов при необходимости
  5.################################################################################################
  6.
  7.# Команда для отправки почты
  8.MAILCMD="$(which mail)"
  9.# Файл письма
10.MAILMESSAGE="/tmp/vps_service.fail.$$"
11.# Email, куда слать уведомления
12.EMAILID="mail@mail.ru"
13.
14.# Функция для отправки письма
15.mail_doxer()
16.{
17.$MAILCMD -S ttycharset=utf-8 -S sendcharsets=utf-8 -S encoding=8bit -s "Problem with server $(hostname)" $EMAILID < $MAILMESSAGE
18.}
19.
20.echo "Данное письмо отправлено Вам, так как были обнаружены проблемы">>$MAILMESSAGE
21.echo "на сервере $(hostname), а Ваш адрес указан в скрипте для таких уведомлений">>$MAILMESSAGE
22.echo "----------------------------------------------------------------------------------------------------" >>$MAILMESSAGE
23.echo "">>$MAILMESSAGE
24.
25.ApacheThread=`ps -A|grep httpd|wc -l`
26.NginxThread=`ps -A|grep nginx|wc -l`
27.MysqldThread=`ps -A|grep mysqld|wc -l`
28.SSHThread=`ps -A|grep ssh|wc -l`
29.phpFpm=`ps -A|grep php-fpm|wc -l`
30.search=`ps -A|grep searchd|wc -l`
31.
32.
33.
34.#
35.# Проверяем, запущен ли apache2
36.#
37.
38.if [ $ApacheThread -eq 0 ]; then
39.echo "ОШИБКА:">>$MAILMESSAGE
40.echo "-- При проверке обнаружено, что веб-сервер Apache не был запущен!">>$MAILMESSAGE
41.echo "-- Произведена попытка запуска в $(date +"%d.%m.%y %H:%M:%S")...">>$MAILMESSAGE
42.# Пытаемся запустить сервис
43.#/etc/init.d/httpd start
44.# "Вздремнем" на секундочку (так, на всякий пожарный)
45.sleep 1
46.# Проверяем, работает ли сервис после выполнения скрипта
47.echo "ТЕКУЩИЙ СТАТУС:" >>$MAILMESSAGE
48.ApacheThreadAfter=`ps -A|grep httpd|wc -l`
49.if [ $ApacheThreadAfter -eq 0 ]; then
50.echo "-- Apache сейчас НЕ ЗАПУЩЕН!" >>$MAILMESSAGE
51.echo "">>$MAILMESSAGE
52.else
53.echo "-- Apache сейчас запущен..." >>$MAILMESSAGE
54.echo "">>$MAILMESSAGE
55.fi
56.fi
57.
58.#
59.# Проверяем, запущен ли nginx
60.#
61.
62.if [ $NginxThread -eq 0 ]; then
63.echo "ОШИБКА:">>$MAILMESSAGE
64.echo "-- При проверке обнаружено, что веб-сервер Nginx не был запущен!">>$MAILMESSAGE
65.echo "-- Произведена попытка запуска в $(date +"%d.%m.%y %H:%M:%S")...">>$MAILMESSAGE
66.# Пытаемся запустить сервис
67./etc/init.d/nginx start
68.# "Вздремнем" на секундочку (так, на всякий пожарный)
69.sleep 1
70.# Проверяем, работает ли сервис после выполнения скрипта
71.echo "ТЕКУЩИЙ СТАТУС:" >>$MAILMESSAGE
72.NginxThreadAfter=`ps -A|grep nginx|wc -l`
73.if [ $NginxThreadAfter -eq 0 ]; then
74.echo "-- Nginx сейчас НЕ ЗАПУЩЕН!" >>$MAILMESSAGE
75.echo "">>$MAILMESSAGE
76.else
77.echo "-- Nginx сейчас запущен..." >>$MAILMESSAGE
78.echo "">>$MAILMESSAGE
79.fi
80.fi
81.
82.#
83.# Проверяем, запущен ли mysql
84.#
85.
86.if [ $MysqldThread -eq 0 ]; then
87.echo "ОШИБКА:">>$MAILMESSAGE
88.echo "-- При проверке обнаружено, что MySQL-сервер не был запущен!">>$MAILMESSAGE
89.echo "-- Произведена попытка запуска в $(date +"%d.%m.%y %H:%M:%S")...">>$MAILMESSAGE
90.# Пытаемся запустить сервис
91./etc/init.d/mysqld start
92.# "Вздремнем" на секундочку (так, на всякий пожарный)
93.sleep 1
94.# Проверяем, работает ли сервис после выполнения скрипта
95.echo "ТЕКУЩИЙ СТАТУС:" >>$MAILMESSAGE
96.MysqldThreadAfter=`ps -A|grep mysql|wc -l`
97.if [ $MysqldThreadAfter -eq 0 ]; then
98.echo "-- MySQL-сервер сейчас НЕ ЗАПУЩЕН!" >>$MAILMESSAGE
99.echo "">>$MAILMESSAGE
100.else
101.echo "-- MySQL-сервер сейчас запущен..." >>$MAILMESSAGE
102.echo "">>$MAILMESSAGE
103.fi
104.fi
105.
106.#
107.# Проверяем, запущен ли ssh-сервер
108.#
109.
110.if [ $phpFpm -eq 0 ]; then
111.echo "ОШИБКА:">>$MAILMESSAGE
112.echo "-- При проверке обнаружено, что phpFpm не был запущен!">>$MAILMESSAGE
113.echo "-- Произведена попытка запуска в $(date +"%d.%m.%y %H:%M:%S")...">>$MAILMESSAGE
114.# Пытаемся запустить сервис
115./etc/init.d/php-fpm start
116.# "Вздремнем" на секундочку (так, на всякий пожарный)
117.sleep 1
118.# Проверяем, работает ли сервис после выполнения скрипта
119.echo "ТЕКУЩИЙ СТАТУС:" >>$MAILMESSAGE
120.phpFpmThreadAfter=`ps -A|grep php-fpm|wc -l`
121.if [ $phpFpmThreadAfter -eq 0 ]; then
122.echo "-- phpFpm сейчас НЕ ЗАПУЩЕН!" >>$MAILMESSAGE
123.echo "">>$MAILMESSAGE
124.else
125.echo "-- phpFpm сейчас запущен..." >>$MAILMESSAGE
126.echo "">>$MAILMESSAGE
127.fi
128.fi
129.
130.
131.
132.#
133.# Проверяем, запущен ли searchd
134.#
135.
136.if [ $search -eq 0 ]; then
137.echo "ОШИБКА:">>$MAILMESSAGE
138.echo "-- При проверке обнаружено, что searchd не был запущен!">>$MAILMESSAGE
139.echo "-- Произведена попытка запуска в $(date +"%d.%m.%y %H:%M:%S")...">>$MAILMESSAGE
140.# Пытаемся запустить сервис
141./etc/init.d/searchd start
142.# "Вздремнем" на секундочку (так, на всякий пожарный)
143.sleep 1
144.# Проверяем, работает ли сервис после выполнения скрипта
145.echo "ТЕКУЩИЙ СТАТУС:" >>$MAILMESSAGE
146.searchThreadAfter=`ps -A|grep searchd|wc -l`
147.if [ $searchThreadAfter -eq 0 ]; then
148.echo "-- search сейчас НЕ ЗАПУЩЕН!" >>$MAILMESSAGE
149.echo "">>$MAILMESSAGE
150.else
151.echo "-- search сейчас запущен..." >>$MAILMESSAGE
152.echo "">>$MAILMESSAGE
153.fi
154.fi
155.
156.
157.
158.#
159.# Проверяем, запущен ли ssh-сервер
160.#
161.
162.if [ $SSHThread -eq 0 ]; then
163.echo "ОШИБКА:">>$MAILMESSAGE
164.echo "-- При проверке обнаружено, что SSH не был запущен!">>$MAILMESSAGE
165.echo "-- Произведена попытка запуска в $(date +"%d.%m.%y %H:%M:%S")...">>$MAILMESSAGE
166.# Пытаемся запустить сервис
167./etc/init.d/ssh start
168.# "Вздремнем" на секундочку (так, на всякий пожарный)
169.sleep 1
170.# Проверяем, работает ли сервис после выполнения скрипта
171.echo "ТЕКУЩИЙ СТАТУС:" >>$MAILMESSAGE
172.SSHThreadAfter=`ps -A|grep ssh|wc -l`
173.if [ $SSHThreadAfter -eq 0 ]; then
174.echo "-- SSH сейчас НЕ ЗАПУЩЕН!" >>$MAILMESSAGE
175.echo "">>$MAILMESSAGE
176.else
177.echo "-- SSH сейчас запущен..." >>$MAILMESSAGE
178.echo "">>$MAILMESSAGE
179.fi
180.fi
181.
182.
183.# Получаем текущее значение LA
184.LOAD=`uptime | grep -o 'load average.*' | cut -c 15-18`
185.
186.# Если оно больше указанного ниже значения, то это также повод для беспокойства
187.if [ $LOAD \> 15.0 ]; then
188.echo "ВНИМАНИЕ!!! Слишком большая нагрузка!" >>$MAILMESSAGE
189.echo "-- Текущий Load Average: $LOAD " >>$MAILMESSAGE
190.else
191.echo "-- Текущий Load Average: $LOAD " >>$MAILMESSAGE
192.fi
193.
194.
195.echo "----------------------------------------------------------------------------------------------------" >>$MAILMESSAGE
196.echo "*** Это письмо сгенерировано скриптом $(basename $0) ***" >>$MAILMESSAGE
197.echo "*** Не стоит отвечать на это письмо, это всего лишь уведомление ***" >>$MAILMESSAGE
198.
199.# Проверяем, был ли нерабочим хоть один из проверяемых сервисов, если да, то шлем емэйл
200.if [ $ApacheThread -eq 0 ] || [ $NginxThread -eq 0 ] || [ $MysqldThread -eq 0 ] || [ $SSHThread -eq 0 ] || [ $LOAD \> 15.0 ]; then
201.mail_doxer
202.fi
203.
204.# "Вздремнем" на секундочку (так, на всякий пожарный)
205.sleep 1
206.
207.#Удаляем временный файл письма
208.rm -f $MAILMESSAGE
209.

        

Забыл сказать!

Иногда неудобно работать с русской кодировкой в редакторе vim, поэтому нужно внести небольшие правки в конфигурационный файл vimrc, чтобы изменения применились необходимо скопировать этот файл в корень директории пользователя:

  • Код
  • Чистый код
  • Копировать в буфер
  1.set keymap=russian-jcukenwin
  2.set iminsert=0
  3.set imsearch=0
  4.highlight lCursor guifg=NONE guibg=Cyan
  5.
  6.set encoding=utf-8
  7.set fileencodings=utf-8
  8.

        

Александр Ермаков