Cms nginx: CMS Made Simple | NGINX

Документация Grav CMS на русском

Nginx — это программное обеспечение HTTP-сервера, ориентированное на основные функции веб-сервера и прокси. Это очень распространено из-за своей ресурсной эффективности и отзывчивости под нагрузкой. Nginx порождает рабочие процессы, каждый из которых может обрабатывать тысячи соединений. Каждое из соединений, обрабатываемых работником, помещается в цикл событий, где они существуют с другими соединениями. Внутри цикла события обрабатываются асинхронно, что позволяет обрабатывать работу неблокирующим образом. Когда соединение закрывается, оно удаляется из цикла. Такой стиль обработки соединения позволяет Nginx невероятно масштабироваться при ограниченных ресурсах.

Требования

На этой странице объясняется, как запустить Grav с Nginx в качестве HTTP-сервера и PHP-FPM (FastCGI Process Manager) для обработки скриптов PHP, поэтому эти пакеты необходимо установить на ваш сервер:

  • nginx
  • php-fpm

Конфигурация

Если вы новичок в Nginx и ещё не имеете базовых знаний о директивах/контексте блока, рекомендуется прочитать следующие материалы по Nginx: Руководство для начинающих, особенно разделы Структура файла конфигурации и Раздача статического содержимого.

Предполагается, что ваша конфигурация Nginx находится в /etc/nginx/, а ваша установка Grav хранится в /var/www/grav/. Структура конфигурации представляет собой блок http, который содержит общие директивы, относящиеся ко всем страницам, обслуживаемым Nginx, а также один или несколько блоков server для каждой страницы, содержащие директивы для конкретного сайта. Главный файл конфигурации сервера — это nginx.conf и хранит блок http, в то время как специфичные для сайта конфигурации (блоки server) хранятся в sites-available и имеют символические ссылки на sites-enabled.

Права доступа к файлам

Каталог /var/www и все содержащиеся в нем файлы и папки должны принадлежать $USER: www-data (или как там вы называете пользователя/группу Nginx). В разделе Устранение неполадок / Разрешения объясняется, как настроить права доступа к файлам и каталогам для Grav, в данном случае с использованием общей группы. По сути, вам нужно 775 для каталогов и 664 для файлов в каталоге Grav, поэтому Grav может изменять контент и обновлять себя. Вы должны добавить своего пользователя в группу www-data, чтобы вы могли получить доступ к файлам, созданным Grav/Nginx.

Пример nginx.conf

Следующая конфигурация представляет собой улучшенную версию файла по умолчанию /etc/nginx/nginx.conf, в основном с улучшениями из github.com/h5bp/server-configs-nginx. См. их репозиторий для объяснения этих настроек или статьи основная функциональность Nginx и Модуль ngx_http_core_module для поиска конкретных директив.

Рекомендуется использовать обновленный файл определения типов MIME (mime.types) с сайта github.com/h5bp/server-configs-nginx. Это гарантирует, что типы правильно установлены для сжатия gzip.

nginx.conf:

