Выполнение нескольких сайтов 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
задан 26 August 2018 в 18:55

1 ответ

Шаги были бы (предположения:-установленный Nginx):

  1. Создайте блоки сервера для обоих или всех Ваших сайтов в /var/www/папка:

    sudo mkdir -p /var/www/mytest1.com/public_html
    sudo mkdir -p /var/www/mytest2.com/public_html
    
  2. Измените полномочия позволить доступ для чтения обычных пользователей и доступ для записи:

    sudo chown -R $(whoami):$(whoami) /var/www/mytest1.com/public_html
    sudo chown -R $(whoami):$(whoami) /var/www/mytest2.com/public_html
    
  3. Полномочия набора так страницы могут быть вручены правильно:

    sudo chmod -R 755 /var/www
    
  4. Создайте две страницы для испытательных площадок:

    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
    
  5. Создайте блоки сервера:

    1. Скопируйте по значению по умолчанию nginx файл значения по умолчанию домашней страницы:

      sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mytest1.com
      
    2. Отредактируйте скопированный файл:

      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;
  6. Сделайте значение для 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
      
  7. Повториться 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, который требуют, не соответствует ни одному из доступных блоков сервера.

  8. Создайте Символьные ссылки:

    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/
    
  9. Удалите Символьную ссылку для блока сервера по умолчанию:

    sudo rm /etc/nginx/sites-enabled/default
    
  10. Перезапуск 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/

https://devanswers.co/installing-php-nginx-ubuntu-18-04/

2
ответ дан 7 December 2019 в 13:21

Другие вопросы по тегам:

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