Advertisement
hxxxrz

КОНФИГ ВДС

Mar 10th, 2018
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ##############################################################################
  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. =============update 01.12.2017 support / вопросы, пожелания, замечания просьба слать сюда 2010-10 @ mail.ru ==============
  5.  
  6. Debian 8.7 PHP 7.0.16-1 Apache 2.4.10 Nginx 1.12.2 https://habrahabr.ru/post/282554/
  7. Linux 4.9.0-0.bpo.1-amd64 #1 SMP Debian 4.9.2-2~bpo8+1 (2017-01-26) x86_64 GNU/Linux
  8. (Работает все также и на php5* Apache 2.2.*)
  9.  
  10. #  Test VPS !KVM  1x1024RAM 20Gb SSD
  11. ## ab -r -n 10000 -c 10000 http://site.com/
  12. #Concurrency Level:      10000
  13. #Time taken for tests:   0.835 seconds
  14. #Complete requests:      10000
  15. #Failed requests:        0
  16. #Non-2xx responses:      10000
  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. NGNIX  : Файлы настроек подключений с расширением .conf в директории сервера /etc/nginx и подпапки, если include прописан и незакоментирован в основном файле nginx.conf
  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.  
  54. Для апач 2.2*
  55. Listen 127.0.0.1:81
  56. Listen вставить-ip-вашего-сервера:81
  57. NameVirtualHost 127.0.0.1:81
  58. NameVirtualHost вставить-ip-вашего-сервера:81
  59. Listen вставить-ip-вашего-сервера:8443
  60.  
  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. ===========================================
  77.  
  78. *Если версия Apache ниже 2.4  ( проверить можно командой apache2 -v  )
  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.     a2enconf remoteip
  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. Не забываем создать соответствующие каталоги командами: (где root , имя пользователя)
  130.  
  131. mkdir -p  /var/lib/nginx/cache
  132. chown -R root /var/lib/nginx/cache
  133. chmod 700 /var/lib/nginx/cache
  134.  
  135. =======================================================
  136. Дополнительно: помещаем кеш nginx в ramdisk (tmpfs)
  137. Сейчас у нас кеширование настроено, но кеш хранится на жестком диске, что не является хорошим решение.
  138.  Оптимальнее будет смонтировать директорию с кешем nginx в память.
  139. Для этого откроем
  140. nano /etc/fstab
  141. и добавим туда:
  142. tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,size=20M 0 0
  143. Если в настройках nginx вы указали больший размер кеша, то параметр size необходимо изменить в соответствии с указанным размером кеша (max_size), плюс небольшой запас.
  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. uname -r
  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. * soft nofile 65536
  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. www.youtube.com/watch?v=IYmYiAiFUN0
  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. #В файл
  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.  
  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. 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. net.ipv4.icmp_ignore_bogus_error_responses = 1
  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. Измените строку с PRELINKING=unknown на PRELINKING=yes
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement