F

fazer

+22
Репутация
9
Рейтинг
#1 nginx + php-fpm for InstantCMS v2.x 20 июля 2019 в 22:30


@fazer, погонял, ООООЧЕНЬ НЕ ПЛОХО!
Теперь нагенерировать бы в демку статей так 15000
и комментариев, чтоб база была под гиг…

@iKrym

логинтесь(там нет ограничений по юзеру) и шрампуйте статьи…
если положите мою виртуалку — не страшно…
#2 nginx + php-fpm for InstantCMS v2.x 20 июля 2019 в 22:16


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

@iKrym
да он(конфиг) такой-же, добавьте пару папок-локейшенов(которых нет в двойке) с аналогичными .htaccess
#3 nginx + php-fpm for InstantCMS v2.x 20 июля 2019 в 22:13


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

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


#4 nginx + php-fpm for InstantCMS v2.x 20 июля 2019 в 12:41


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

@fazer

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

правда уточню навсяк, оно висит на виртуалке (4ядра+4гб) и за натом на простеньком, бытовом микротике
#5 nginx + php-fpm for InstantCMS v2.x 20 июля 2019 в 09:54


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

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

хотя… нет… могу выкласть по своему адресу демку инстанса, сгодится?
#6 nginx + php-fpm for InstantCMS v2.x 19 июля 2019 в 12:59
у меня пока нет нагрузки на сайт, но по дебагу инстанса отклик скриптов в 5 раз быстрее, ну и чисто субъективно — шустрее, однозначно

з.ы.
добавил мой сравнительный (nginx|apache) Benchmark
#1 nginx + php-fpm for InstantCMS v2.x 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,
как делают некоторые Писатели(не читатели) в окончании этого топика!!!
у них(не читателей) как минимум не оптимальные конфиги а как максимум ошибка на ошибке,
и не понимание(в принципе) как работает инджин

##########################################################################
Вроде — всё,
сумбурненько… ну да это же не БЛОГ )))
ваще странные это все закидоны с кармой, прям как на выборах в мосгордуму )
#7 Редактор разметки iTiny 11 февраля 2019 в 19:44


А как его подключить и реализовать при публикации Статей и в коментарии? Хотя бы в статьи если в комменты не реально...

Эндрю Ua
Именно в "статьях" я его использую (выбираете "поле" в "типах контента", и там есть менюшка с выбором редактора),
а вот в "коментах" я бы поостерегся(хотя тоже возможно подпиливанием кода)
там(в коментах) вообще достаточно "текстового" редактора, а то начнутся битвы котиков в коментах ))
#8 Редактор разметки iTiny 11 февраля 2019 в 19:23


Loadырь не хочет отвечать за ваши возможные ошибки… и думаю он в следующем обновлении сам добавит нужную функцию.

vikont
Все патчи я выложил, дело хозяйское...


У нас тут, просто так ни кто не "сваливает"… smile

vikont
"У нас длинные руки"...
что-то сегодня все из 12 стульев )))
#9 Редактор разметки iTiny 11 февраля 2019 в 19:18


Если много места на хостинге так можно делать, а без галки из 2,7 м ужимает до 200 кб .

@elv

Ну во первых я не сказал что обязательно хранить все 2.7М, я имел ввиду расставить галочки на предмет "что показывать в увеличенном виде"
во вторых что Вы сможете рассмотреть на ужатом в 15 раз рисунке? (жмет то оно именно по размерам),
вот попробуйте рассмотреть простенькую схему, ну к примеру, из ста деталюшек на квадратике 64х64,
так что по любому "большой"(по линейным размерам) рисунок нужно иметь…
Жмите процентами…
грузите апельсины бочках зпт братья карамазовы :)
#10 Редактор разметки iTiny 11 февраля 2019 в 19:08


Но не буду возражать, если вы пропатченную версию редактора выложите как свою работу.

Loadырь
Т.е. Вы не желаете иметь даже косвенных связей ?,
ну я не буду тоже его перелопачивать вплоть до смены названия и присвоения авторства,
я здесь человек временный, делаю свой личный сайт и сваливаю :)..
значит народ остался без улучшений… :)
#11 Редактор разметки iTiny 11 февраля 2019 в 13:06


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

Loadырь

