nginx + php-fpm for InstantCMS v2.x

InstantCMS 2.X

Запуск InstantCMS на nginx

#1 19 июля 2019 в 12:45
Хотел оформить свои наработки по означенной теме в виде блога… — нету кармы...
Как я уже говорил: "человек я тут временный" соответственно бороться за енту карму мне не досуг,
выкладываю свой конфиг ИнджинИкс и комментарии к нему на форуме, авось кому пригодится...
##########################################################################

/etc/nginx/conf.d/site.conf

  1. #
  2. # site config nginx/1.16.0 + php7.3-fpm for InstantCMS v2.x
  3. #
  4.  
  5. client_max_body_size 3m;
  6. client_body_buffer_size 1m;
  7. index index.php index.htm index.html; # comment it if enabled in the general config
  8.  
  9. server {
  10.  
  11. listen 80;
  12. server_name sitename.com www.sitename.com;
  13. root /var/www/html;
  14. charset utf-8;
  15. autoindex off;
  16.  
  17. fastcgi_index index.php;
  18. fastcgi_buffers 4 256k;
  19. fastcgi_busy_buffers_size 256k;
  20. fastcgi_temp_file_write_size 256k;
  21.  
  22. # rewrite ^/(.*)/$ /$1 permanent;
  23. rewrite ^/(?!MyPhpSecretPathAdmin)(.*)/$ /$1 permanent;
  24.  
  25. location / {
  26. location ~* /(\.|credits\.txt|readme\.txt|license\..*\.txt$) { deny all; }
  27. try_files $uri /index.php?$args;
  28. location ~ ^/.+\.php$ {
  29. fastcgi_pass unix:/run/php/php7.3-fpm.sock;
  30. # If nginx running on TCP socket, comment line above and uncomment line beneath
  31. # fastcgi_pass 127.0.0.1:9000;
  32. include fastcgi_params;
  33. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  34. }
  35. }
  36.  
  37. location /cache {
  38. location ~* \.(js|css|xml)$ {
  39. allow all;
  40. }
  41. deny all;
  42. }
  43.  
  44. location /static {
  45. location ~ \.php$ { return 403; }
  46. }
  47.  
  48. location /system {
  49. deny all;
  50. }
  51.  
  52. location /templates {
  53. location ~* \.(js|css|scss|xml|png|gif|jpg|jpeg|ico|bmp|map|eot|svg|ttf|woff|woff2)$ {
  54. allow all;
  55. }
  56. deny all;
  57. }
  58.  
  59. location /upload {
  60. location ~* \.php$ { return 403; }
  61. }
  62.  
  63. location /wysiwyg {
  64. autoindex off;
  65. location ~* \.(js|css|htm|html|scss|xml|png|gif|jpg|jpeg|ico|bmp|map|eot|svg|ttf|woff|woff2)$ {
  66. allow all;
  67. }
  68. deny all;
  69. }
  70.  
  71. location ~ ^/sitemap(.*)\.xml$ {
  72. rewrite ^/sitemap(.*)\.xml$ /cache/static/sitemaps/sitemap$1.xml break;
  73. }
  74.  
  75. #================================================================
  76.  
  77. location /MyPhpSecretPathAdmin {
  78.  
  79. access_log /var/log/nginx/phpmyadmin_access.log;
  80. # error_log /var/log/nginx/phpmyadmin_error.log debug;
  81. error_log /var/log/nginx/phpmyadmin_error.log;
  82.  
  83. alias /usr/share/phpmyadmin;
  84. try_files $uri $uri/ /index.php;
  85.  
  86. location ~ ^/MyPhpSecretPathAdmin(/.+\.php)$ {
  87. fastcgi_pass unix:/run/php/php7.3-fpm.sock;
  88. # If nginx running on TCP socket, comment line above and uncomment line beneath
  89. # fastcgi_pass 127.0.0.1:9000;
  90. include fastcgi_params;
  91. fastcgi_param SCRIPT_FILENAME $document_root$1;
  92. }
  93. }
  94.  
  95. #=================================================================
  96.  
  97. }
  98.  
  99. #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  100.  
  101. server {
  102. listen 80;
  103. server_name PhpMyAdminSecretDomain.sitename.com;
  104.  
  105. access_log /var/log/nginx/phpmyadmin_access.log;
  106. # error_log /var/log/nginx/phpmyadmin_error.log debug;
  107. error_log /var/log/nginx/phpmyadmin_error.log;
  108.  
  109. root /usr/share/phpmyadmin;
  110. fastcgi_index index.php;
  111.  
  112. location / {
  113. try_files $uri /index.php;
  114. location ~ ^/.+\.php$ {
  115. fastcgi_pass unix:/run/php/php7.3-fpm.sock;
  116. # If nginx running on TCP socket, comment line above and uncomment line beneath
  117. # fastcgi_pass 127.0.0.1:9000;
  118. include fastcgi_params;
  119. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  120. }
  121. }
  122. }
  123.  
  124. #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  125.  
  126.  
Benchmark

Ну и комментарии:

1.Правила фильтрации тупо взяты из .htaccess соответствующих папок(естественно адаптированных под nginx),
кроме одной, мне показалось диковатым разрешать всё в /wysiwyg, не согласные могут удалить оттуда
location ~* \.(js|css|htm|html|scss|xml|png|gif|jpg|jpeg|ico|bmp|map|eot|svg|ttf|woff|woff2)$ {
allow all;
}
deny all;

