======nginx====== FIXME Эту страницу нужно немного подчистить. Желательно, чтобы это сделал опытный пользователь nginx. В [[https://www.nginx.com/resources/wiki/start/topics/recipes/dokuwiki/|вики nginx]] есть рецепт , а ниже — несколько примеров. В идеале их следует объединить в одну связную установку. Следует добавить пояснение по различным установкам с использованием (F) CGI и FPM. Установку необходимых компонентов для разных операционных систем следует перенести в отдельный раздел — в любом случае конфигурация не должна зависеть от особенностей ОС . =====DokuWiki с nginx на Ubuntu===== Вам необходимо установить nginx и php-fpm. Если у вас текущая версия, то это будет как минимум php7.0. Конфигурация nginx ниже основана в основном на образце конфигурации на этом сайте, [[https://wiki.boetes.org/dokuwiki_on_nginx|обновленном]] для работы с текущими версиями (протестировано с 16.04 LTS). С конфигурацией кэширования изображений с [[http://blog.slucas.fr/blog/nginx-gzip-css-js|этого сайта]] При первоначальной настройке вы не сможете запуститься, пока не закомментируете deny в файле install.php. Это полная конфигурация, которую мы используем, вы можете просто скопировать и вставить, а также изменить имена по своему вкусу. Пожалуйста, учтите, что это работает как vhost. Вам, скорее всего, нужно будет поместить его в ''/etc/nginx/sites-enabled'' по умолчанию (или куда-то еще, если вы изменили конфигурацию). Обратите внимание, что это https, поэтому вам понадобится сертификат или самоподписанный сертификат для настройки таким образом. Конфигурация для сертификата https типична, как показано ниже (чтобы получить хорошую оценку безопасности): # файл с сертификатом + промежуточные данные ssl_certificate /etc/ssl/certs/example_com_pack.crt; ssl_certificate_key /etc/ssl/private/example_com.key; ssl_session_timeout 5m; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; # Используйте 2048-битные параметры ключа Diffie-Hellman RSA # (в противном случае Nginx использует по умолчанию 1024-битные параметры, что снижает надежность шифрования # при использовании PFS) # Сгенерировано OpenSSL с помощью следующей команды: # openssl dhparam -outform pem -out /etc/nginx/ssl/dhparam2048.pem 2048 ssl_dhparam /etc/ssl/private/dhparam2048.pem; server { listen 80; listen [::]:80; server_name wiki.domain.example; return 301 https://$server_name$request_uri; } server { listen [::]:443 ssl; listen 443 ssl; server_name wiki.domain.example; # Максимальный размер загружаемого файла составляет 4 МБ — при необходимости измените его соответствующим образом client_max_body_size 4M; client_body_buffer_size 128k; root /dokuwiki; index doku.php; #Не забудьте закомментировать следующее при установке и раскомментировать после завершения. location ~ /(conf/|bin/|inc/|vendor/|install.php) { deny all; } #Поддержка расположения X-Accel-Redirect ~ ^/data/ { internal ; } location ~ ^/data/ { internal ; } location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ { expires 365d; } location / { try_files $uri $uri/ @dokuwiki; } location @dokuwiki { # перезаписывает "doku.php/" из URL-адресов, если вы установили настройку userrewrite в .htaccess на странице конфигурации dokuwiki rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1&$args last; } location ~ \.php$ { try_files $uri $uri/ /doku.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # fastcgi_pass unix:/var/run/php5-fpm.sock; #старая версия php } } После размещения этого файла необходимо перезапустить nginx и php-fpm. service php7.0-fpm reload && service nginx reload # service php5-fpm reload && service nginx reload # for the older php5 version Если вы получаете ошибку шлюза 502, это обычно означает, что возникла проблема с конфигурацией сокета phpfpm (обычно неправильный путь к сокету). Пожалуйста, ознакомьтесь с документацией по phpfpm и nginx. =====DokuWiki с nginx на Windows===== **Dokuwiki** был извлечен в **E:\www\dokuwiki**. Это пример записи **dokuwiki** в **nginx.conf**, работающем на ''Windows'': location ~ ^/dokuwiki/.*\.php { root E:/www; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME E:/www$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; include fastcgi_params; } # обслуживаем статические файлы location ~ ^/dokuwiki/lib/ { root E:/www; expires 30d; } location ~ ^/dokuwiki/conf/ { deny all; } location ~ ^/dokuwiki/data/ { deny all; } location ~ /\.ht { deny all; } **FastCGI** и **nginx** были запущены с помощью этого пакетного файла: ECHO Starting PHP FastCGI... RunHiddenConsole.exe E:\appl\php-5.2.9-2-Win32\php-cgi.exe -b 127.0.0.1:9000 ECHO Starting nginx... cd /d D:\nginx-0.8.39 && start nginx.exe Или вы можете попробовать [[https://github.com/MrBertie/start-nginx|Start-Nginx]], если вы предпочитаете обычный графический интерфейс Windows. =====Конфигурация Linux для Debian 8===== У вас уже должны быть установлены nginx и php5-fpm. В зависимости от вашего выбора ваша PHP-часть в документах сайта может быть с носками или портами. Вы просто копируете и вставляете то, что работает для вас. Эта конфигурация сайта не имеет SSL и использует перезапись URL в этом примере dokuwiki находится в корне домена с именем exempl.net Как **root**: создайте новый файл сайта nginx: nano /etc/nginx/sites-available/exempl.net Вы вставляете код ниже, конечно же, меняете путь к вашей doku wiki и меняете server_name: server { listen 80; root /var/www/exempl.net; server_name exempl.net; index index.php index.html doku.php; location ~ ^/(data|conf|bin|inc) { return 404; } location ~ ^/lib.*\.(gif|png|ico|jpg)$ { expires 31d; } location / { try_files $uri $uri/ @dokuwiki; } location @dokuwiki { rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/tag/(.*) /doku.php?id=tag:$1&do=showtag&tag=tag:$1 last; rewrite ^/(.*) /doku.php?id=$1&$args last; } # здесь вы вставляете свое местоположение ~ \.php$ # вот мой комментарий # местоположение ~ \.php$ { # включить /etc/nginx/fastcgi_params; # fastcgi_param ИМЯ_ФАЙЛА_СКРИПТА $document_root$fastcgi_script_name; # fastcgi_pass unix:/var/run/php5-fpm.sock; # } } и включите его и перезапустите ngnix: ln -s /etc/nginx/sites-available/exempl.net /etc/nginx/sites-enabled/ service nginx restart ====Переписать==== См. [[http://wiki.nginx.org/|документацию]] [[http://nginx.org/|nginx]]. В следующем примере корневой каталог нашего сервера — ''/var/www'', и мы извлекаем dokuwiki в ''/var/www/wiki''. server { listen 80; server_name example.com www.example.com; #максимальный размер загружаемого файла составляет 4 МБ — при необходимости измените его соответствующим образом client_max_body_size 4M; client_body_buffer_size 128k; root /var/www/wiki; index doku.php; location / { try_files $uri $uri/ @dokuwiki; } location @dokuwiki { rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1&$args last; } location ~ \.php$ { if (!-f $request_filename) { return 404; } include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_pass 127.0.0.1:9000; } } ====Примечания==== Если используется https, переменная HTTPS-сервера должна быть установлена, чтобы разрешить правильное связывание в dokuwiki. Это можно сделать в разделе сервера с помощью: fastcgi_param HTTPS on; Ключевое ''last'' слово правил перезаписи перед настройкой местоположения гарантирует, что переписывание происходит только один раз. Вам следует заменить все /dokuwiki/, указанные выше, на ваш каталог вики относительно корневого каталога веб-сервера. Если вы копируете и вставляете эти конфигурации, обязательно добавьте местоположения для защиты некоторых каталогов, как описано на странице [[wiki:security|«Безопасность»]].