Django развертывание в Hostgator VPS - PullRequest
1 голос
/ 17 апреля 2020
  • Я пытаюсь запустить django, используя модуль mod_wsgi в easyapache4 на CentOS 7 VPS, предоставленном Hostgator.
  • Я новичок в этом. У меня нет опыта развертывания приложений Django на живых серверах, но я развернул в локальной сети нашего офиса на сервере с Ubuntu.
  • Я несу ответственность за развертывание Django приложений на Hostgator VPS, которые у нас уже были для развертывания сайтов Wordpress, Magento на базе PHP, и мы не собираемся вкладывать деньги в других провайдеров, так как мы У нас уже есть VPS.

У нашей учетной записи VPS для Hostgator Reseller есть CentOS 7, просто apache 4, и я успешно установил mod_wsgi, который не был предварительно установлен.

Случай 1: PHP и Django в одном домене

Мы обычно запускаем наши клиентские проекты в нашем домене, например www.ourdomain.com/php/php_project_one/. Чтобы запустить django в том же домене по другому пути к как www.ourdomain.com/python/python_project_one/ как должна быть конфигурация виртуального хоста?

Я знаю, что всякий раз, когда я регистрирую новую учетную запись пространства сервера через WHM, в конфигурационный файл apache для этого конкретного домена добавляется конфигурация виртуального хоста. Итак, должен ли я редактировать эту конфигурацию виртуального хоста для создания указанного Case 1 ?

Я попытался добавить дополнительную конфигурацию в конец существующей конфигурации виртуального хоста для www.ourdomain.com загрузив внешний файл конфигурации, который включал конфигурацию python, которая не работала. Не было ошибок в конфигурационном файле. Apache успешно перезапущен. PHP работал нормально. В папке проекта Python отображается «Внутренняя ошибка сервера 500» с загруженной конфигурацией python и «У вас нет прав для просмотра этой папки» без загруженной конфигурации python.

Случай 2: Django только для домена

Только для python проектов, если я создаю учетную запись через WHM, язык конфигурации по умолчанию будет php. Мне нужно полностью изменить этот домен, чтобы он работал над python проектами. Итак, скажем www.pythondomain.com. Должен ли я очистить всю конфигурацию виртуального хоста по умолчанию для www.pythondomain.com и изменить конфигурацию, указав python среду и папку? Я знаю, что загружено много модулей (я не знаю каждый из них, что он делает), которые используются в целях безопасности и по другим причинам, не должны ли они быть загружены тоже?

Все, что я пытался сделать, это Случай 1 в нашем домене, что является предпочтительным.

Это часть основного apache conf файла. Этот виртуальный хост предназначен для субдомена www.python.ourdomain.com.

Кроме того, этот каталог субдомена находится в www.ourdomain.com public_ html. ie, одни и те же файлы php / html могут быть загружены как с www.python.ourdomain.com, так и с www.ourdomain.com/python/

<VirtualHost ipaddress:80>
    ServerName python.ourdomain.com
    ServerAlias www.python.ourdomain.com
    DocumentRoot /home/user/public_html/python
    ServerAdmin webmaster@python.ourdomain.com
    UseCanonicalName Off

    # some of the modules loaded are : suphp_module, mod_passenger.c

    <IfModule proxy_fcgi_module>
        <FilesMatch \.(phtml|php[0-9]*)$>
            SetHandler proxy:unix:/opt/cpanel/ea-php71/root/usr/var/run/php-fpm/a02f2d3c0dcb7df70a4c8c597f92c4f4e90c6349.sock|fcgi://python.ourdomain.com
        </FilesMatch>
    </IfModule>


    # To customize this VirtualHost use an include file at the following location
    Include "/etc/apache2/conf.d/userdata/std/2_4/user/python.ourdomain.com/*.conf"
</VirtualHost>

Я добавил файл conf в /etc/apache2/conf.d/ userdata / std / 2_4 / user / python .ourdomain.com /, который включает:

    Alias /static /home/user/public_html/python/billing/static
    Alias /media /home/user/public_html/python/billing/media

    <Directory /home/user/public_html/python/billing/static>
        Require all granted
    </Directory>

    <Directory /home/user/public_html/python/billing/media>
        Require all granted
    </Directory>

    <Directory /home/user/public_html/python/billing/billing>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess billing python-path=/home/user/public_html/python/billing:/home/user/public_html/python/billing/venv/lib/python3.6/site-packages
    WSGIProcessGroup billing
    WSGIScriptAlias / /home/user/public_html/python/billing/billing/wsgi.py

mod_wsgi загружен. Проверено.

# sudo /usr/sbin/httpd -M
[sudo] password for user:
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 ...
 suphp_module (shared)
 wsgi_module (shared)
 passenger_module (shared)
#
...