поэтому я использую сервер Ubuntu 20.04 с Nginx.
После трудной недели мне удалось заставить его нормально работать, включая php через php-fpm.
Моя проблема в том, что мне не нужны сотни папок в корневом каталоге моего веб-сайта (установленном в /var/www/www.my-domain.com/), поэтому я хотел бы поместить все расширения, связанные с php, которые я устанавливаю (например, как phpmyadmin и IceCoder) в другой папке (скажем, /var/php/) и связать все запросы индекса php из корневой папки (например, если я наберу https://мой-домен.com/icecoder или же https://мой-домен.com/phpmyadmin), чтобы перенаправить меня в папку, где находятся их файлы index.php.
Проблемы с этим следующие:
- во-первых, я не знаю, как заставить работать символическую ссылку (я знаю команду «ln -s target target»), но она никогда не работает.
- во-вторых, я не знаю, как настроить файл default.conf, чтобы это произошло.
Я попытался надуть простой index.php с <?php phpinfo();?>
внутри в папке /php в моей корневой папке, но когда я получаю к ней доступ через браузер, я получаю сообщение об ошибке «Нет настройки ввода файла». Если я попытаюсь просто получить доступ к указанной папке (например, https://мой-домен.com/icecoder) Я оказываюсь на своем веб-сайте, и для этого работает прямой адрес к этому файлу index.php ... за исключением того, что я получаю только «рабочее» состояние в течение нескольких часов, текст, но не css. Инструменты разработчика даже не загружаются.
Вот мои файлы конфигурации (мой реальный домен анонимизирован под моим доменом):
nginx.conf
www-данные пользователя;
рабочие_процессы авто;
error_log /var/log/nginx/error.log уведомление;
pid /var/run/nginx.pid;
События {
worker_connections 1024;
}
http {
включить /etc/nginx/mime.types;
#include /etc/nginx/sites-available/*.conf;
#default_type приложение/октет-поток;
#корень /var/www;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$статус $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
журнал_доступа /var/log/nginx/access.log основной;
отправить файл включен;
#tcp_npush включен;
keepalive_timeout 65;
#gzip включен;
включить /etc/nginx/conf.d/*.conf;
}
default.conf
сервер {
имя_сервера мой_домен.com;
#access_log /var/log/nginx/host.access.log main;
корень /var/www/www.мой_домен.com;
индекс index.html index.php;
место расположения / {
try_files $uri /index.html index.php =404;
}
# перенаправить страницы ошибок сервера на статическую страницу /50x.html
#
error_page 500 502 503 504 /50x.html;
местоположение = /50x.html {
корень /var/www/www.мой_домен.com;
}
страница_ошибки 404 /40x.html;
местоположение = /40x.html {
корень /var/www/www.мой_домен.com;
}
# проксировать PHP-скрипты для Apache, прослушивающего 127.0.0.1:80
#
#местоположение ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# передать PHP-скрипты серверу FastCGI, прослушивающему 127.0.0.1:9000
#
расположение ~ [^/]\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param PHP_VALUE open_basedir="/var/www/www.my_domain.com/:/var/www/www.my_domain.com/php/";
включить fastcgi_params;
}
# Параметр SCRIPT_FILENAME используется для определения PHP FPM
# имя скрипта. Если он не установлен в файле fastcgi_params,
# т.е. /etc/nginx/fastcgi_params или в родительских контекстах,
# прокомментируйте следующую строку:
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
расположение ~/\.{ # le "~" indique une regex que "/" démarre, ici tout ce qui a un "." другой php или html
отрицать все;
доступ_лог выключен;
log_not_found выключен;
}
слушать 443 ssl; # под управлением Certbot
ssl_certificate /etc/letsencrypt/live/my_domain.com/fullchain.pem; # под управлением Certbot
ssl_certificate_key /etc/letsencrypt/live/my_domain.com/privkey.pem; # под управлением Certbot
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}
сервер {
слушать 80;
имя_сервера www.мой_домен.com;
вернуть 301 https://$server_name$request_uri; # перенаправляет http запросы на сайт https
}
сервер {
слушать 80;
слушать 443 ssl;
имя_сервера мой_домен.com;
вернуть 301 http://www.my_domain.com$request_uri;
}
вот ls -l корневой папки
-rw-r--r-- 1 www-data www-data 507 21 сен 20:03 40x.html
-rw-r--r-- 1 www-data www-data 507 21 сен 20:04 50x.html
drwxr-xr-x 6 www-data www-data 4096 26 августа 23:45 ресурсы
-rw-r--r-- 1 www-data www-data 83243 27 августа 02:19 favicon.ico
-rw-r--r-- 1 www-data www-data 25942 27 августа 02:19 favicon.png
drwxr-xr-x 13 www-data www-data 4096 21 сентября 17:34 ICE
-rw-r--r-- 1 www-data www-data 63175 21 сентября 15:58 index.html
-rw-r--r-- 1 www-data www-data 19 сен 20 22:24 index.php
drwxr-xr-x 2 www-data www-data 4096 27 августа 00:31 обслуживание
drwxr-xr-x 15 www-data www-data 4096 21 сентября 16:08 страницы
lrwxrwxrwx 1 root root 12 сен 21 21:36 php -> /var/www/php
drwxr-xr-x 6 www-data www-data 4096 8 сентября 16:13 разделы
и папки /var/php
drwxr-xr-x 13 www-data www-data 4096 21 сентября 17:34 icecoder
-rw-r--r-- 1 www-data www-data 19 сен 21 21:39 index.php
lrwxrwxrwx 1 root root 12 21 сентября 21:48 php -> /var/www/php
drwxr-xr-x 2 www-данные www-данные 4096 21 сентября 21:37 phpmyadmin
Все мои папки в 755 и файлы внутри в 644 моде.
Спасибо за любую помощь, которую вы можете мне дать