Конфигурация Apache на Synology DS для использования с mod_wsgi / Django
Я начал разработку нового сайта с использованием Django. Для реалистичного тестирования я хотел запустить его на NAS-устройстве Synology DS212J. Следуя официальным руководствам Synology, я установил ipkg и пакет mod_wsgi. В качестве следующего шага: следуя стандартному руководству, я создал virtualenv и установил в него Django. Откройте новый проект и настройте следующие параметры: https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-ubuntu-16-04 Я могу зайти на сайт "Hello World" из Django, используя manage.py
Как предложено, я хочу обменять файл manage.py через сервер apache на NAS. Поэтому я думаю, что я должен пойти и отредактировать файлы конфигурации apache, например, для определения виртуального хоста... Однако я не могу локализовать файлы для него, так как кажется, что они были перенесены в DSM6 (который я использую) по сравнению с другими руководствами,
Где мне нужно ввести значения, следующие за Учебником по Synology?
Поскольку я совсем новичок в этой теме, нужно ли мне особенно загружать модуль mod_wsgi для Apache и если где?
Является ли хорошей идеей использовать базовый режим wsgi вместо режима демона? Я не уверен, какие модули Django будут использоваться позже при разработке...
Спасибо за поддержку!
0 ответов
Активируйте пакет python 3 и веб-станцию в webstation> general settings> main server http enable nginx
В Control Panel> Network> DSM Settings> Enable Custom Domain: "test"
(что позволит нам получить доступ к nas, введя test.local и упростив задачу позже.) Включите ssh-соединение в control panel> terminal and smtp
Мы используем службу ddns Synology для внешнего доступа в нашем случае "test.synology.me"
В control panel> security> certificate
: генерируем наш ssl сертификат с помощью Let's encrypt Подключаемся к nas в ssh Получим root права sudo -i
Установите virtualenv: easy_install virtualenv
Настраиваем нашу виртуальную среду: virtualenv -p python3 flasktest
Фляга и пулемет устанавливаются:
pip install flask gunicorn
Мы создаем наше веб-приложение, файл: init.py Запускаем наше веб-приложение с помощью gunicorn:
gunicorn --certfile /usr/syno/etc/certificate/system/default/cert.pem --keyfile /usr/syno/etc/certificate/system/default/privkey.pem -b 127.0 .0.1: 5000 app: app
В /etc/nginx/sites-enabled
создаем файл конфигурации сервера, в качестве прокси будем использовать nginx, в нашем случае это будет файл flasktest.conf
flasktest.conf:
`server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
gzip on;
server_name test.synology.me;
location / {
proxy_pass https://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_log /volume1/projects/flasktest/logs/error.log;
access_log /volume1/projects/flasktest/logs/acess.log;
}`
Открыть control panel port> external access> router configuration> create> integrate application> enable the check boxfor webstation and apply
Проверяем наш серверный файл на предмет того, что вводим команду, nginx -t
Мы перезапускаем nginx synoservicecfg --restart nginx
Теперь у вас есть доступ к вашим веб-приложениям на Python извне по https ** https: //test.synology.me**
немного больше информации... Чтобы завершить работу и получить постоянный доступ к вашему приложению, если вы когда-нибудь сможете перезагрузиться, выйдет из строя... вы можете создать сценарий, который перезапустит Gunicorn, потому что в противном случае веб-станция возьмет верх в другом месте, если вы введете ip nas локально, вы do не будет видеть ваши веб-приложения в python, потому что мы не изменяли основной файл конфигурации /etc/nginx/nginx.conf локально, поэтому это страница index.html по умолчанию для отображаемой веб-станции.
пример:
cd / volume1 / projects / flasktest
source bin / activate
gunicorn --certfile /usr/syno/etc/certificate/system/default/cert.pem --keyfile /usr/syno/etc/certificate/system/default/privkey.pem -b 127.0.0.1:5000 app: app
</ dev / null 2> & 1 &
Этот метод найден в другой среде Python