user www-data;
worker_processes auto;
worker_rlimit_nofile 8192; # should be bigger than worker_connections
pid /run/nginx. pid;
events {
    use epoll;
    worker_connections 8000;
    multi_accept on;
}
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 30; # longer values are better for each ssl client, but take up a worker connection longer
    types_hash_max_size 2048;
    server_tokens off;
    # maximum file upload size
    # update 'upload_max_filesize' & 'post_max_size' in /etc/php/fpm/php.ini accordingly
    client_max_body_size 32m;
    # client_body_timeout 60s; # increase for very long file uploads
    # set default index file (can be overwritten for each site individually)
    index index.html;
    # load MIME types
    include mime.types; # get this file from https://github.com/h5bp/server-configs-nginx
    default_type application/octet-stream; # set default MIME type
    # logging
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    # turn on gzip compression
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    gzip_buffers 16 8k;
    gzip_http_version 1. 1;
    gzip_min_length 256;
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rss+xml
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;
    # disable content type sniffing for more security
    add_header "X-Content-Type-Options" "nosniff";
    # force the latest IE version
    add_header "X-UA-Compatible" "IE=Edge";
    # enable anti-cross-site scripting filter built into IE 8+
    add_header "X-XSS-Protection" "1; mode=block";
    # include virtual host configs
    include sites-enabled/*;
}

Конфигурация сайта Grav

Grav поставляется с файлом конфигурации для вашего сайта в каталоге webserver-configs вашей установки Grav. Вы можете скопировать этот файл в каталог конфигурации nginx:

cp /var/www/grav/webserver-configs/nginx.conf /etc/nginx/sites-available/grav-site

Откройте этот файл в редакторе и замените example.com на свой домен/IP (или localhost, если вы хотите просто запустить его локально), замените строку root на root/var/www/grav/;, а затем создайте символическую ссылку на конфигурацию вашего сайта в sites-enabled:

ln -s /etc/nginx/sites-available/grav-site /etc/nginx/sites-enabled/grav-site

Наконец, позвольте Nginx перезагрузить свою конфигурацию:

nginx -s reload

Исправление уязвимостей httpoxy

httpoxy это набор уязвимостей, влияющих на код приложения, работающего в CGI или CGI-подобных средах. (Источник: httpoxy.org)

Чтобы защитить свой сайт от этой уязвимости, вы должны заблокировать заголовок Proxy. Это можно сделать, добавив параметр FastCGI в ваш config. Просто откройте файл /etc/nginx/fastcgi.conf и добавьте эту строку в конец:

fastcgi_param  HTTP_PROXY         "";

Использование SSL (с существующим сертификатом)

Если вы хотите использовать существующий сертификат SSL для шифрования трафика вашего веб-сайта, в этом разделе приведены необходимые шаги для изменения конфигурации Nginx для этого.

Сначала создайте файл /etc/nginx/ssl.conf со следующим содержимым и настройте пути к вашему файлу сертификата и ключа. Последний раздел касается сшивания OSCP и требует, чтобы вы предоставили цепочку + корневой сертификат. Если вы этого не хотите, вы можете прокомментировать или удалить все, что находится под комментарием OCSP Stapling. Если ваш веб-сайт поддерживает только SSL (включая субдомены), вы можете отправить свой домен для предварительной загрузки в браузеры по адресу https://hstspreload.appspot.com. Если это не так, вы можете удалить preload; из строки, которая добавляет заголовок Strict-Transport-Security. Обязательно проверьте, работают ли все эти параметры для вашей установки.

ssl.conf:

# set the paths to your cert and key files here
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m; # a 1mb cache can hold about 4000 sessions, so we can hold 40000 sessions
ssl_session_timeout 24h;
# Use a higher keepalive timeout to reduce the need for repeated handshakes
keepalive_timeout 300s; # up from 75 secs default
# submit domain for preloading in browsers at: https://hstspreload. appspot.com
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;";
# OCSP stapling
# nginx will poll the CA for signed OCSP responses, and send them to clients so clients don't make their own OCSP calls.
# see https://sslmate.com/blog/post/ocsp_stapling_in_apache_and_nginx on how to create the chain+root
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/certs/example.com.chain+root.crt;
resolver 198.51.100.1 198.51.100.2 203.0.113.66 203.0.113.67 valid=60s;
resolver_timeout 2s;

Теперь измените содержимое вашей специфической для Grav конфигурации /etc/nginx/sites-available/grav-site, чтобы перенаправить незашифрованные HTTP-запросы на HTTPS, что означает, что серверный блок прослушивает порт 443 и включает ваш ssl.conf (замените example.com на свой домен/IP). Вы также можете изменить это для перенаправления с версии без www на версию вашего домена с www.

grav-site:

# redirect http to non-www https
server {
    listen [::]:80;
    listen 80;
    server_name example. com www.example.com;
    return 302 https://example.com$request_uri;
}
# redirect www https to non-www https
server {
    listen [::]:443 ssl;
    listen 443 ssl;
    server_name www.example.com;
    # add ssl cert & options
    include ssl.conf;
    return 302 https://example.com$request_uri;
}
# serve website
server {
    listen [::]:443 ssl;
    listen 443 ssl;
    server_name example.com;
    # add ssl cert & options
    include ssl.conf;
    root /var/www/example.com;
    index index.html index.php;
    # ...
    # the rest of this server block (location directives) is identical to the one from the shipped config
}

Наконец, перезагрузите конфигурацию Nginx:

nginx -s reload

Рекомендуется к включению на продакшене. ‘expires’ определяет время истечения срока действия кэша, в данном случае 30 дней. Пожалуйста, ознакомьтесь с полной документацией о http-заголовках для Nginx.

        location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
                expires 30d;
                add_header Vary Accept-Encoding;
                log_not_found off;
        }
        location ~* ^. +\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
                access_log off;
                expires 30d;
                add_header Cache-Control public;
## No need to bleed constant updates. Send the all shebang in one
## fell swoop.
                tcp_nodelay off;
## Set the OS file cache.
                open_file_cache max=3000 inactive=120s;
                open_file_cache_valid 45s;
                open_file_cache_min_uses 2;
                open_file_cache_errors off;
        }

WordPress с Nginx, установите эту CMS локально на Ubuntu 20.04

В следующей статье мы рассмотрим, как мы можем установить WordPress с Nginx на Ubuntu 20.04. Это CMS является одной из наиболее широко используемых систем управления контентом с открытым исходным кодом. Он поддерживает около 60 миллионов веб-сайтов. Он написан на PHP и использует MariaDB / MySQL в качестве базы данных для хранения информации.

В следующих строках мы увидим, как установить WordPress локально с Nginx в Ubuntu 20. 04. По этой причине, прежде чем продолжить это будет необходимо иметь установленный программный стек LEMP в Ubuntu 20.04 для начала.

Индекс

  • 1 Установите WordPress с Nginx в Ubuntu 20.04
    • 1.1 Установить расширения PHP
    • 1.2 Создайте серверный блок Nginx для WordPress
    • 1.3 Создайте базу данных для WordPress
    • 1.4 Скачать WordPress
    • 1.5 Установить WordPress
    • 1.6 Настройте максимальный размер загружаемого файла

Установить расширения PHP

Следующие расширения необходимы для работы WordPress в Ubuntu 20.04.. Чтобы установить их, нам нужно будет только открыть терминал (Ctrl + Alt + T) и выполнить:

sudo apt update && sudo apt install php-dom php-simplexml php-ssh3 php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-imagick php-json php-mbstring php-posix php-sockets php-tokenizer

Создайте серверный блок Nginx для WordPress

Мы создадим серверный блок Nginx для установки WordPress. Для этого серверного блока требуется имя домена, номер порта, корень документа, расположение в реестре и т. Д.. В этом примере я собираюсь использовать следующие данные. Пусть каждый пользователь адаптирует их под свои нужды:

  • Доменное имя: www.wordpress.local
  • Корневой каталог документа: /сайты/www.wordpress.local/public_html/
  • Журналы: /сайты/www.wordpress.local/журналы/

Давай начнем создание файла конфигурации серверного блока в каталоге /etc/nginx/conf.d командой:

sudo vim /etc/nginx/conf.d/www.wordpress.local.conf

Внутри файла мы разместим следующий контент:

server {
        server_name www.wordpress.local;
        root /sites/www.wordpress.local/public_html/;
        index index.html index.php;
        access_log /sites/www.wordpress.local/logs/access.log;
        error_log /sites/www.wordpress.local/logs/error.log;
        # No permitir que las páginas se representen en un iframe en dominios externos
        add_header X-Frame-Options "SAMEORIGIN";
        # Prevención MIME
        add_header X-Content-Type-Options "nosniff";
        # Habilitar el filtro de secuencias de comandos entre sitios en los navegadores compatibles
        add_header X-Xss-Protection "1; mode=block";
        # Evitar el acceso a archivos ocultos
        location ~* /\. (?!well-known\/) {
                deny all;
        }
        # Evitar el acceso a ciertas extensiones de archivo
        location ~\.(ini|log|conf)$ {
                deny all;
        }
        # Habilitar enlaces permanentes de WordPress
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}

Сохраняем файл и выходим. А теперь давай создать корневой каталог документов и каталог записей используя команды:

sudo mkdir -p /sites/www.wordpress.local/public_html/
sudo mkdir -p /sites/www.wordpress.local/logs/

Мы продолжаем проверка файлов конфигурации Nginx:

sudo nginx -t

Сообщение, подобное изображенному на предыдущем снимке экрана, подтвердит правильность конфигурации сервера Nginx. В итоге мы перезапускаем сервис:

sudo systemctl restart nginx.service

Создайте базу данных для WordPress

Войдите в MariaDB / MySQL:

sudo mysql -u root -p

то мы создаем базу данных для WordPress:

CREATE DATABASE wordpress;

Следующее будет создать пользователя:

CREATE USER 'wpusuario'@'localhost' IDENTIFIED BY '123password';

Мы продолжаем предоставление разрешения созданному пользователю для доступа к базе данных:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpusuario'@'localhost';

И мы можем Salir:

quit

Скачать WordPress

Скачиваем последнюю версию WordPress de WordPress.org con Wget:

wget http://wordpress.org/latest.tar.gz

Теперь мы будем извлеките пакет WordPress с командой деготь:

tar -zxvf latest. tar.gz

Следующее будет переместить файлы WordPress в корень документа:

sudo mv wordpress/* /sites/www.wordpress.local/public_html/

Мы продолжаем изменять свойство, чтобы Nginx мог записывать файлы в корень этого документа.:

sudo chown -R www-data:www-data /sites/www.wordpress.local/public_html/
sudo chown -R www-data:www-data /sites/www.wordpress.local/logs/

Теперь мы будем создать запись хоста для домена (в этом примере www.wordpress.local) в файле / Etc / хостов, в случае, если в нашей среде нет DNS-сервера для разрешения имен:

sudo vim /etc/hosts

Внутри файла мы собираемся добавить запись, как показано ниже. Используемый IP-адрес — это мой локальный компьютер.

Установить WordPress

Следуя данным в этом примере, мы будем откройте веб-браузер и посетите URL-адрес:

http://www. wordpress.local

Это приведет нас к Мастер установки WordPress.

Нам придется напишите детали базы данных, чтобы WordPress мог подключиться к ней. Это будут данные созданной ранее базы данных.

Если соединение успешно, мы увидим сообщение об успешном завершении на новом экране. Чтобы продолжить, вам просто нужно нажать на Запускаем установку.

На следующем экране нам нужно будет напишите название сайта, пользователя администратора WordPress, пароль и адрес электронной почты. Мы перейдем к следующему экрану, нажав Установить WordPress.

Если все пойдет хорошо, установка WordPress завершена. Теперь мы можем нажать на Доступ для перехода к администратору WordPress (Backend).

И с этого мы можем приступить к разработке нашего сайта:

Настройте максимальный размер загружаемого файла

По умолчанию PHP не позволяет загружать файлы размером более 2 МБ. Чтобы разрешить загрузку файлов большего размера через веб-интерфейс WordPress, нам нужно будет настроить upload_max_filesize и post_max_size в php.ini..

sudo vim /etc/php/7.4/fpm/php.ini

Здесь мы идем к поиск upload_max_filesize y изменить размер загрузки на 256M, если это то, что вам нужно:

upload_max_filesize = 256M

Мы также поиск post_max_size и мы изменим размер загрузки в соответствии с нашими потребностями:

post_max_size = 256M

Чтобы закончить мы добавим основной модуль client_max_body_size в файле конфигурации сервера Nginx.

sudo vim /etc/nginx/nginx.conf

Директива может быть добавлена ​​в блок HTTP (для всех сайтов), конкретный блок сервера или контекст местоположения.

client_max_body_size 256M;

Сохраняем файл и выходим. В итоге мы перезапускаем сервисы:

sudo systemctl restart php7.4-fpm.service
sudo systemctl restart nginx.service

И с этим у нас будет WordPress установлен локально в Ubuntu 20.04.

Конфигурация Nginx | Пико

Nginx может быть очень мощным, но для Pico требуется дополнительная настройка — давайте разберемся.

Nginx быстро стал серьезным соперником в сфере веб-серверов. Хотя большая часть Интернета по-прежнему использует Apache для обслуживания веб-контента, мы признаем, что растущая часть наших пользователей может быть заинтересована в развертывании Pico на Nginx вместо Apache. Развертывание Pico на Apache на данный момент относительно безболезненно, с 9-ю возможностями Pico.0005 .htaccess , содержащий почти всю необходимую конфигурацию.

В отличие от Apache, Nginx использует «централизованную» конфигурацию. Apache просматривает каждую папку в поисках файлов .htaccess . Эти файлы содержат дополнительные параметры конфигурации, часто развертываемые с размещенным программным обеспечением, чтобы упростить их настройку. Pico не является исключением, и в большинстве случаев Pico .htaccess предоставляет все настройки, необходимые для его запуска и работы без вмешательства пользователя.

Эта «распределенная» конфигурация может затруднить понимание того, что на самом деле происходит за кулисами. Конфигурация Apache может быть распределена по стольким папкам, сколько предоставляют ваши веб-приложения (или ваш собственный контент).

Для сравнения, «централизованная» конфигурация Nginx расположена в одном месте. На сервере Linux эта конфигурация обычно находится в /etc/nginx , но это может варьироваться в зависимости от дистрибутива и ОС. Хотя настройка Nginx в целом выходит за рамки этого документа, мы надеемся предоставить вам достаточно информации, чтобы преодолеть любые препятствия, с которыми вы можете столкнуться.

Если вы переходите с Apache, эта статья (также указанная выше) и это руководство содержат отличный обзор различий между ними и изменений, которые вам придется внести.

Начало работы

Хотя пример, представленный на предыдущей странице, является хорошей отправной точкой, здесь мы более подробно рассмотрим настройку Nginx.

Мы разбили процесс настройки Pico на три сегмента в дополнение к общей настройке сервера. Три набора правил, которые мы будем разрабатывать, обеспечивают следующие функции: запрет доступа к внутренним файлам Pico, настройка PHP и настройка перезаписи URL-адресов Pico. Хотя это, пожалуй, самая важная функция, мы будем настраивать перезапись URL в последнюю очередь из-за порядка, в котором Nginx обрабатывает свою конфигурацию. Сказав это: порядок ваших правил имеет значение в Nginx, поэтому убедитесь, что правила имеют тот же порядок, который мы обсуждаем в этом документе.

Общая конфигурация сервера

Конфигурация сервера Nginx разбита на блоки. Каждый веб-сайт имеет свой собственный блок сервера внутри вашей конфигурации Nginx. Хотя настройка сайтов Nginx, виртуальных хостов и другие аспекты этой темы выходят за рамки этого руководства, мы предоставим достаточно, чтобы вы хотя бы начали работу с Pico.

 сервер {
слушать 80;
имя_сервера www.example.com example.com;
корень /var/www/html/pico;
индекс index.php;
}
 

Давайте разберем этот пример. Первая линия, listen 80 указывает Nginx прослушивать порт 80 для входящих подключений. Это порт по умолчанию, используемый веб-трафиком, и вы захотите использовать его в 99% случаев. server_name — здесь вы указываете, какое доменное имя или имена соответствуют этой конфигурации. Скорее всего, вы захотите включить свой домен как с адресом www, так и без него. субдомен. root позволяет указать корневой каталог документа для этого сайта. Обычно это место, где вы установили Pico, но в конечном итоге это зависит от вашей конфигурации. index.php сообщает Nginx, что индексный файл вашего сайта будет называться index.php .

Мы настоятельно рекомендуем вам рассмотреть возможность защиты вашего веб-сайта с помощью HTTPS. Использование HTTPS обеспечит вашим пользователям дополнительную защиту и не позволит третьим лицам отслеживать их веб-трафик. К сожалению, настройка SSL выходит за рамки этого документа, но мы будем рады указать вам правильное направление. Чтобы легко настроить SSL-сертификат, вы можете проверить Let’s Encrypt и это руководство. Для получения более общей информации см. собственную документацию Nginx о настройке HTTPS-серверов.

Ниже мы добавим еще несколько разделов в эту конфигурацию сервера. Все следующие примеры должны быть помещены внутри блока server перед закрывающим } .

Отказ в доступе к внутренним файлам Pico

Одной из важных функций, предоставляемых файлом .htaccess Pico, является отказ в доступе к некоторым внутренним файлам и каталогам Pico. Для этого есть две простые причины: дополнительная безопасность и простота использования. Мы не хотим, чтобы кто-то шнырял и читал файлы, которых быть не должно (например, ваши 9/((config|content|vendor|composer\.(json|lock|phar))(/|$)|(.+/)?\.(?! well-known(/|$))) {
try_files /index.php$is_args$args =404;
}

Это правило возвращает страницу Pico 404 Not Found , если кто-то пытается получить доступ к одному из внутренних файлов Pico, например config/config.yml . Мы рекомендуем это, так как в целом это хорошая практика. Пользователям не нужен доступ к этим файлам, так зачем разрешать?

Для упрощения настройки в приведенном выше примере предполагается, что вы установили Pico в корневую папку документов вашего сайта. Если вы предпочитаете устанавливать Pico во вложенную папку, вам придется использовать путь, начинающийся от корня документа вашего сайта до каталога установки Pico. Итак, если ваш корень документа равен 9/pico/((config|content|vendor|composer\. (json|lock|phar))(/|$)|(.+/)?\.(?! well-known(/|$))) {
try_files /pico/index.php$is_args$args =404;
}

Конфигурация PHP

Эта тема выходит за рамки данного документа. В отличие от Apache (который автоматически отправляет документы в PHP в большинстве конфигураций по умолчанию), Nginx нужно сообщить , чтобы отправить файл на внешний PHP-процессор.

Настройка PHP — это тема, которая немного отличается в зависимости от используемой ОС. Приведенные здесь примеры относятся к Ubuntu 14.04, но они также требуют внешней конфигурации php-fpm или другой процессор PHP.

Ваша конфигурация PHP будет выглядеть примерно так:

 location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
включить fastcgi_params;
# Сообщить Pico о доступной перезаписи URL
fastcgi_param PICO_URL_REWRITING 1;
}
 

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

Это правило location указывает Nginx отправлять все страницы, оканчивающиеся на .php , на внешний процессор PHP с именем php-fpm . Опять же, настройка этого выходит за рамки этого документа. Есть много учебных пособий, доступных в Интернете. Вот один для Ubuntu 14.04.

По умолчанию php-fpm имеет очень небезопасную настройку, которая может допустить несанкционированное выполнение кода. Мы включили сюда небольшую инструкцию try_files , которая защитит вас от этой уязвимости.

Строка fastcgi_param PICO_URL_REWRITING 1; информирует Pico о том, что перезапись URL-адреса доступна, поэтому вам не нужно явно устанавливать rewrite_url: true в вашем config/config.yml .

Перезапись URL-адресов

Настройка перезаписи URL-адресов Pico иногда бывает немного сложной в Nginx. В зависимости от того, установили ли вы Pico в корневую папку документов вашего сайта или во вложенную папку, правила различаются.

 местоположение / {
try_files $uri $uri/ /index.php$is_args$args;
}
 

Это правило сообщает Nginx, что всякий раз, когда он ищет URL-адрес на вашем сайте, он должен сначала искать файл с таким именем, затем каталог и, наконец, если их не существует, он должен переписать URL-адрес для Pico. Когда URL переписывается для Pico, запрос передается на index.php . Nginx загрузит index.php и передаст рендеринг вашему процессору PHP.

Если вы установили Pico во вложенную папку, настройка немного сложнее, но должна быть легкой, если вы будете следовать инструкциям. Вместо того, чтобы искать только / , вам нужно будет использовать путь, начинающийся от корня документа вашего сайта до каталога установки Pico. Таким образом, если корневой каталог вашего документа — /var/www/html , а Pico установлен на /var/www/html/pico , ваше правило должно соответствовать /pico/ вместо / (строки 1 и 2 ).

 расположение /пико/ {
    try_files $uri $uri/ /pico/index.php$is_args$args;
}
 

Пример конфигурации

Если объединить все приведенные выше примеры, ваша конфигурация будет выглядеть примерно так: 9/((config|content|vendor|composer\.(json|lock|phar))(/|$)|(.+/)?\.(?! well-known(/|$))) {
try_files /index.php$is_args$args =404;
}
расположение ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
включить fastcgi_params;
# Сообщить Pico о доступной перезаписи URL
fastcgi_param PICO_URL_REWRITING 1;
}
расположение / {
try_files $uri $uri/ /index.php$is_args$args;
}
}

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

Как установить Bludit CMS с NGINX на Ubuntu 20.

04


по

Хитеш Джетва

Атлантик.Нет

(468 сообщений)
под VPS Хостинг

Bludit — это бесплатная файловая система управления контентом с открытым исходным кодом, которая поможет вам разместить блог-сайт за минуту. Он написан на PHP и использует плоские файлы для хранения сообщений и страниц. Вам не нужно устанавливать какую-либо систему баз данных в вашей системе, чтобы использовать Bludit. Он очень похож на другие системы управления контентом, включая Drupal, Joomla и WordPress, и предлагает богатый набор функций, включая оптимизацию для SEO, поддержку WYSIWYG, гибкую структуру CSS и многое другое.

В этом руководстве мы объясним, как установить и настроить Bludit CMS на сервере Ubuntu 20.04.

Предварительные требования

  • Новый Ubuntu 20.04 VPS на облачной платформе Atlantic.Net
  • Пароль root, настроенный на вашем сервере

Шаг 1. Создайте облачный сервер Atlantic.Net

Сначала войдите в свой облачный сервер Atlantic.Net. Создайте новый сервер, выбрав Ubuntu 20.04 в качестве операционной системы с оперативной памятью не менее 2 ГБ. Подключитесь к вашему облачному серверу через SSH и войдите в систему, используя учетные данные, выделенные вверху страницы.

После входа на сервер Ubuntu 20.04 выполните следующую команду, чтобы обновить базовую систему с помощью последних доступных пакетов.

 apt-get update -y 

Шаг 2. Установите сервер LAMP

Сначала вам необходимо установить Nginx, PHP и другие необходимые пакеты в вашей системе. Вы можете установить их все с помощью следующей команды:

 apt-get install nginx php php-cli php-fpm php-common php-mbstring php-zip php-pgsql php-sqlite3 php-curl php-gd php-mysql php -intl php-json php-opcache php-xml распаковать git curl -y 

Приведенная выше команда также установит пакет Apache в вашей системе, но рекомендуется удалить его из вашей системы. Вы можете удалить его с помощью следующей команды:

 apt-get remove apache2 --purge 

Затем отредактируйте файл php.ini и внесите необходимые изменения:

 nano /etc/php/7.4/fpm/php.ini 

Измените следующие значения:

 memory_limit = 512M
upload_max_filesize = 32M
date.timezone = Asia/Kolkata 

Сохраните и закройте файл, затем перезапустите службу PHP-FPM, чтобы применить изменения:

 systemctl перезапуск php7. 4-fpm 

Шаг 3 – Установите Bludit CMS

Сначала вам нужно скачать последнюю версию Bludit с официального сайта. Вы можете загрузить его с помощью следующей команды:

 wget https://www.bludit.com/releases/bludit-3-13-1.zip 

После загрузки разархивируйте загруженный файл с помощью следующей команды:

 unzip bludit-3-13-1.zip 

Затем переместите извлеченный каталог в корневой каталог Nginx:

 mv bludit-3-13-1 /var/www/html/bludit 

Затем измените владельца и предоставьте необходимые разрешения для каталога bludit:

 chown -R www-data:www-data /var/www/ html/блудит
chmod -R 775 /var/www/html/bludit 

Шаг 4. Настройка Nginx для Bludit

Сначала вам нужно создать файл конфигурации виртуального хоста Nginx для Bludit. Вы можете создать его с помощью следующей команды:

 nano /etc/nginx/sites-available/bludit.conf 

Добавьте следующие строки: 9~ /bl-content/databases/ {запретить все; }
}

Сохраните и закройте файл, затем активируйте виртуальный хост Nginx с помощью следующей команды:

 ln -s /etc/nginx/sites-available/bludit. conf /etc/nginx/sites-enabled/ 

Далее, проверьте Nginx на наличие синтаксических ошибок с помощью следующей команды:

 nginx -t 

Вы должны получить следующий вывод:

 nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке.
nginx: проверка файла конфигурации /etc/nginx/nginx.conf прошла успешно 

Наконец, перезапустите службу Nginx, чтобы применить изменения конфигурации:

 systemctl перезапустить nginx 

Шаг 5. Доступ к веб-интерфейсу Bludit

Теперь откройте веб-браузер и войдите в систему управления контентом Bludit, используя URL-адрес -домен.com . Вы должны увидеть следующий экран:

Выберите нужный язык и нажмите кнопку Next . Вы должны увидеть следующий экран:

Установите пароль администратора и нажмите кнопку 9.0053 Установить кнопку . Вы должны увидеть следующий экран:

Нажмите на кнопку панели администратора .