<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nginx &#8212; ploshadka.net</title>
	<atom:link href="https://ploshadka.net/tag/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>https://ploshadka.net</link>
	<description>Мир интернет технологий</description>
	<lastBuildDate>Sun, 03 Jan 2021 19:41:24 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1</generator>
	<item>
		<title>Установка на сервер Django, Python, PostgreSQL и Nginx</title>
		<link>https://ploshadka.net/ustanovka-na-server-django-python-postgresql-i-nginx/</link>
					<comments>https://ploshadka.net/ustanovka-na-server-django-python-postgresql-i-nginx/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 08 Aug 2020 20:32:45 +0000</pubDate>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=5934</guid>

					<description><![CDATA[Процесс установки интерпретатора Python, фреймворка Django, базы данных PostgreSQL и HTTP прокси NGINX на сервере Ubuntu 20.04. Исходные данные Установка будет производится на удаленном сервере, но то же самое можно развернуть и на localhost. Вместо 111.111.111.111 укажите свой IP адрес...]]></description>
										<content:encoded><![CDATA[<p>Процесс установки интерпретатора <strong>Python</strong>, фреймворка <strong>Django</strong>, базы данных <strong>PostgreSQL</strong> и HTTP прокси <strong>NGINX</strong> на сервере <strong>Ubuntu 20.04</strong>. <span id="more-5934"></span></p>
<h2>Исходные данные</h2>
<p>Установка будет производится на удаленном сервере, но то же самое можно развернуть и на <strong>localhost</strong>. Вместо 111.111.111.111 укажите свой IP адрес в интернете.</p>
<p>Свежеустановленный сервер <a href="https://ploshadka.net/ubuntu-update/">Ubuntu 20.04 LTS</a>.</p>
<p>Проведена <a href="https://ploshadka.net/ubuntu-pervichnaja-nastrojjka/">первичная настройка сервера</a>.</p>
<h2>Установим Python на сервер</h2>
<p>Перед любой установкой обновим пакеты операционной системы:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get update</span></div></div>
<p>Устанавливаем питон:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> python3-pip python3-dev</div></div>
<p>Создадим симлинк для обращения по команде pip вместо pip3:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>pip3 <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>pip<br />
pip <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">--upgrade</span> pip</div></div>
<h2>PostgreSQL</h2>
<p>Установим PostgreSQL на сервер:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> postgresql postgresql-contrib libpq-dev</div></div>
<p>Следом устанавливаем пакет <strong>psycopg2</strong>, который является <strong>python-postgreSQL </strong>адаптером:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">pip <span style="color: #c20cb9; font-weight: bold;">install</span> psycopg2</div></div>
<p><a href="https://ploshadka.net/postgresql/">Создаем и настраиваем пользователя и базу данных в PostgreSQL</a>.</p>
<h2>Создаем виртуальную среду и устанавливаем Django</h2>
<p>Заходим в папку пользователя. Отсюда будем работать дальше.</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka</div></div>
<p>Создаем виртуальную среду в директории <strong>myproject</strong>:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> myproject<br />
virtualenv <span style="color: #660033;">--python</span>=python3 myproject<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>Перейдем в эту директорию и активируем среду:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #7a0874; font-weight: bold;">cd</span> myproject<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #7a0874; font-weight: bold;">source</span> bin<span style="color: #000000; font-weight: bold;">/</span>activate</div></div>
<p>Теперь в этом окружении установим <strong>Django</strong> и <strong>gunicorn</strong>:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">pip <span style="color: #c20cb9; font-weight: bold;">install</span> django gunicorn</div></div>
<h2>Запустим новый проект с PostgreSQL</h2>
<p>Запустим проект hello_django следующей командой:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">django-admin startproject hello_django</div></div>
<p>Это создаст новую директорию hello_django с файлами питона.</p>
<p>Отредактировуем там файл конфигурации <strong>setting.py</strong>:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">nano</span> hello_django<span style="color: #000000; font-weight: bold;">/</span>hello_django<span style="color: #000000; font-weight: bold;">/</span>settings.py</div></div>
<p>Пропишем свои данные.</p>
<p>Найдем строку и запишем туда свой IP:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">ALLOWED_HOSTS <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'111.111.111.111'</span><span style="color: #009900;">&#93;</span></div></div>
<p>Следом впишем настройки нашей БД:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">DATABASES <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'default'</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># 'ENGINE': 'django.db.backends.sqlite3',<br />
</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),<br />
</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'ENGINE'</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">'django.db.backends.postgresql_psycopg2'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'NAME'</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">'ploshadka'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'USER'</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">'ploshadka'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'PASSWORD'</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">'пароль'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'HOST'</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'PORT'</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>и в конце где</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">STATIC_URL <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/static/'</span></div></div>
<p>добавить строку:</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #666666; font-style: italic;"># STATIC_ROOT = os.path.join(BASE_DIR, 'static/')<br />
</span>STATIC_ROOT <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/home/ploshadka/static/'</span></div></div>
<p>Сохраняем файл и выходим.</p>
<h2>Сделаем миграцию данных в таблицу PostgreSQL</h2>
<p>Мы должны находится в директории с файлом <strong>manage.py</strong>:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span>hello_django</div></div>
<p>Там запускаем миграцию:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">python manage.py migrate</div></div>
<p>При успешной миграции:<br />
<a href="https://ploshadka.net/wp-content/uploads/5934/hello_django.jpg" rel="lightbox-0"><img wpfc-lazyload-disable="true" decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/5934/hello_django-600x343.jpg" alt="" width="600" height="343" class="aligncenter size-medium wp-image-6011" srcset="https://ploshadka.net/wp-content/uploads/5934/hello_django-600x343.jpg 600w, https://ploshadka.net/wp-content/uploads/5934/hello_django-1200x686.jpg 1200w, https://ploshadka.net/wp-content/uploads/5934/hello_django-300x172.jpg 300w, https://ploshadka.net/wp-content/uploads/5934/hello_django.jpg 1350w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p>Создадим супер пользователя. Он будет использоваться для входа на нашем сайте:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">python manage.py createsuperuser</div></div>
<p>Дальше выбираем имя для пользователя проекта, email и пароль.</p>
<p>Собираем наш проект в статические файлы:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">python manage.py collectstatic</div></div>
<p>Иногда встречается ошибка:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">PermissionError: <span style="color: #7a0874; font-weight: bold;">&#91;</span>Errno <span style="color: #000000;">13</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Permission denied: <span style="color: #ff0000;">'/static'</span></div></div>
<p>В этом случае стоит выйти, заново зайти и повторить:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #7a0874; font-weight: bold;">exit</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #7a0874; font-weight: bold;">source</span> bin<span style="color: #000000; font-weight: bold;">/</span>activate<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> hello_django<br />
python manage.py collectstatic</div></div>
<p>В случае успеха будет создана папка <strong>static</strong> и появится сообщение:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #000000;">130</span> static files copied to <span style="color: #ff0000;">'/home/ploshadka/myproject/hello_django/static'</span>.</div></div>
<p>Откроем порт для <a href="https://ploshadka.net/ufw-firewall-na-ubuntu/">Firewall</a> на котором будет запущен проект:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> ufw allow <span style="color: #000000;">8000</span></div></div>
<p>Запустим наш проект:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">python manage.py runserver 111.111.111.111:<span style="color: #000000;">8080</span></div></div>
<p>Ошибки вида:</p>
<blockquote><p>Command &#8216;python&#8217; not found, did you mean:<br />
  command &#8216;python3&#8217; from deb python3<br />
  command &#8216;python&#8217; from deb python-is-python3</p></blockquote>
<p>Могут возникнуть, если вы вышли из рабочей области. Заходим заново и запускаем:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">su</span> ploshadka<br />
<span style="color: #7a0874; font-weight: bold;">source</span> bin<span style="color: #000000; font-weight: bold;">/</span>activate<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> hello_django<span style="color: #000000; font-weight: bold;">/</span><br />
python manage.py runserver 111.111.111.111:<span style="color: #000000;">8080</span></div></div>
<p>Теперь можно зайти на страницу:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http:<span style="color: #000000; font-weight: bold;">//</span>111.111.111.111:<span style="color: #000000;">8080</span><span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>Где увидим предустановленную страницу Django:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/5934/django.jpg" rel="lightbox-1"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/5934/django-485x400.jpg" alt="" width="485" height="400" class="aligncenter size-medium wp-image-5986" srcset="https://ploshadka.net/wp-content/uploads/5934/django-485x400.jpg 485w, https://ploshadka.net/wp-content/uploads/5934/django-971x800.jpg 971w, https://ploshadka.net/wp-content/uploads/5934/django-1536x1266.jpg 1536w, https://ploshadka.net/wp-content/uploads/5934/django-243x200.jpg 243w, https://ploshadka.net/wp-content/uploads/5934/django.jpg 1699w" sizes="(max-width: 485px) 100vw, 485px" /></a></p>
<p>В административную панель:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http:<span style="color: #000000; font-weight: bold;">//</span>111.111.111.111:<span style="color: #000000;">8080</span><span style="color: #000000; font-weight: bold;">/</span>admin<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p><a href="https://ploshadka.net/wp-content/uploads/5934/Django-administration-1.jpg" rel="lightbox-2"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/5934/Django-administration-1-518x400.jpg" alt="" width="518" height="400" class="aligncenter size-medium wp-image-5989" srcset="https://ploshadka.net/wp-content/uploads/5934/Django-administration-1-518x400.jpg 518w, https://ploshadka.net/wp-content/uploads/5934/Django-administration-1-259x200.jpg 259w, https://ploshadka.net/wp-content/uploads/5934/Django-administration-1.jpg 872w" sizes="(max-width: 518px) 100vw, 518px" /></a></p>
<p>После авторизации попадаем в админку:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/5934/Django-administration-2.jpg" rel="lightbox-3"><img wpfc-lazyload-disable="true" decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/5934/Django-administration-2-600x203.jpg" alt="" width="600" height="203" class="aligncenter size-medium wp-image-5988" srcset="https://ploshadka.net/wp-content/uploads/5934/Django-administration-2-600x203.jpg 600w, https://ploshadka.net/wp-content/uploads/5934/Django-administration-2-1200x406.jpg 1200w, https://ploshadka.net/wp-content/uploads/5934/Django-administration-2-1536x520.jpg 1536w, https://ploshadka.net/wp-content/uploads/5934/Django-administration-2-300x102.jpg 300w, https://ploshadka.net/wp-content/uploads/5934/Django-administration-2.jpg 1866w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h2>Настраиваем работу Django с HTTP-сервером Gunicorn</h2>
<p>Перейдем в наш проект, чтобы использовать gunicorn для загрузки модуля WSGI:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span>hello_django<br />
gunicorn <span style="color: #660033;">-b</span> 111.111.111.111:<span style="color: #000000;">8080</span> hello_django.wsgi:application</div></div>
<p>Ошибки вида:</p>
<blockquote><p>[67658] [ERROR] Exception in worker process<br />
Traceback (most recent call last):<br />
  File<br />
&#8230;<br />
lib/python3.8/site-packages/gunicorn/util.py&#187;, line 358, in import_app<br />
    mod = importlib.import_module(module)<br />
  File &#171;/usr/lib/python3.8/importlib/__init__.py&#187;, line 127, in import_module<br />
    return _bootstrap._gcd_import(name[level:], package, level)<br />
  File &#171;<frozen importlib._bootstrap>&#171;, line 1014, in _gcd_import<br />
  File &#171;<frozen importlib._bootstrap>&#171;, line 991, in _find_and_load<br />
  File &#171;<frozen importlib._bootstrap>&#171;, line 973, in _find_and_load_unlocked<br />
ModuleNotFoundError: No module named &#8216;hello_django.wsgi&#8217;<br />
[2020-05-24 22:44:37 +0200] [67658] [INFO] Worker exiting (pid: 67658)<br />
[2020-05-24 22:44:37 +0200] [67656] [INFO] Shutting down: Master<br />
[2020-05-24 22:44:37 +0200] [67656] [INFO] Reason: Worker failed to boot.<br />
(myproject) root@nomerdoma1:/home/ploshadka/myproject# </p></blockquote>
<p>Возникнут, если пытаться связать не ту директорию. Это должна быть директория, где находится файл <strong>settings.py</strong>.</p>
<p>В случае успешного запуска в консоли появится:</p>
<blockquote><p>[2020-05-24 22:50:00 +0200] [67705] [INFO] Starting gunicorn 20.0.4<br />
[2020-05-24 22:50:00 +0200] [67705] [INFO] Listening at: http://111.111.111.111:8080 (67705)<br />
[2020-05-24 22:50:00 +0200] [67705] [INFO] Using worker: sync<br />
[2020-05-24 22:50:00 +0200] [67707] [INFO] Booting worker with pid: 67707</p></blockquote>
<p>Можем снова перейти на сайт и протестировать. </p>
<p>Настройка Django завершена. Теперь можно выйти из виртуальной среды:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">deactivate</div></div>
<h2>Настраиваем systemd</h2>
<p>Настроем systemd для автоматизации запуска и остановку приложения Django.</p>
<p>Для этого создадим и настроим файл systemd для Gunicorn:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">sudo nano /etc/systemd/system/gunicorn.service</div></div>
<p>Вставим:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>Unit<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #007800;">Description</span>=gunicorn daemon<br />
<span style="color: #007800;">After</span>=network.target<br />
<br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span>Service<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #007800;">User</span>=root<br />
<span style="color: #007800;">Group</span>=www-data<br />
<span style="color: #007800;">WorkingDirectory</span>=<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span>hello_django<br />
<span style="color: #007800;">ExecStart</span>=<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>gunicorn <span style="color: #660033;">--access-logfile</span> - <span style="color: #660033;">--workers</span> <span style="color: #000000;">3</span> <span style="color: #660033;">--bind</span> unix:<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span>hello_django<span style="color: #000000; font-weight: bold;">/</span>myproject.sock hello_django.wsgi:application<br />
<br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span>Install<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #007800;">WantedBy</span>=multi-user.target</div></div>
<p>Сохраняем и выходим. Если ранее уже был запущен gunicorn.service и это повторное редактирование, то перед следующей командой запустите:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">systemctl daemon-reload<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> systemctl restart gunicorn</div></div>
<p>Теперь можем запустить &#171;Зеленого Единорога&#187;:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> systemctl start gunicorn<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> systemctl <span style="color: #7a0874; font-weight: bold;">enable</span> gunicorn</div></div>
<p>Проверим статус сервера:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">systemctl status gunicorn</div></div>
<p>При успешном запуске в директории hello_django там где manage.py появится файл <strong>myproject.sock</strong>.</p>
<h2>Nginx</h2>
<p>Установим дополнительные инструменты:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> nginx curl</div></div>
<p>Создадим и отредактируем файл:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>ploshadka</div></div>
<p>Вставим следующее:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">server <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; &nbsp; listen <span style="color: #000000;">80</span>;<br />
&nbsp; &nbsp; server_name 111.111.111.111;<br />
<br />
&nbsp; &nbsp; location = <span style="color: #000000; font-weight: bold;">/</span>favicon.ico <span style="color: #7a0874; font-weight: bold;">&#123;</span> access_log off; log_not_found off; <span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
&nbsp; &nbsp; location <span style="color: #000000; font-weight: bold;">/</span>static<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; &nbsp; root <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka;<br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
<br />
location <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; &nbsp; include proxy_params;<br />
&nbsp; &nbsp; proxy_pass http:<span style="color: #000000; font-weight: bold;">//</span>unix:<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ploshadka<span style="color: #000000; font-weight: bold;">/</span>myproject<span style="color: #000000; font-weight: bold;">/</span>hello_django<span style="color: #000000; font-weight: bold;">/</span>myproject.sock;<br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span></div></div>
<div class="highlight">Обратите внимание, что в <strong>proxy_pass</strong> нужно указать путь до созданного выше sock файла. В противном случае nginx будет показывать 502 ошибку.</div>
<p>Связываем этот файл с каталогом сайтов:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sites-available<span style="color: #000000; font-weight: bold;">/</span>ploshadka <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sites-enabled</div></div>
<p>Проверим конфигурацию nginx на наличие ошибок:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> nginx <span style="color: #660033;">-t</span></div></div>
<p>Если ошибок нет:</p>
<blockquote><p>nginx: the configuration file /etc/nginx/nginx.conf syntax is ok<br />
nginx: configuration file /etc/nginx/nginx.conf test is successful</p></blockquote>
<p>При отсутствии ошибок:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> systemctl restart nginx</div></div>
<p>Если нам больше не нужен сервер разработки, порт 8000, то удалим его, чтобы перенаправить весь трафик на порт 80:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> ufw delete allow <span style="color: #000000;">8000</span><br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> ufw allow <span style="color: #ff0000;">'Nginx Full'</span></div></div>
<p>На этом установка завершена. Теперь наш сервер работает автономно. А по адресу нашего сайта мы увидим всё ту же взлетающую ракету:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/5934/django.jpg" rel="lightbox-1"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/5934/django-485x400.jpg" alt="" width="485" height="400" class="aligncenter size-medium wp-image-5986" srcset="https://ploshadka.net/wp-content/uploads/5934/django-485x400.jpg 485w, https://ploshadka.net/wp-content/uploads/5934/django-971x800.jpg 971w, https://ploshadka.net/wp-content/uploads/5934/django-1536x1266.jpg 1536w, https://ploshadka.net/wp-content/uploads/5934/django-243x200.jpg 243w, https://ploshadka.net/wp-content/uploads/5934/django.jpg 1699w" sizes="(max-width: 485px) 100vw, 485px" /></a></p>
<h2>Напоследок</h2>
<p>Для того чтобы изменения в файле settings.py стали видны, перезапускаем &#171;единорога&#187;:</p>
<div class="codecolorer-container bash dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> systemctl restart gunicorn</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/ustanovka-na-server-django-python-postgresql-i-nginx/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Не включается служба nginx на VPS сервере</title>
		<link>https://ploshadka.net/nginx-doesnt-turn-on/</link>
					<comments>https://ploshadka.net/nginx-doesnt-turn-on/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Wed, 01 Aug 2018 08:00:48 +0000</pubDate>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3891</guid>

					<description><![CDATA[Ищем причину почему не включается nginx на VPS сервере. Причин может быть очень много. В этой краткой заметке небольшое описание где искать ошибку. Откуда растет история Давно следовало написать про логи, но откуда-то же надо начинать. Обычно я пишу статьи...]]></description>
										<content:encoded><![CDATA[<p>Ищем причину почему не включается nginx на VPS сервере. Причин может быть очень много. В этой краткой заметке небольшое описание где искать ошибку. <span id="more-3891"></span></p>
<h2>Откуда растет история</h2>
<p>Давно следовало написать про логи, но откуда-то же надо начинать. Обычно я пишу статьи после разбора ошибок. Так и в этот раз.</p>
<p>Как-то с утра был я в дороге и вдруг сообщение от системного мониторинга сайтов, что сайты на одном из серверов не работают. Хорошо, что на телефоне у меня была установлена программа ftp доступа. Так что я быстро всё починил.</p>
<p>Полез смотреть включены ли службы на VPS. Это надо делать в первую очередь. И вижу, что отключена служба nginx и не включается. Что могло приключиться, не понятно, никаких ручных изменений уже более месяца на сервере не происходило.</p>
<h2>Где искать причину</h2>
<p>Любые ошибки в Linux системах (и не только) обычно документируются. Искать нужно в лог файалах. В данном случае в файле по такому пути:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">var -&gt; log -&gt; nginx -&gt; error.log</div></div>
<p>Путь указан для системы CentOS (стоит панель управления Vesta).</p>
<p>Ошибки были такого плана:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">2018/01/23 08:10:24 [emerg] 25259#25259: unexpected &quot;}&quot; in /home/admin/conf/web/snginx.conf:1<br />
2018/01/23 09:12:48 [emerg] 985#985: unexpected &quot;}&quot; in /home/admin/conf/web/snginx.conf:1<br />
2018/01/23 09:20:40 [emerg] 2697#2697: unexpected &quot;}&quot; in /home/admin/conf/web/snginx.conf:1</div></div>
<p>Из этого сообщения мы видим, что по адресу <strong>/home/admin/conf/web/snginx.conf</strong> в файле <strong>snginx.conf</strong> находится &#171;неожидаемая&#187; скобка.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/3891/IMG_0531.jpg" rel="lightbox-0"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/3891/IMG_0531-432x400.jpg" alt="" width="432" height="400" class="aligncenter size-medium wp-image-3893" srcset="https://ploshadka.net/wp-content/uploads/3891/IMG_0531-432x400.jpg 432w, https://ploshadka.net/wp-content/uploads/3891/IMG_0531-864x800.jpg 864w, https://ploshadka.net/wp-content/uploads/3891/IMG_0531-216x200.jpg 216w, https://ploshadka.net/wp-content/uploads/3891/IMG_0531.jpg 1227w" sizes="(max-width: 432px) 100vw, 432px" /></a></p>
<p>И действительно, зайдя в файл <strong>snginx.conf</strong>. В его начале красовалась закрывающая скобка. После её удаления сервер nginx запустился.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/3891/IMG_0532.jpg" rel="lightbox-1"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/3891/IMG_0532-592x400.jpg" alt="" width="592" height="400" class="aligncenter size-medium wp-image-3894" srcset="https://ploshadka.net/wp-content/uploads/3891/IMG_0532-592x400.jpg 592w, https://ploshadka.net/wp-content/uploads/3891/IMG_0532-1184x800.jpg 1184w, https://ploshadka.net/wp-content/uploads/3891/IMG_0532-296x200.jpg 296w, https://ploshadka.net/wp-content/uploads/3891/IMG_0532.jpg 1242w" sizes="(max-width: 592px) 100vw, 592px" /></a></p>
<p>Откуда возникла эта скобка я не разбирался. Обычно на такие вещи можно потратить сутки и не понять. Я полагаю, что какие-то автоматические системные процедуры (может быть обновления) внесли изменения в этот файл и накосячили.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/nginx-doesnt-turn-on/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vesta: Error: nginx restart failed</title>
		<link>https://ploshadka.net/vesta-error-nginx-restart-failed/</link>
					<comments>https://ploshadka.net/vesta-error-nginx-restart-failed/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 08 Mar 2018 11:22:31 +0000</pubDate>
				<category><![CDATA[Vesta]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=4215</guid>

					<description><![CDATA[Исправляем ошибку, когда Vesta не может запустить nginx. Заходим в логи по адресу сервера: var -&#62; log -&#62; nginx -&#62; error.log Там будут указаны ошибки. Например, 2018/03/08 14:10:00 [emerg] 10988#10988: &#34;if&#34; directive is not allowed here in /home/admin/conf/web/nginx.conf:192 2018/03/08 14:10:00...]]></description>
										<content:encoded><![CDATA[<p>Исправляем ошибку, когда <a href="https://ploshadka.net/vesta-install/">Vesta</a> не может запустить <strong>nginx</strong>. <span id="more-4215"></span></p>
<p>Заходим в логи по адресу сервера:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">var -&gt; log -&gt; nginx -&gt; error.log</div></div>
<p>Там будут указаны ошибки. Например,</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">2018/03/08 14:10:00 [emerg] 10988#10988: &quot;if&quot; directive is not allowed here in /home/admin/conf/web/nginx.conf:192<br />
2018/03/08 14:10:00 [emerg] 11014#11014: &quot;if&quot; directive is not allowed here in /home/admin/conf/web/nginx.conf:192</div></div>
<p>Заходим по адресу в логах:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">/home/admin/conf/web/nginx.conf</div></div>
<p>Переходим в указанную строчку (192) и ищем ошибку. В данном случае nginx, после удаления сайта из панели Vesta, не удалил определенный строчки. Пришлось сделать это вручную.</p>
<p>Например, у меня при удалении домена из панели Vesta он не удаляет из файла nginx все содержимое этого домена. В результате остаются эти строки:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&nbsp; &nbsp; if ($scheme != &quot;https&quot;) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return 301 https://$host$request_uri;<br />
&nbsp; &nbsp; } # managed by Certbot<br />
}</div></div>
<p>Тем самым нарушается целостность файла. Приходится эти строки удалять вручную. После этого nginx запускается успешно.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/vesta-error-nginx-restart-failed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