2. php7.3-fpm.sock — сокет который слушает фастсиджиай(по умолчанию в линухе)
в соответствии с вашим заполните "X.X"
fastcgi_pass unix:/run/php/phpX.X-fpm.sock;
можно и через TCP "fastcgi_pass 127.0.0.1:9000;", но я бы не советовал(лишняя нагрузка на сетевой стек)

3. Как бонус добавлена возможность работы с phpmyadmin к нему
можно обращаться по третьему домену PhpMyAdminSecretDomain.sitename.com
или
по адресу URI sitename.com/MyPhpSecretPathAdmin
(если не требуется удуляем всё между '=' и '+')

4. Тестировалось это всё на ubunta 16.06
свежий nginx берем от сюда
nginx.org/packages/

я делал так:
echo "deb nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL nginx.org/keys/nginx_signing.key | sudo apt-key add -

# для php
add-apt-repository ppa:ondrej/php

apt-get update
apt-get install --no-install-recommends nginx php7.3-fpm

5. Я запускаю nginx от пользователя www-data (user www-data; в конфиге /etc/nginx/nginx.conf)
можно наоборот права на сайт дать пользователю nginx — дело вкусовых предпочтений

6. Дебажить можно раскоментировав соответствующие строки и в /etc/nginx/nginx.conf
error_log /var/log/nginx/error.log debug;, но требуется ещё и запускать "другой" nginx
вот так: /usr/sbin/nginx-debug -c /etc/nginx/nginx.conf

7. Также проверено на связке nginx/1.14.2 + php7.0-fpm InstantCMS v2.11

8. Для первой ветки InstansCMS (nginx/1.14.2 + php7.0-fpm for InstantCMS v1.x)
мой конфиг тут InstantCMS v1.x

9. Отличие моих конфигов от всех что фигурируют на этом форуме в том,
что я пытался сделать их оптимальными, не загруженными всякой фигней
и без вопиющего впихинивания конструкции 'if' — что является ЗЛОМ в nginx
(почитать можно тут Ошибки конфигурирования nginx)

10. И наверное последнее по счету но не последнее по значению:
будьте внимательны!, НЕ копируйте бездумно всё что ни попадя в ваши конфиги nginx,
как делают некоторые Писатели(не читатели) в окончании этого топика!!!
у них(не читателей) как минимум не оптимальные конфиги а как максимум ошибка на ошибке,
и не понимание(в принципе) как работает инджин

##########################################################################
Вроде — всё,
сумбурненько… ну да это же не БЛОГ )))
ваще странные это все закидоны с кармой, прям как на выборах в мосгордуму )
#2 19 июля 2019 в 12:52
@fazer, спасибо! Как по скорости работы по сравнению с апачем?
#3 19 июля 2019 в 12:59
у меня пока нет нагрузки на сайт, но по дебагу инстанса отклик скриптов в 5 раз быстрее, ну и чисто субъективно — шустрее, однозначно

з.ы.
добавил мой сравнительный (nginx|apache) Benchmark
#4 20 июля 2019 в 09:42
дайте адрес сайта — нагрузим!😊
проверите…
#5 20 июля 2019 в 09:54


дайте адрес сайта — нагрузим!😊
проверите ...

@iKrym
дело в том что сайт я тока нарисовал, в нем нет контента,
безпонтово как-то его выставлять, если Вы действительно можете его грузануть могу приоткрыть на время, лично Вам :)

хотя… нет… могу выкласть по своему адресу демку инстанса, сгодится?
#6 20 июля 2019 в 10:21
Тему в закладки.
Как раз переезжаю с шареда на vps с isp manager 5. Там как раз есть выбор этой связки.
#7 20 июля 2019 в 10:27

демку инстанса, сгодится

@fazer
#8 20 июля 2019 в 10:33

Как по скорости работы по сравнению с апачем?

SpideR
У меня сайт пару лет крутится на nginx-php-fpm. Скорость вроде бы, также, как и на апаче (точно не медленнее).
Зато потребление оперативки втрое меньше. Это позволяет сильно экономить на VPS.
#9 20 июля 2019 в 12:41


демку инстанса, сгодится

@fazer

@iKrym
cxtk.ru/
насилуйте, до понедельника будет висеть...

правда уточню навсяк, оно висит на виртуалке (4ядра+4гб) и за натом на простеньком, бытовом микротике
#10 20 июля 2019 в 22:03
@fazer, можешь еще отключить сжатие (объединение) css js в админке? мемкеш тоже отклчюить
#11 20 июля 2019 в 22:09
@fazer, интересно бы такой конфиг еще для первой ветки!
#12 20 июля 2019 в 22:13


@fazer, можешь еще отключить сжатие (объединение) css js в админке? мемкеш тоже отклчюить

@iKrym
оно было и есть выключено


#13 20 июля 2019 в 22:16


@fazer, интересно бы такой конфиг еще для первой ветки!

@iKrym
да он(конфиг) такой-же, добавьте пару папок-локейшенов(которых нет в двойке) с аналогичными .htaccess
#14 20 июля 2019 в 22:23
@fazer, погонял, ООООЧЕНЬ НЕ ПЛОХО!

Теперь нагенерировать бы в демку статей так 15000
и комментариев, чтоб база была под гиг…

у меня с 3 гиговой базой

результаты от ваших отличаются в разы в десятки раз хуже
#15 20 июля 2019 в 22:25
@fazer, свой сервак прогнал, как и ваш

в итоге — почти лег =)

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.