Цель этой темы, которую я задавал и на которую отвечал сам, состоит в том, чтобы установить короткий, простой и точный путь для пользователей из IIS - Internet Information Services (Microsoft Windows), которые хотят мигрировать и / или использовать Nginx с Python. Поэтому я прошу всех помочь достичь этой цели!
Рассмотренные аспекты:
- Используйте Ubuntu Server 12.04.1 LTS AMD64;
- Использовать веб-приложения Python;
- Доступ к нескольким приложениям осуществляется с использованием модели
http://HOST_IP/APP_DIRECTORY
;
Я мало знаю о Nginx. Я подчеркиваю, что целью здесь является создание веб-приложений Python для тестирования и разработки простым и легким способом, без присутствия домена (например, www.domain.com) и доступа к ним через IP и виртуальный каталог.
Я не знаю, является ли это лучшим способом публикации приложений с использованием виртуальных каталогов. Комментарии по этому аспекту очень приветствуются.
ЗДЕСЬ МОЙ ОТВЕТ!
Установите Nginx и uWSGI, которые будут запускать приложения Python;
apt-get установить nginx-full uwsgi uwsgi-plugin-python
Создайте файл конфигурации для Nginx. Он будет содержать список виртуальных каталогов, которые будут доступны в Nginx (папка «sites-available»):
nano /etc /nginx /sites-available / Applications
Содержание архива:
server
{
listen 80;
server_name $hostname;
access_log /srv/www/applications/logs/access.log;
error_log /srv/www/applications/logs/error.log;
location /pytest0
{
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix:///run/uwsgi/app/pytest0/pytest0.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
location /pytest1
{
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix:///run/uwsgi/app/pytest1/pytest1.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
}
Создайте каталог, в котором Nginx будет сохранять логи:
mkdir -p /srv /www / Applications / logs
Поместите список приложений, которые вы создали, в набор включенных приложений (папка «apps-enabled»):
ln -s / etc / nginx / sites-available / Applications / etc / nginx / sites-enabled / Applications
Удалите ссылку на виртуальный хост по умолчанию, введя следующую команду:
rm / etc / nginx / sites-enabled / default
Примечание: с помощью этого действия легче диагностировать возможные ошибки, потому что в случае сбоя NGINX возвращает ошибку вместо стандартной страницы.
Создайте папки для 1-го тестового приложения Python:
mkdir -p /srv /www / pytest0 / public_html / static
mkdir /srv /www / pytest0 / application
Установите 1-е тестовое приложение и сделайте его доступным в uWSGI (папка «apps-available»):
mkdir -p / etc / uwsgi / apps-available /
nano /etc/uwsgi/apps-available/pytest0.xml
Содержание архива:
<uwsgi>
<plugin>python</plugin>
<socket>/run/uwsgi/app/pytest0/pytest0.socket</socket>
<pythonpath>/srv/www/pytest0/application/</pythonpath>
<app mountpoint="/">
<script>wsgi_configuration_module</script>
</app>
<master/>
<processes>4</processes>
<harakiri>60</harakiri>
<reload-mercy>8</reload-mercy>
<cpu-affinity>1</cpu-affinity>
<stats>/tmp/stats.socket</stats>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<no-orphans/>
<vacuum/>
</uwsgi>
Поместите первое тестовое приложение как включенное в uWSGI (папка «apps-enabled»):
ln -s /etc/uwsgi/apps-available/pytest0.xml /etc/uwsgi/apps-enabled/pytest0.xml
"Создайте" 1-е тестовое приложение в uWSGI:
nano /srv/www/pytest0/application/wsgi_configuration_module.py
Содержание архива:
import os
import sys
sys.path.append('/srv/www/pytest0/application')
os.environ['PYTHON_EGG_CACHE'] = '/srv/www/pytest0/.python-egg'
def application(environ, start_response):
status = '200 OK'
output = 'Hello pytest0!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Создайте папки для второго тестового приложения Python:
mkdir -p /srv /www /pytest1 /public_html /static
mkdir /srv /www /pytest1 /application
Установите второе тестовое приложение и сделайте его доступным в uWSGI (папка «apps-available»):
nano /etc/uwsgi/apps-available/pytest1.xml
Содержание архива:
<uwsgi>
<plugin>python</plugin>
<socket>/run/uwsgi/app/pytest1/pytest1.socket</socket>
<pythonpath>/srv/www/pytest1/application/</pythonpath>
<app mountpoint="/">
<script>wsgi_configuration_module</script>
</app>
<master/>
<processes>4</processes>
<harakiri>60</harakiri>
<reload-mercy>8</reload-mercy>
<cpu-affinity>1</cpu-affinity>
<stats>/tmp/stats.socket</stats>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<no-orphans/>
<vacuum/>
</uwsgi>
Поместите второе тестовое приложение как включенное в uWSGI (папка «apps-enabled»):
ln -s /etc/uwsgi/apps-available/pytest1.xml /etc/uwsgi/apps-enabled/pytest1.xml
"Создайте" 2-е тестовое приложение в uWSGI:
nano /srv/www/pytest1/application/wsgi_configuration_module.py
Содержание архива:
import os
import sys
sys.path.append('/srv/www/pytest1/application')
os.environ['PYTHON_EGG_CACHE'] = '/srv/www/pytest1/.python-egg'
def application(environ, start_response):
status = '200 OK'
output = 'Hello pytest1!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Перезапустите сервисы:
перезапуск службы uwsgi
перезапуск службы nginx
ПРОКОММЕНТИРУЙТЕ, ПОЖАЛУЙСТА!
https://library.linode.com/web-servers/nginx/python-uwsgi/ubuntu-12.04-precise-pangolin