Задать вопрос
@Alexxx23

Как «подружить» nginx 1.26.2 и php 8.2?

Всем привет. Пытаюсь настроить сервер на Ubuntu 20. Решил поставить на него nginx 1.26.2 и php 8.2. Настраиваю все по стандарту, но все как то не получается их "подружить". Файлы сайта залиты в директорию /var/www/. В файл /etc/nginx/sites-available/your_domain прописан конфиг:
server {
    listen 80;
    server_name домен www.домен;
    root /var/www/домен;

    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

}

Конфиг активирован командой sudo ln -s /etc/nginx/sites-available/домен /etc/nginx/sites-enabled/
Отсоединен от дефолтного командой sudo unlink /etc/nginx/sites-enabled/default
Nginx перезагружен и прекрасно работает (Welcome to nginx! в браузере) .
PHP так же в консоле не показывает ничего отрицательного:
* php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2025-01-01 19:59:41 MSK; 12h ago
       Docs: man:php-fpm8.2(8)
   Main PID: 16228 (php-fpm8.2)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0.00req/sec"
      Tasks: 3 (limit: 4630)
     Memory: 10.2M
     CGroup: /system.slice/php8.2-fpm.service
             |-16228 php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)
             |-16244 php-fpm: pool www
             `-16245 php-fpm: pool www

Jan 01 19:59:41 host systemd[1]: Starting The PHP 8.2 FastCGI Process Manager...
Jan 01 19:59:41 host systemd[1]: Started The PHP 8.2 FastCGI Process Manager.


Однако CMS Wordpress упорно не хочет запускаться. Подозреваю что что то не так в конфиге. Нужна подсказка. Всем заранее спасибо!
  • Вопрос задан
  • 196 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@SorryMeLame
Привет. Проверь точно ли на сокете запущен php-fpm из коробки он на 9000 порту болтается.
socat -u OPEN:/dev/null UNIX-CONNECT:/run/php/php8.2-fpm.sock


Скорее всего
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
на
fastcgi_pass localhost:9000;
надо поменять
Ответ написан
Комментировать
Afranius
@Afranius
Из говорящих дольше живут те, что говорят меньше.
Создай на хосте файл test.php с содержимым:
<?php phpinfo(); ?>
И проверяй, обращаясь на your_domain/test.php а не сразу установкой CMS

Ну и проверь, реально ли файл сокета php существует, к нему есть доступ и php реально работает в chroot в папке /var/www (путь к файлу сокета /var/www/run/php/php8.2-fpm.sock;)

Скорее всего у тебя php не в chroot и nginx просто не видит файл сокета.
Кстати, nginx у тебя в chroot работает?
Ответ написан
Комментировать
@anree_avery
Недавно задавался этим вопросом, действительно есть подводные камни.

Отредактируйте файл конфигурации Nginx вашего сайта:
nano /etc/nginx/conf.d/default.conf

default.conf может быть любым вашим конфигом.
Добавьте следующие изменения в блок расположения для обработки файлов PHP (в примере используется версия 8.2, если исползуется другая версия, то укажите вашу).
Перенестите корневой каталог сайта и root и index в server
root /usr/share/nginx/html;
index index.html index.htm

Отредактируйте location ~ \.php$ {

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    try_files $fastcgi_script_name =404;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

На всякий случай копия файла /etc/nginx/fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Разкомментируйте строки:

location ~ /\.ht {
    dany    all;
}

Перезапустите Nginx
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы