Запуск нескольких сайтов Nginx на Ubuntu 18.04
Я новичок в 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
1 ответ
Шаги будут следующие (предположения:- 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, в какой блок следует вернуться, если запрошенное имя_сервера не соответствует ни одному из доступных блоков сервера.
- Причина:
Создать символические ссылки:
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/