View difference between Paste ID: kkRpVrra and v0VKjKXW
SHOW: | | - or go back to the newest paste.
1
##############################################################################
2-
=============Frontend Nginx >=1.12.2 + Backend Apache ~2.4 PHP (5/7) + VestaCP) === 01.17.2020
2+
============= Fast KVM VPS 2017 (Frontend Nginx 1.11.10 + Backend Apache 2.4 PHP (5/7) + VestaCP) ===========
3-
=============fast server http://vk.cc/7BSP3h ===========
3+
4-
=============Сервер берем с KVM (Kernel-based Virtual Machine)!!!! ==============
4+
Debian 8.7 PHP 7.0.16-1 Apache 2.4.10 Nginx 1.11.10 https://habrahabr.ru/post/282554/
5-
=============ОС выбираем Debian 9* (php7 идет в комплекте)==============
5+
6-
=============support / вопросы, пожелания, замечания просьба слать сюда 2010-10 @ mail.ru ==============
6+
7-
==================Конфиг универсален, работает по принципу поставил и забыл - один под все сайты!==============
7+
8-
================= не расчитан на перфекционистов, но легко допиливается Вами под Ваши нужды======================
8+
9-
https://archive.apache.org/dist/httpd/
9+
## ab -n 10000 -c 10000 http://site.com/ (wordpress)
10-
https://nginx.org/ru/download.html
10+
#Document Length:        162 bytes
11
#Concurrency Level:      10000
12-
========= Current system ======================
12+
#Time taken for tests:   1.239 seconds
13-
nginx/1.16.0
13+
14-
Apache/2.4.10 (Debian)
14+
15
#Total transferred:      3200000 bytes
16-
===============================================
16+
17
#Requests per second:    8071.25 [#/sec] (mean)
18
#Time per request:       1238.965 [ms] (mean)
19
#Time per request:       0.124 [ms] (mean, across all concurrent requests)
20-
## ab -r -n 10000 -c 10000 http://site.com/
20+
#Transfer rate:          2522.27 [Kbytes/sec] received
21
#Connection Times (ms)
22-
#Time taken for tests:   0.835 seconds
22+
#             min  mean[+/-sd] median   max
23
#~Total:        782  945 106.2    935    1132
24
#
25-
#Non-2xx responses:      10000
25+
=============================Инструкци по установке ( без больших и средних бубнов )===========================================================
26
27
Для работы качаем https://www.bitvise.com/ssh-client-download  (SSH+FTP) для полноценной работы.
28-
#Requests per second:    11976.08 [#/sec] (mean)
28+
29-
#Time per request:       834.998 [ms] (mean)
29+
30-
#Time per request:       0.083 [ms] (mean, across all concurrent requests)
30+
31-
#Transfer rate:          3742.52 [Kbytes/sec] received
31+
32
33
APACHE : Файлы настроек подключений с расширением .conf в директории сервера /etc/apache2 и подпапки, если include прописан и незакоментирован в основном файле apache2.conf
34-
#              min  mean[+/-sd] median   max
34+
35-
#Total:        530  644  66.0    646     758
35+
36-
################################################################################################
36+
37-
=============================Инструкция по установке ============================================
37+
38
В нашем случае на сервере установлена Vesta CP.
39
1.Настройки сайтов расположены /home/admin/conf/web/apache2.conf (Этот путь прописан в файле vesta.conf в папке /etc/apache2/conf.d)
40
Меняем <VirtualHost *:*>  на <VirtualHost *:81>
41
для всех указанных в нем сайтов
42
2. Меняем также и в шаблоне добавления сайтов, в весте 
43
В шаблонах Vesta  /usr/local/vesta/data/templates/web/apache2
44
45
В файле default.tpl  (Если у Вас другой, выбирайте его. Смотреть в Veste в Packages в настройках Вашего профиля)
46
47
3. В файле /etc/apache2/conf.d/*ип сервера*.conf заменяем все на:
48-
VPS берем тут http://vk.cc/7BSP3h (Высокое качество, низкие цены и вежливая техподдержка)
48+
49
Для апач 2.2*
50
Listen 127.0.0.1:81
51
Listen вставить-ip-вашего-сервера:81
52
NameVirtualHost 127.0.0.1:81
53-
1.1. Настройки сайтов расположены /home/admin/conf/web/apache2.conf (Этот путь прописан в файле vesta.conf в папке /etc/apache2/conf.d)
53+
54
Listen вставить-ip-вашего-сервера:8443
55
56-
1.2. Меняем также и в шаблоне добавления сайтов, в весте 
56+
57
Для апач 2.4*
58
Listen 127.0.0.1:81
59
Listen вставить-ip-вашего-сервера:81
60
Listen вставить-ip-вашего-сервера:8443
61-
1.3. В файле /etc/apache2/conf.d/*ип сервера*.conf заменяем все на:
61+
62
63
4. Для apache v 2.2 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального)
64
===========================================
65
http://pastebin.com/36xr3gru
66
===========================================
67
 Для apache v 2.4 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального)
68
===========================================
69
http://pastebin.com/sCs33xZA
70
===========================================
71
72
*Если версия Apache ниже 2.2.4  ( проверить можно командой apache2 -v  )
73
Установка модуля RPAF (
74
75
Т.к. теперь все запросы к Apache приходят не от удалённых клиентов, а от Nginx, то в итоге IP-адрес клиента Apache определяет как локальный (127.0.0.1). Для решения этой проблемы нам нужен модуль RPAF. Он берет тело заголовка X-Forwarded-For, присланного от фронтенда (Nginx) и заменяет значение заголовка REMOTE_ADDR на бекенде (Apache).
76-
1.4. В /etc/apache2/mods-enabled  очисть конфиги, если они там есть файлы    *prefork.conf
76+
77
В Debian или Ubuntu установка и включение модуля RPAF в Apache выполняется следующими командами:
78-
1.5. Для apache v 2.2 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального)
78+
79
a2enmod rpaf
80
81
Настройка модуля RPAF
82
Файл конфигурации RPAF находится:
83
Debian/Ubuntu: /etc/apache2/mods-enabled/rpaf.conf
84
85
Он должен содержать следующие строки:
86
#
87-
*Если версия Apache ниже 2.4  ( проверить можно командой apache2 -v  )
87+
88
RPAFsethostname Off
89
RPAFproxy_ips 127.0.0.1
90
RPAFheader X-Real-IP
91
#
92
	
93
*Если версия Apache 2.2.4 =========================Изменения https://httpd.apache.org/docs/2.4/upgrading.html
94
	
95
Apache начиная с версии 2.2.4 НЕ поддерживает mod_rpaf поэтому для отображения реальных ип делаем следующее.
96
  	a2enmod remoteip
97
	nano /etc/apache2/conf-available/remoteip.conf
98
Вписываем строчки в файл remoteip.conf
99
	RemoteIPHeader X-Forwarded-For
100
	RemoteIPTrustedProxy 127.0.0.1
101
Далее снова пишем в консоли
102
	a2enconf remoteip
103
Редактируем /etc/apache2/apache2.conf
104
Меняем
105
	LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
106
на
107
	LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
108-
*Если версия Apache 2.4 =========================Изменения https://httpd.apache.org/docs/2.4/upgrading.html
108+
109
   /etc/init.d/apache2 restart
110-
!!!!!!!===>>>Apache начиная с версии 2.4 НЕ поддерживает mod_rpaf поэтому для отображения реальных ип делаем следующее.
110+
111
  
112
#### 2.  Настраиваем Nginx##########	
113
Узнать текущую версию:
114
nginx -v 
115-
RemoteIPHeader X-Forwarded-For
115+
Обновление если надо (лучше обновить!) http://nginx.org/en/linux_packages.html#mainline   http://artana.ru/blog/all/obnovlenie-nginx-do-posledney-versii-debian/
116-
RemoteIPTrustedProxy 127.0.0.1
116+
Полная информация о дистрибутиве операционки для выбора Codename при обновлении:
117
lsb_release -a
118
119
Файл настройки  http://pastebin.com/aRLRiYwu заменить на свой /etc/nginx/nginx.conf .  (Прописать там свой ипшник в раздел upstream B)
120
=======================================================
121
Не забываем создать соответствующие каталоги командами:
122
123
mkdir -p  /var/lib/nginx/cache
124
chown -R www-data /var/lib/nginx/cache
125
chmod 700 /var/lib/nginx/cache
126
127
=======================================================
128
!!!!!!!!!!!!!!!! В настройках указан режим reuseport, он требует ядро линкса от версии 3.9 (Устанавливаем сами или просим ТП хостинга установить)
129-
#### 2.  Настраиваем Nginx  http://pastebin.com/aRLRiYwu ##########	
129+
Команада показать версию ядра
130
uname -r
131
Полная инфа о системе
132-
Обновление если надо (лучше обновить!) 
132+
133-
Вариант 1 https://nginx.org/ru/linux_packages.html#Debian  
133+
134-
Вариант 2 https://myhosti.pro/faq/adminos/web/nginx/obnovlenie-nginx-do-poslednei-versii
134+
135-
(Если надо)Полная информация о дистрибутиве операционки для выбора Codename при обновлении:
135+
меняем 
136
listen 80 reuseport; 
137
на 
138-
Файл настройки NGINGX  http://pastebin.com/aRLRiYwu заменить на свой /etc/nginx/nginx.conf .  (Прописать в нем свой IP SERVER  <<<===!!!! )
138+
139
 
140-
Не забываем создать соответствующие каталоги командами: (где www-data , имя пользователя)
140+
141
Желательно с прямыми ручонками своими, и не обливая клаву кофем )
142-
mkdir -p /var/lib/nginx/cache; chown -R www-data /var/lib/nginx/cache; chmod 700 /var/lib/nginx/cache;
142+
По иструкции https://codebeer.ru/obnovlenie-yadra-debian/ , после apt-get update
143-
mkdir -p /var/lib/nginx/proxy; chown -R www-data /var/lib/nginx/proxy; chmod 700 /var/lib/nginx/proxy;
143+
144
apt-get install -t jessie-backports linux-image-4.9.0-0.bpo.1-amd64
145
update-grub
146-
Дополнительно: помещаем кеш nginx в ramdisk (tmpfs)
146+
147-
Сейчас у нас кеширование настроено, но кеш хранится на жестком диске, что не является хорошим решение.
147+
148-
 Оптимальнее будет смонтировать директорию с кешем nginx в память.
148+
149-
Для этого откроем 
149+
150-
nano /etc/fstab
150+
!!!!Важный момент, снимаем лимиты (Проверка командой ulimit -n )
151-
и добавим туда:
151+
В конец файла (где root - имя пользователя от которого работает апач)
152-
tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,noexec,nodiratime,size=20M 0 0
152+
/etc/security/limits.conf
153-
Если в настройках nginx вы указали больший размер кеша, то параметр size необходимо изменить в соответствии с указанным размером кеша (max_size), плюс небольшой запас.
153+
154-
Сразу смонтируем директорию в память:
154+
155-
sudo mount -a 
155+
156
* soft nofile 65536 
157-
Теперь при каждой загрузке системы, директория /var/lib/nginx/cache будет помещаться в память, что должно уменьшить время отдачи страницы.
157+
158
root soft nofile 65536 
159
root hard nofile 65536
160-
!!!!!!!!!!!!!!!! В настройках указан режим reuseport, он требует ядро линукса от версии 3.9 (Устанавливаем сами или просим ТП хостинга установить)
160+
161-
Команда показать версию ядра
161+
162
1.В файле php.ini  /etc/php/7.0/apache2
163
memory_limit = 36M 
164
short_open_tag = On
165
realpath_cache_size=16M
166
realpath_cache_ttl=1200 
167-
меняем  в конфиге nginx
167+
168
session.auto_start = 0
169
170
1.1 Файл подкачки
171
www.youtube.com/watch?v=IYmYiAiFUN0
172
#Подкачка как расширение памяти на VPS с SSD
173
#установка
174-
По инструкции https://codebeer.ru/obnovlenie-yadra-debian/ , после apt-get update
174+
fallocate -l 1G /swapfile 
175
chmod 0600 /swapfile
176
mkswap /swapfile
177
swapon /swapfile
178
#свободное место
179
df -h    
180
#В файл
181
vim /etc/fstab   
182
#добавить строку для автозагрузки свапа
183-
4.1. !!!!--->>>  Очистка и перезагрузка сервера ежедневно https://pastebin.com/w8aVmx9w
183+
184
185
2.Для простого редактирования всего этого дела есть отличная утилитка –sysv-rc-conf, которая хоть и выполнена в текстовом виде, но очень удобна для этих целей.
186-
!!!!Важный момент, снимаем лимиты (Проверка командой ulimit -n       (1024 изначально))
186+
187-
В конец файла (/etc/security/limits.conf)
187+
188-
nano /etc/security/limits.conf  
188+
189-
добавить строки (где www-data - имя пользователя от которого работает апач)
189+
190
191
Или можно отключить все не нужное в весте 
192
https://ваш ип:8083/list/server/
193
194
3.Ковыряем системные переменные, защищаемся от некоторых видов атак
195-
www-data soft nofile 65536 
195+
196-
www-data hard nofile 65536
196+
197
198
Дописываем в конец
199
=========================
200
# Защита от smurf-атак
201-
4.2. В файле php.ini  /etc/php/7.0/apache2
201+
202-
memory_limit = 128M
202+
203
net.ipv4.icmp_ignore_bogus_error_responses = 1
204
# Защита от SYN-флуда
205
net.ipv4.tcp_syncookies = 1
206
# Запрещаем маршрутизацию от источника
207
net.ipv4.conf.all.accept_source_route = 0
208-
output_buffering = On
208+
209
# Защита от спуфинга
210-
4.3. Файл подкачки
210+
211
net.ipv4.conf.default.rp_filter = 1
212
# Мы не маршрутизатор, если конечно это так
213-
#установка (В данном случае это 200 Мегабайт)
213+
214-
fallocate -l 200M /swapfile 
214+
215
net.ipv4.conf.default.send_redirects = 0
216
# Включаем ExecShield при атаках направленных на переполнение буфера или срыв стэка
217
kernel.exec-shield = 1
218-
#Смотрим свободное место
218+
219
# Расширяем диапазон доступных портов
220
net.ipv4.ip_local_port_range = 2000 65000
221-
nano /etc/fstab   
221+
222
net.ipv4.tcp_rmem = 4096 87380 8388608
223
net.ipv4.tcp_wmem = 4096 87380 8388608
224
net.core.rmem_max = 8388608
225-
4.4. Оптимизация кеширования http://tolstiyman.blogspot.ru/2013/08/overcommit.html
225+
226
net.core.netdev_max_backlog = 5000
227-
В файл конец /etc/sysctl.conf вставить 
227+
228
229-
#Пишем в buffers/cache при <=10% свободной RAM памяти (Дефолт 60!)
229+
#ускоряем высвобождение памяти(см. "Ускоряем общую работу системы")
230-
vm.swappiness = 10
230+
vm.swappiness=10
231
=======================
232
233-
<--!Если больше 1Gb RAM-->
233+
234-
В консоли:
234+
4.Ускоряем общую работу системы
235
236-
echo 2 > /proc/sys/vm/overcommit_memory
236+
Prelink и Preload. Prelink для создание статичных адресов библиотек, Preload это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и загружает их в память, когда система простаивает.
237-
echo 80 > /proc/sys/vm/overcommit_ratio
237+
238
apt-get -y install prelink
239-
В файл конец /etc/sysctl.conf вставить  еще строки
239+
240
Редактируем файл /etc/default/prelink:
241-
#по-умолчанию равно 50
241+
242-
vm.overcommit_ratio = 80
242+
243-
#В этом случае допустимый объем пространства памяти будет swap+ram*overcommit_ratio/100 
243+
244-
vm.overcommit_memory = 2
244+
245
/etc/cron.daily/prelink
246
247
2.Установка Preload:
248-
4.5. Для настройки запуска служб есть отличная утилитка –sysv-rc-conf, которая хоть и выполнена в текстовом виде, 
248+
249-
но очень удобна для этих целей.
249+
250
Все, больше ничего не требуется
251
252
Завершение настройки (перезапуск сервисов)
253
service nginx restart; service apache2 restart; reboot;
254
255
Теперь связка работает, Nginx обрабатывает статичные данные, Apache - динамические.
256
257
258-
4.6. Ковыряем системные переменные, защищаемся от некоторых видов атак (Не обязательно)
258+
259
260
Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1
261
https://habrahabr.ru/post/259403/
262
263
Разбираемся в HTTP прокси NGINX, балансировке нагрузки, буферизации и кешировании
264
http://devacademy.ru/posts/razbiraemsya-v-http-proksi-nginx-balansirovke-nagruzki-buferizatsii-i-keshirovanii/
265
266
Прокачка debian/ubuntu сервера для маленьких
267
https://habrahabr.ru/post/186362/
268
269
Прозрачное кэширование в nginx для всех и каждого
270
https://habrahabr.ru/post/124684/
271
272
Динамические виртуальные хосты (dynamic vhost) в nginx
273
https://the-bosha.ru/2013/11/08/dinamicheskie-virtualnyie-hostyi-dynamic-vhost-v-nginx/
274
275
Установка и настройка связки Nginx+Apache
276
http://lib.clodo.ru/web-Сервер/webserver-lna.html
277
278
Настройка сервера Debian 7 + nginx + apache
279
http://desome.net/nastrojka-servera-nginx-apache.html
280
http://desome.net/nastrojka-servera-debian-7-nginx-apache-chast-2.html