Я просто обновил сервер Ubuntu 16.04 к 18,04 использованиям sudo do-release-upgrade
. Nginx является веб-сервером. Отчет 404 о сайтах. Во время установки я принял решение сохранить в настоящее время установленную версию.
$ ps aux | grep nginx
root 1477 0.0 0.0 141120 1568 ? Ss 06:36 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 1478 0.0 0.2 143752 6160 ? S 06:36 0:00 nginx: worker process
www-data 1479 0.0 0.2 143752 6160 ? S 06:36 0:00 nginx: worker process
Nginx петляет /etc/nginx/sites-available/default
настроен, как это было.
PHP также работает:
$ ps aux | grep php
root 1319 0.0 0.5 290448 17208 ? Ss 06:36 0:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
www-data 1486 0.0 0.2 292744 7464 ? S 06:36 0:00 php-fpm: pool www
www-data 1487 0.0 0.2 292744 7464 ? S 06:36 0:00 php-fpm: pool www
Когда я перешел к содержанию веб-страниц как текст, или pdfs или изображениям с помощью полного URL, содержание отображено. но когда я ввожу имена сценария, или веб-страница называет свои 404.
рассмотрение журнала ошибок:
$ sudo tail -n 20 /var/log/nginx/error.log
2020/03/22 06:37:21 [crit] 1478#1478: *2 connect() to unix:/run/php/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 141.114.192.156, server: DomainName, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "192.168.1.104"
(измененный IP, и записал в части DomainName), возможно, сервер ищет несправедливость php версия?
$ php --version
PHP 7.2.24-0ubuntu0.18.04.3 (cli) (built: Feb 11 2020 15:55:52) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Таким образом я понял что файл /etc/nginx/sites-available/default
указывает на неверную версию php. Прекрасный, я изменил его от php7.0 до php7.2. теперь я получаю "Доступ запрещен" для веб-страниц. вот моя установка "по умолчанию":
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/user/public_html;
index index.php index.html index.htm;
server_name server.name.omited.org;
location / {
try_files $uri $uri/ =404;
autoindex on;
}
error_page 404 /404.html;
error_page 500 502 503 504 /404.html;
location = /50x.html {
root /home/user/public_html;
}
location ~ \.php$|\.html|\.htm {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Хорошо я сделал небольшие успехи, поняв, что php7 был в неверной версии, я затем понял, что должен буду также включить php7.2 на сервере.
sudo systemctl enable php7.2-fpm
Я все еще получаю доступ запрещен для всех веб-страниц HTML, но, php веб-страницы при прямом доступе отобразят надлежащее содержание.
Я изменил security.limit_extensions = .php .html
термин в /etc/php/7.0/fpm/pool.d/www.conf
как предложено здесь: индексная страница теперь появляется, HTML и сценарии PHP обе работы. ни одна из ссылок на другую работу страниц, все они все еще придумывают "Доступ запрещен"
затем я понял, что существуют .htm страницы.
Хорошо я получил его. Сладкое облегчение!
Когда я обновил (выполнение sudo do-release-upgrade
), я сохранил установленную версию NGINX, и я думал, что получу подобное предложение сохранить или обновить php7.0. Этого не произошло. То, когда обновление завершило что-то, произошло с php7.0, представляющим его бесполезный.
Я должен был изменить некоторые файлы для получения моего сервера, работающего снова. Файлы, которые я отредактировал, были: /etc/nginx/sites-available/default
/etc/php/7.2/fpm/pool.d/www.conf
Я работал sudo apt install php7.2 php7.2-fpm php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache
обновить php7.2. Это сделало обновление к php7.2. Сервер сообщил о версии php7.2 до выполнения этого шага, но это не работало, таким образом, я обновил его так или иначе.
Я затем изменил мой /etc/nginx/sites-available/default
файл для включения строки: fastcgi_pass unix:/run/php/php7.2-fpm.sock;
это указывает на nginx на версию php, который я теперь установил.
затем, я работал sudo systemctl enable php7.2-fpm
sudo systemctl start php7.2-fpm
включить php7.2 и запустить его.
Сценарии PHP теперь работают, но только при прямом доступе. HTML и htm страницы со встроенным php все еще не работают на этом шаге.
Я протестировал свои nginx файлы конфигурации с: sudo nginx -t sudo systemctl reload nginx
nginx файлы конфигурации не дали ошибок. но на этом шаге, htm и страницы HTML все еще показывали "Доступ запрещен".
Затем я изменил строку 389 из /etc/php/7.2/fpm/pool.d/www.conf
включать строку: security.limit_extensions = .php .html .htm
Затем я перезапустил php7.2: sudo systemctl restart php7.2-fpm.service
В этой точке теперь вел себя сервер, как я буду ожидать: компоненты страницы HTML рендеринга сценария PHP, htm, и файлы HTML представляют правильно.
После этого мой сервер работал
Вы могли создать phpinfo файл, чтобы видеть, анализируется ли php правильно?
<?php // Show all information, defaults to INFO_ALL phpinfo();
Вы перезапустили/перезагрузили свой php-fpm?