<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_%28Shared_hosting%29</id>
	<title>Виртуальный хостинг (Shared hosting) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_%28Shared_hosting%29"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_(Shared_hosting)&amp;action=history"/>
	<updated>2026-10-12T23:39:51Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_(Shared_hosting)&amp;diff=245&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_(Shared_hosting)&amp;diff=245&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:17Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_(Shared_hosting)&amp;diff=244&amp;oldid=prev</id>
		<title>lor&gt;Awesomelackware: /* Безопасность */</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3_(Shared_hosting)&amp;diff=244&amp;oldid=prev"/>
		<updated>2018-03-14T10:41:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Безопасность&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Хостинг =&lt;br /&gt;
&lt;br /&gt;
Цель данной статьи рассказать как стать хостером уровня Enterprise на localhost (без баз данных, панелей управления, биллинга, https и прочего ненужного хлама! Только статика, html, php и вечная молодость! [[User:Mandala|Mandala]]). Речь пойдет о настройке всех возможных демонов (iptables, openssh, vsftpd, nginx + php, postfix и другое), чтобы на вашем собственном компьютере (а для каких целей — не важно) вы собстенноручно могли создать сервис хостинга. Кого вы собираетесь размещать у себя — не важно, может только сами себя, а может 100500 клиентов, все упирается лишь в ресурсы вашего компьютера.&lt;br /&gt;
&lt;br /&gt;
Да, на просторах интернета много информации о том, как настроить демоны в отдельности, но нет информации о том, как должно быть &amp;lt;u&amp;gt;правильно&amp;lt;/u&amp;gt; все взаимосвязано, в результате чего пользователи «лиж бы работало» начинают, например, лепить костыли вроде ''mount --bind'' для связи $HOME пользователя и директории www. Я ([https://www.linux.org.ru/people/Spoofing/profile Spoofing]) считаю такой подход не верным. [http://www.linux.org.ru/forum/admin/8859224 Тред на форуме], для подробностей и пущей ясности.&amp;lt;br&amp;gt;&lt;br /&gt;
Статья будет написана не за один день (в конце концов, я сам только-только начал изучать этот вопрос), но в оглавлении всегда будет содержаться, что уже написано.&lt;br /&gt;
&lt;br /&gt;
О том, что такое [http://ru.wikipedia.org/wiki/Хостинг Хостинг]&lt;br /&gt;
&lt;br /&gt;
Вопрос на [http://habrahabr.ru/qa/34889/ Хабрахабр]&lt;br /&gt;
&lt;br /&gt;
== Оглавление ==&lt;br /&gt;
На данный момент описана установка и настройка так называемого Shared-хостинга, который годится только для размещения сайта на нем, — на котором крутится nginx, php-fpm, а пользователи заливают файлы через vsftpd. Сколько угодно доменов, сколько угодно пользователей. С этим, на самом деле, справится любой. :)&lt;br /&gt;
&lt;br /&gt;
=== Теория ===&lt;br /&gt;
Рекомендую обсуждать теорию, — каким конкретно образом сервисы должны быть взаимосвязаны и функционировать друг с другом [http://www.linux.org.ru/wiki/en/Comments:Хостинг в комментариях к этой статье]&lt;br /&gt;
&lt;br /&gt;
К вопросу о дистрибутивах, на котором все это добро заведется. Конечно, дистрибутив может быть любым, но сразу уточним, что «как установить» в статье не будет — вы либо должны сами это сделать, либо скачать пакеты из репозиториев, так как в каждом дистрибутиве это происходит по-разному. В также статье не будет написано тонкостей настройки демонов (если того не требуется для работоспособности хостинга). Если на вашем дистрибутиве из статьи что-то не завелось, но вы смогли решить проблему — просьба дополнить об этом статью, уточнив что за дистрибутив, какая возникла проблема и ее решение.&lt;br /&gt;
&lt;br /&gt;
О виртуализации, как основе хостинга, может кто-нибудь расскажет в статье, но нет: я не собираюсь использовать ни виртуализацию, ни красивые менеджеры настройки типа ISP… ничего. Только консоль, только пошаговая инструкция по развертке хостинга на установленном дистрибутиве.&lt;br /&gt;
&lt;br /&gt;
=== Автоматизация ===&lt;br /&gt;
Скриптов автоматизирующий процесс установки, добавления новых (виртуальных) пользователей, управление доменами и прочее — '''не будет''', поскольку у каждого будущего хостера свои задачи. Написать скрипты под каждого, когда одному нужен какой-либо демон, а кому нет, просто невозможно и тяжело такие скрипты поддерживать. Поэтому все действия по добавлению пользователей и прочему будут выполняться командами вручную, — вы, когда уже определитесь со своими целями и ваш хостинг начнет более-менее работать, можете писать такие скрипты для себя и делиться с обществом.&lt;br /&gt;
&lt;br /&gt;
Котлеты отдельно, мухи отдельно. Каждый вид хостинга будет описан отдельно, и прежде всего описывается как настроить демоны, только затем как добавить домены, и только затем как создать пользователей.&lt;br /&gt;
&lt;br /&gt;
= Shared hosting =&lt;br /&gt;
На shared hosting множество сайтов расположены на одном сервере. Настроим nginx + php-fpm, vsftpd с виртуальными пользователями для управления содержимым сайта.&lt;br /&gt;
&lt;br /&gt;
== Настройка ==&lt;br /&gt;
&lt;br /&gt;
=== nginx ===&lt;br /&gt;
Пусть вы уже установили nginx, настроили nginx.conf под свои нужды (в интернете много howto, дублировать их не будем), теперь сразу к основе хостинга.&lt;br /&gt;
&lt;br /&gt;
Мы будем разделять все наши домены (сайты) друг от друга, поэтому в '''nginx.conf''' в директиву '''http { }''' в самый конец добавляем строку '''include'''&lt;br /&gt;
&amp;lt;pre&amp;gt;... какие-то настройки ...&lt;br /&gt;
&lt;br /&gt;
http {&lt;br /&gt;
&lt;br /&gt;
  ... какие-то настройки ...&lt;br /&gt;
&lt;br /&gt;
  include sites-conf/*;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Соответственно рядом с конфигом создаем две директории&lt;br /&gt;
&amp;lt;pre&amp;gt;root@linux:/etc/nginx# mkdir sites-conf&lt;br /&gt;
root@linux:/etc/nginx# mkdir sites-avail&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nginx будет подключать конфигурации сайтов (директивы '''server''') из директории sites-conf.&lt;br /&gt;
&lt;br /&gt;
В sites-conf будут расположены симлинки на файлы конфигурации в sites-avail.&lt;br /&gt;
&lt;br /&gt;
Надо подключить сайт — создаем симлинк типа '''ln -s sites-avail/localhost.localdomain.conf sites-conf/''', надо удалить сайт — удаляем симлинк.&lt;br /&gt;
&lt;br /&gt;
=== php-fpm ===&lt;br /&gt;
Не знаю как в других дистрибутивах, но в Arch Linux '''nginx''' + '''php-fpm''' настроены и работают из репозиториев.&lt;br /&gt;
&lt;br /&gt;
Ничего специфичного для хостинга не требуется.&lt;br /&gt;
&lt;br /&gt;
=== vsftpd ===&lt;br /&gt;
vsftpd мы будем использовать для управления файлами сайтов на нашем shared hosting’е.&lt;br /&gt;
&lt;br /&gt;
О том, как настроить vsftpd для работы с виртуальными пользователями читайте [http://habrahabr.ru/post/166147/ в статье Spoofing’а на Хабрахабр]. Вы можете просто скопипастить конфиг в конце статьи.&lt;br /&gt;
&lt;br /&gt;
После настройки ничего специфичного для хостинга делать не нужно.&lt;br /&gt;
&lt;br /&gt;
== Домены ==&lt;br /&gt;
Создадим один домен localhost.localdomain.&lt;br /&gt;
&lt;br /&gt;
=== nginx ===&lt;br /&gt;
В '''sites-avail/localhost.localdomain.conf''' запишем конфигурацию сервера (сайта) с поддержкой php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  server {&lt;br /&gt;
    listen 80 default_server;&lt;br /&gt;
    server_name localhost.localdomain;&lt;br /&gt;
    &lt;br /&gt;
    root /srv/http/localhost.localdomain/w3;&lt;br /&gt;
&lt;br /&gt;
    location /default.php {&lt;br /&gt;
      include fastcgi.conf;&lt;br /&gt;
      fastcgi_pass unix:/run/php-fpm/php-fpm.sock;&lt;br /&gt;
    }&lt;br /&gt;
    location / {&lt;br /&gt;
      try_files $uri $uri/ /default.php;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name localhost;&lt;br /&gt;
&lt;br /&gt;
    return 301 $scheme://localhost.localdomain$request_uri;&lt;br /&gt;
  }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Для пущей безопасности работает только один /default.php на сервере, чтобы хацкеры не смогли выполнить залитый шелл.''&lt;br /&gt;
&lt;br /&gt;
Для включения сервера в конфигурацию nginx создаем симлинк&lt;br /&gt;
&amp;lt;pre&amp;gt;root@linux:~# cd /etc/nginx&lt;br /&gt;
root@linux:/etc/nginx# ln -s sites-avail/localhost.localdomain.conf sites-conf/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь создаем директории для нашего сайта&lt;br /&gt;
&amp;lt;pre&amp;gt;root@linux:~# cd /srv/http&lt;br /&gt;
root@linux:/srv/http# mkdir localhost.localdomain&lt;br /&gt;
root@linux:/srv/http# mkdir localhost.localdomain/w3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Убедившись, что сервер сконфигурирован правильно ('''nginx -t'''), nginx можно запускать.&lt;br /&gt;
&lt;br /&gt;
=== php-fpm ===&lt;br /&gt;
Запускаем.&lt;br /&gt;
&lt;br /&gt;
=== vsftpd ===&lt;br /&gt;
Настроив сервер с вирутальными пользователями, просто запускаем.&lt;br /&gt;
&lt;br /&gt;
== Пользователи ==&lt;br /&gt;
&lt;br /&gt;
=== nginx ===&lt;br /&gt;
Ничего.&lt;br /&gt;
&lt;br /&gt;
=== php-fpm ===&lt;br /&gt;
Ничего.&lt;br /&gt;
&lt;br /&gt;
=== vsftpd ===&lt;br /&gt;
В файл ~/vsftpd_logins.txt вписываем имена пользователей, например&lt;br /&gt;
&amp;lt;pre&amp;gt;localhost.localhost&lt;br /&gt;
password&lt;br /&gt;
test&lt;br /&gt;
password&amp;lt;/pre&amp;gt;&lt;br /&gt;
где localhost.localhost и test это пользователи vsftpd, а следом их пароли.&lt;br /&gt;
&lt;br /&gt;
Конвертируем базу&lt;br /&gt;
&amp;lt;pre&amp;gt;root@linux:~# rm /etc/vsftpd_login.db&lt;br /&gt;
root@linux:~# db_load -T -t hash -f ~/logins.txt /etc/vsftpd_login.db&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем для пользователей настройки, где указываем в качестве домашней директории — домены пользователей.&lt;br /&gt;
&lt;br /&gt;
В двух файлах '''/etc/vsftpd_user_conf/localhost.localhost''' и '''/etc/vsftpd_user_conf/test''' (соответствуют именам пользователей на сервере) пишем одно и тоже&lt;br /&gt;
&amp;lt;pre&amp;gt;allow_writeable_chroot=YES&lt;br /&gt;
&lt;br /&gt;
guest_username=http&lt;br /&gt;
&lt;br /&gt;
local_root=/srv/http/localhost.localdomain&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И теперь, при логине под пользователем localhost.localdomain или test — они оба попадают в одну директорию /srv/http/localhost.localdomain, в котором лежит их сайт.&lt;br /&gt;
&lt;br /&gt;
== Безопасность ==&lt;br /&gt;
{{Доработка&lt;br /&gt;
|reason=необходимо еще написать, как настроить права доступа}}&lt;br /&gt;
&lt;br /&gt;
Только основы, так как по каждой теме можно по книге написать:&lt;br /&gt;
* Права доступа мандатные (SELinux и пр.)&lt;br /&gt;
* Избирательное управление доступом (DAC, ACL — unix права)&lt;br /&gt;
* Межсетевой экран&lt;br /&gt;
* Fail2ban и прочее&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Мнение]] [[Категория:hosting]]&lt;/div&gt;</summary>
		<author><name>lor&gt;Awesomelackware</name></author>
	</entry>
</feed>