Сделал что хотел :)

  1.  
  2. --- wysiwyg/itiny/wysiwyg.class.php 2019-02-05 11:48:18.000000000 +0300
  3. +++ wysiwyg/itiny/wysiwyg.class.php 2019-02-08 09:58:55.308847335 +0300
  4. @@ -346,21 +346,20 @@
  5.  
  6. if (result.filetype == 'image') {
  7.  
  8. - if (files.length > 1){
  9. +
  10. var img = new Image();
  11. img.src = result.url;
  12.  
  13. img.onload = function() {
  14. - tinymce.activeEditor.insertContent('<a class="img-gallery" href="'+result.url+'"><img class="image-gallery" src="'+result.url+'" width="<?php echo $options['image_w'];?>" height="'+Math.round(<?php echo $options['image_w'];?> * img.height / img.width)+'" alt="'+result.name+'" title="'+result.name+'"></a>');
  15. - };
  16. -
  17. - tinymce.activeEditor.windowManager.close();
  18. + if (img.width > 800){
  19. +tinymce.activeEditor.insertContent('<a class="ajax-modal modal_image hover_image" href="'+result.url+'"><img src="'+result.url+'" width="<?php echo $options['image_w'];?>" height="'+Math.round(<?php echo $options['image_w'];?> * img.height / img.width)+'" alt="'+result.name+'" title="'+result.name+'"></a>');
  20. } else {
  21. - callback(result.url, {alt: result.name});
  22. +tinymce.activeEditor.insertContent('<img src="'+result.url+'" width="'+img.width+'" height="'+img.height+'" alt="'+result.name+'" title="'+result.name+'">');
  23. }
  24.  
  25. - tinymce.activeEditor.insertContent('<p></p>');
  26. + tinymce.activeEditor.windowManager.close();
  27.  
  28. + }
  29. }
  30.  
  31. if (result.filetype == 'file') {
  32.  
теперь загружаемые картинки свыше 800px кликабельные, которые менее — сохраняются asis

ну и для полной гармонии убрал кнопки из окна загрузки (можно включить в "правах для пользователей")

Картинки загружаются сразу после выбора(как при потоковой загрузке), потом их можно редактировать из этого же окна,
ну и надо не забывать проставлять соответствующие галочки в "компонентах" на предмет сохранения в оригинальном размере

Loadырь, не возражаете если я размещу пропатченый Ваш редактор ввиде аддона?
#12 Редактор разметки iTiny 7 февраля 2019 в 11:31
Loadырь,
кстати, позвольте Вам предложить некий lifehack...
когда будите работать над новым редактором вставьте плз кнопки "выделить все"/"снять выделение" в панели настройки прав,
а то дюже утомительно тыркать, например 85 из 92 чекбоксов
можно сделать например так:
  1. cat wysiwyg/itiny/buttons.js
  2.  
  3. window.onload = function() {
  4. var grid = document.getElementsByClassName('datagrid_wrapper perms_grid');
  5. var newbuttons = document.createElement('DIV');
  6. newbuttons = '
  7. <div class="select_deselect">\
  8. <a href="#" onclick="$(\'.input-checkbox\').prop(\'checked\', true); return false;">Выделить все</a> / \
  9. <a href="#" onclick="$(\'.input-checkbox\').prop(\'checked\', false); return false;">Снять со всех</a></div>'
  10. if (grid[0]){grid[0].innerHTML += newbuttons;}
  11. };
  1.  
  2. echo "cmsTemplate::getInstance()->addJSFromContext('wysiwyg/itiny/buttons.js');" >> system/controllers/itiny/backend.php
  3.  
#13 Редактор разметки iTiny 7 февраля 2019 в 10:49


С самим кодом не помогу, так как пока занят другими делами.

Loadырь

Ан нет, не сложно
  1. <a class="ajax-modal modal_image hover_image"
будем тестировать, спасибо Вам Loadырь!
#14 Редактор разметки iTiny 7 февраля 2019 в 10:33

Вам нужны не входящие картинки, а исходящие. В файле wysiwyg\itiny\wysiwyg.class.php в строке 349 примерно, есть код
Код PHP:
if (files.length > 1){

Loadырь
Супер, Вы — Гений,
это решается элементарно
  1. if (files.length >= 1){
картинки стали кликабельные, а вот теперь наверно самое сложное,
как их привести к нативному формату инстанта ?, т.е. они открываются но не в 100% и нет красивой "лупы с крестиком" при наведении
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.