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