Я - новичок с Nginx (также использующий PHP 7.2), и я понятия не имею, как получить доступ к нескольким сайтам с помощью разделенных папок.
Таким образом, как папка по умолчанию я установил /home/user/php;
.
Там у меня есть немного названных папок: site1, site2, site3 etc
.
Используя терминал я запускаю сервер на своей папке по умолчанию с командой php -S localhost:8000
.
И вот проблема, когда я ввожу в браузере localhost:8000/site1/
это показывает то, что находится в index.php файле, но смешивает с другими файлами в том месте. Например, изображения. У меня есть папка с png файлами, расположенными в /php/site1/images/
. Но они не обнаруживаются на странице в браузере, потому что, согласно терминальному журналу, это ищет те png файлы в /php/images/
(который не существует), и не в /php/site1/images/
. Все ищется в папке сервера по умолчанию, не в подпапках с сайтами. Как изменить файл конфигурации или что сделать, чтобы заставить его считать отдельные папки??
Вот моя конфигурация Nginx (/etc/nginx/sites/available/default
): https://pastebin.com/pZHgPkCZ
Шаги были бы (предположения:-установленный Nginx):
Создайте блоки сервера для обоих или всех Ваших сайтов в /var/www/
папка:
sudo mkdir -p /var/www/mytest1.com/public_html
sudo mkdir -p /var/www/mytest2.com/public_html
Измените полномочия позволить доступ для чтения обычных пользователей и доступ для записи:
sudo chown -R $(whoami):$(whoami) /var/www/mytest1.com/public_html
sudo chown -R $(whoami):$(whoami) /var/www/mytest2.com/public_html
Полномочия набора так страницы могут быть вручены правильно:
sudo chmod -R 755 /var/www
Создайте две страницы для испытательных площадок:
sudo echo "Welcome to mytest1.com!" > /var/www/mytest1.com/public_html/index.html
sudo echo "Welcome to mytest2.com!" > /var/www/mytest2.com/public_html/index.html
Создайте блоки сервера:
Скопируйте по значению по умолчанию nginx файл значения по умолчанию домашней страницы:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mytest1.com
Отредактируйте скопированный файл:
sudo nano /etc/nginx/sites-available/mytest1.com
root /var/www/html;
кому: root /var/www/mytest1.com/public_html;
server_name _;
кому: server_name mytest1.com www.mytest1.com;
index index.html index.htm index.nginx-debian.html;
к этому index index.php index.html index.htm index.nginx-debian.html;
Сделайте значение для fastcgi_pass socket
путь корректен:
Выполненный: ls /var/run/php/
Результаты:
php7.2-fpm.pid php7.2-fpm.sock
Добавьте php7.2-fpm.socket
местоположение в файле блока сервера, если примечание, указывающее в правильном направлении и, видят, что часть местоположения файла похожа так, удалите #
достигнуть этого в некоторых областях:
...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
...
Закройте редактора и протестируйте nginx конфигурацию с sudo nginx -t
. Посмотрите, что любые ошибки повторяют шаги назад. Для допустимого синтаксиса Вы будете видеть:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Повториться step 5 and 6
для другого использования сайта mytest2.com
где мы имели mytest1.com
для сайта один, дополнительно для второго сайта делают следование при редактировании /etc/nginx/sites-available/mytest2.com
изменение файла это:
listen 80 default_server;
listen [::]:80 default_server;
к этому:
listen 80;
listen [::]:80;
Только один блок сервера может иметь default_server спецификацию. Это говорит Nginx, какой блок вернуться к тому, если server_name, который требуют, не соответствует ни одному из доступных блоков сервера.
Создайте Символьные ссылки:
sudo ln -s /etc/nginx/sites-available/mytest1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/mytest2.com /etc/nginx/sites-enabled/
Удалите Символьную ссылку для блока сервера по умолчанию:
sudo rm /etc/nginx/sites-enabled/default
Перезапуск Nginx:
sudo service nginx restart
11: Дополнительный: Файл hosts Редактирования:
127.0.0.1 mytest1.com
127.0.0.1 mytest2.com
Теперь перейдите к своему браузеру и типу localhost
, или mysite1.com
если Вы сделали записи в /etc/hosts
файл. Теперь также обратите внимание, что nginx слушает на порте 80
нет 8080
. Не php сервер.
Ресурс:
https://devanswers.co/installing-nginx-ubuntu-18-04-multiple-domains/