• Главная

Для чего нужен сервер или как сделать сервер своими руками (mini Server). Хостинг своими руками


Домашний хостинг своими руками - кодер.укр

Всем добрый день.

Многие хотели иметь свой домашний хостинг, не просто запущенный apache и доступ к сайту по localhost и тому подобным путям, а что бы еще и друзья могли зайти и насладится вашим домашним сайтом.

Ну что же начнем.

Система у меня Ubuntu, для Windows порядок манипуляций похож.

Для начала нам нужно иметь внешний IP, в моем случае это 46.98.112.249, так как у меня оптика и она подключена к моему ПК.

Проверим настройки нашего сервера, он должен слушать все IP или определенные которые мы укажем. Настроить порты и IP для прослушки можно в файле /etc/apache2/ports.confLISTEN *:80 #слушаем все ip на 80 порту LISTEN 46.98.112.249:80 #или слушаем только определенный ip

В настройках VirtualHost так же можно указать на каком порту и на каком ip должен работать хост, конфиги локал хостов находятся в /etc/apache2/site-avalible

<VirtualHost *:80> # все ip (наш вариант) <VirtualHost 127.0.0.1:80> # только с локального ПК

Если вам все же пришлось что то менять в конфигах то надо перезапустить apache, что бы изменения вступили в силу:

$ sudo service apache2 restart

После рестарта сервера по нашему внешнему IP мы можем видеть результат работы apache:

Мы видим наш http://localhost, теперь и другие его видят.

Но это всего лишь виртуал-хост по умолчанию, а мы хотим несколько сайтов, и что бы с нормальными доменами!

Продолжим. Я покажу пример как на домашний хостинг прикрутить субдомен. Для этого у вас должен быть хоть какой-нибудь домен. В админ панели хостинга (или регистратора) создаем поддомен, у каждого хостинга своя админ панель и кнопка создать поддомен находится в разных местах но суть остается та же, мы получаем поддомен).

создаем поддомен site.my_domain.com

Домен мы зарегистрировали, теперь укажем домену где находится наш сайт, для этого нам у провайдера нужно изменить ресурсную запись DNS и указать наш IP

Теперь домен знает где живет сайт и как его зовут.

Но наш домашний сервер не знает ничего про домен, какой сайт отдать при обращении и т.д.. Расскажем сейчас ему, что делать при обращении из вне.

Для этого необходимо в конфиге виртуал хоста указать домен /etc/apache2/site-avalible/you_file_name.conf

<VirtualHost *:80> # хост для всех ip но для 80 порта ServerAdmin webmaster@localhost DocumentRoot /home/user_name/project/site # папка с сайтом ServerName site.my_domain.com #наш домен ServerAlias www.site.my_domain.com #тоже наш домен ServerAlias my_site.local # для локального доступа на всякий случай) ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /home/user_name/project/site> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

Далее перезапустить сервер

$ sudo service apache2 restart

И вуаля!!)

Но не тут то было, записи DNS еще не обновились и мы не можем по нашему url пройти на наш сайт. Записи DNS обновляются до 72 часов. Но есть выход воспользоваться DNS гугла. Укажите DNS 8.8.8.8 он достаточно быстро обновляется, что даже через несколько минут вы увидите результат.

Остальным придется ждать пока их DNS обновятся.

Ну если вашим друзьям совсем не в терпеж, то они могут прописать у себя в файле hosts ваш IP и ваш домен и сразу перейти на ваш сайт.

По аналогии вы можете сколько угодно сайтов запустить на вашем ПК.

Удачи!

Так же вам может быть интересно: Домашний web сервер на динамическом IP

xn--d1acnqm.xn--j1amh

Домашний хостинг — плюсы и минусы — Веб-мастерская Epsilon

Периодически у моих знакомых с ВиО (обычно это начинающие программисты, у которых ещё нет хороших источников дохода) возникает гениальное решение — вместо покупки платного хостинга настроить свой собственный компьютер и использовать его как хостинг!

Первая мысль — это круто! Ну посудите сами: дискового места — навалом, памяти — куда больше, чем предлагается на недорогих платных хостингах, все данные надёжно защищены, т.к. лежат «под рукой». Фантастика!

Но я же не зря открыл эту тему. Всё не так уж радужно.

1. Нормальный хостинг крутится на Linux. Да, на Windows тоже можно поставить Apache, Nginx, PHP и MySQL и всё это будет как-то работать. Но к сожалению, на Linux очень много серверного софта, у которого на Windows просто нет аналогов. Это серверные модули, это memcached, это nginx+php5-fpm, phpDaemon, это ещё с десяток нужных для серьёзной разработки вещей. Которых на Windows нет и не будет никогда. Ты можешь поставить на домашнем компе Linux. Но тогда забудь про игрушки, MS Office и Photoshop. Уже не так радужно, верно?

2. Твой домашний компьютер — говно. Ты купил его вчера за сотни денег и он у тебя самый трендовый? Он всё равно говно. Для серверов используются специализированные платформы, там всё специфическое — начиная от материнской платы и заканчивая восьмиядерными процессорами. Даже не слишком мощный серверный компьютер легко переплюнет твой суперсовременный i7, который ты купил буквально вчера. Да, для игрушек с PHP вроде «Hello world!» его вполне достаточно, но как только ты запустишь на нём серьёзный сайт, тебе реально придётся выбирать — отдать ресурсы своему «серверу» или же использовать комп для игры в очередной баттлфиелд.

3. Исходящая скорость. Ты знаешь что это? Это скорость интернет-соединения, которая доступна у тебя дома. Но это не та скорость, которую твой провайдер написал у себя в рекламном буклете. Там написана входящая скорость. Наверняка у тебя она достаточно высокая, 100 Мбит или даже выше. Однако исходящая (а именно она важна, когда некто будет пытаться скачать с твоего сайта страничку или может быть даже файлы) обычно на порядок меньше. Наверняка она у тебя не превышает реальных 10 Мбит. А это значит, что 5-6 онлайн пользователей могут легко заткнуть твой интернет, что ни на игрушки, ни на комфортное использование уже не останется.

4. Стабильность. Это означает, что твой компьютер должен быть теперь включён 24 часа в сутки. И никакие причины (отключения электроэнергии в квартире в том числе) не должны приводить к пропаданию его из сети. Пропавший из интернета сервер резко теряет доверие поисковых роботов и они его не задумываясь выбрасывают из рейтинга или же опускают так низко, где твой сайт никто никогда не найдёт. А если ты думаешь выключать свой комп на ночь (ведь твои родители наверняка платят за электроэнергию и им не в кайф постоянно включенный прибор), то от тебя начнут уходить и те пользователи, которые знают твой сайт по домену.

5. Кстати о домене. Его тебе всё же придётся покупать отдельно. Потому что никто не будет запоминать твой сайт как http://45.67.89.234/ И статический адрес тебе тоже придётся покупать. Сейчас многие провайдеры держат адрес без изменения достаточно долго, например, прошлый провайдер не менял мой IP полгода, а вот тот, к которому я сейчас подключён, меняет мой IP каждый раз при переподключении к интернету. Учти, что IP в настройках домена активизируется примерно 4-8 часов, так что в худшем случае твой домен почти всегда будет указывать на неверный IP-адрес.

6. Учти то, что усиленно работая 24 часа в сутки, постоянно предоставляя посетителям различные данные на HDD, твой комп будет нехило изнашиваться. И твой обычный домашний комп через полгода такой работы можно будет просто выбросить на свалку.

Подели его стоимость на полгода-год, прибавь электроэнергию и скорее всего необходимость покупки ещё одного компа (для своих нужд), нервы с родителями, и подумай — что дешевле — купить стабильный надежный хостинг, который полностью обеспечен всем необходимым, или «бесплатный» домашний хостинг?

epsiloncool.ru

И снова о… LAMP и базово защищённый мини-хостинг своими руками / Хабр

Увидев в очередной раз презренный посыл в Google в ответ на вопрос о том, как развернуть собственную LAMP'у, решил написать данный пост. Чтобы хоть как-то разбавить тонны радостных отчётов об успешной установке из блогов, суть которых сводится к одной команде aptitude install blah-blah.

Нет, ну конечно понятно, PHP самый надёжный язык, а все движки сайтов, на нём написанные, являются живым воплощением непробиваемой защиты от взлома. Тогда да — aptitude install apache2 — и будет вам счастье. Не забудьте оставить phpmyadmin по дефолтному адресу, да поставьте какое-нибудь дырявое FTP решето.

Вообще, как оказалось, многие даже не в курсе, что взломав сайт и получив возможность исполнять свой PHP код, злоумышленник на системе с дефотными настройками сможет как минимум прочитать в вашей системе почти что угодно. Оно и понятно — работая с Linux привыкаешь как-то, что по дефолту безопасность находится на вполне достаточном уровне. А тут такая дыра…

В общем — в этой статье в очередной раз описывается банальщина на тему как развернуть LAMP и дать доступ внешним пользователям к файлам и базам ваших сайтов. Т.е. как быстро сделать мини-хостинг своими руками. Однако, в отличие от, хостинг у нас будет хотя бы базово защищённым.

Те, кому тема веб-серверов надоела, возможно смогут найти в статье интересные приёмы многопользовательского ограниченного доступа к серверу по SFTP.

И нет, это не ещё одна статья с описанием установки Linux и выполнением aptitude install apache2. Скорее наоборот: в этой статье я хотел показать фатальную недостаточность данных манипуляций и мягко говоря некомпетентность тех, кто их тиражирует в интернете.

Установка

Всё будет описано на примере Debian.

Для начала нужно установить всё необходимое (кстати, для Ubuntu phpMyAdmin лучше ставить из PPA):

aptitude install apache2 mysql-server libapache2-mod-php5 ssh aptitude install phpmyadmin При установке phpMyAdmin генерируем произвольный пароль для подключения к БД, в остальном всё очевидно.

Как это будет работать

Все пользователи, которым нужно получить доступ к файлам на сервере, будут иметь локальную учётную запись с возможностью захода только по SFTP и только в папку с принадлежащими им сайтами. При этом будет поддерживаться авторизация как по паролю, так и по ключу. Интерактивный же вход по SSH будет невозможен, хотя если очень надо — его можно будет включить, причём тоже с закрытым доступом к системным файлам.

Никакого FTP не будет, хотя его и возможно легко прикрутить. SFTP надёжней (шифрование, возможность авторизации по ключу), а FTP в данном случае элементарно избыточен и является достаточно большой потенциальной дырой в безопасности.

Каждый сайт будет принадлежать некоему 'аккаунту', т.е. под одним 'аккаунтом' может быть несколько сайтов. К этим 'аккаунтам' привязываются SFTP пользователи, причём никто не мешает к одному 'аккаунту' привязать несколько пользователей. Дальше, внутри 'аккаунта', всё можно будет разрулить стандартными механизмами прав доступа в Linux.

Пользователи и пароли от БД никак не будут зависеть от системных пользователей, управление БД будет происходить через стандартный phpMyAdmin.

Кроме всего прочего сайты, работающие на вашем сервере, не смогут вылезти за пределы своего рабочего каталога и прочитать или изменить какие-нибудь данные, к ним не относящиеся.

Немного подробней про структуру

Все сайты будут лежать в каталогах вида /var/www/ACCOUNT/sites/SITENAME. ACCOUNT тут не обязательно означает какого-то системного пользователя, просто некий произвольный идентификатор.

У системных пользователей, которые будут подключаться по SFTP для редактирования сайтов, в качестве домашней директории будет установлено /var/www/ACCOUNT/home/USERNAME. Соответственно в зависимости от значения ACCOUNT тот или иной пользователь будет иметь доступ к тому или иному аккаунту. Создание каталога home внутри аккаунта нужно для того, чтобы иметь возможность авторизовывать SFTP пользователей по ключам.

Для всех пользователей SFTP основной группой будет установлена www-data (дефолтная группа Apache2 в deb-based). Кроме этого, все создаваемые как пользователем по SFTP, так и Apache, файлы по умолчанию будут иметь права 0660, а каталоги — 0770. Поскольку у Apache и SFTP пользователя одна и та же группа, то по-умолчанию в любой новый файл или каталог сможет писать как пользователь, так и веб-сервер, вне зависимости от того, кто его создал. Что обычно и требуется.

Базы же будут использовать свой, полностью отдельный механизм авторизации и контроля доступа. Тут всё крайне просто: создаём пользователей и даём им права только на конкретные базы. Поэтому к этому вопросу возвращаться больше не будем.

Создание 'аккаунтов' и системных пользователей

Размещение сайта на сервере стоит начать с подготовки места под него и создания пользователя для работы с ним. Как описано выше, для сайта нам нужна папка вида /var/www/ACCOUNT/. В качестве ACCOUNT задействуем для примера 42. Просто 42. Ок, создаём папку:mkdir /var/www/42 Кроме этого внутри аккаунта нам нужны каталоги home/USERNAME и sites. Создаём их:mkdir -p /var/www/42/home/marvin mkdir /var/www/42/sites Для будущей настройки SFTP сразу стоит убедиться, что и /var/www/42/sites, и все нижестоящие папки принадлежат root:root и ни у кого, кроме root, нет прав на запись в них.

Дальше создаём пользователя. Чтобы не путаться с обычными, полноценными пользователями сервера, SFTP пользователей можно перенести в диапазон UID от 901 до 999. Если вам это не надо — уберите соотв. параметры. Если вы хотите авторизовываться только по ключу, то добавьте параметр --disabled-password. В итоге команда такая:

adduser --home /var/www/42/home/marvin --no-create-home --shell /bin/false --firstuid 901 --lastuid 999 --ingroup www-data marvin Установка шелла в /bin/false гарантирует нам, что пользователь никак не сможет интерактивно зайти в систему.

Настройка SFTP

Настройка SFTP будет заключаться в том, что для всех членов группы www-data мы сделаем так, чтобы при заходе по SFTP они попадали сразу в папку sites 'аккаунта', в котором находится их HOME директория, без возможности выбраться выше по дереву каталогов.

Делается это просто. Достаточно в конец файла /etc/ssh/sshd_config дописать код

# Специальный доступ для пользователей из www-data: chroot в их HOME, # установленный umask 007, соответствующий 0660 для файлов и 0770 для каталогов Match Group www-data AllowTCPForwarding no X11Forwarding no ChrootDirectory %h/../../sites ForceCommand internal-sftp -u 0007 И ткнуть sshd для обновления конфигурации:service ssh reload Этот кусочек кода для всех пользователей из группы www-data, во-первых, отключает TCP и X11 форвадинг (им незачем иметь доступ в вашу локалку). Во-вторых делает для них при заходе chroot в sites папку их 'аккаунта' (именно для этого нам нужно было делать sites папки доступными для записи только для root — иначе не работает chroot). Ну и в третьих меняет им обработчик SFTP на встроенный (которому не нужно полноценное окружение с шеллом и прочим), попутно говоря ему создавать все файлы и папки со значение umask в 007. То есть права по умолчанию на новые файлы будут 0660, а на каталоги — 0770.

Настройка Apache и phpMyAdmin

Как-либо специфично настраивать Apache для обеспечения базовой работы не нужно. Единственное, что в Debian пакет PHP5 идёт с интегрированным патчем Suhosin, повышающим безопасность. Он будет необходим при настройке конфигов сайта, хотя вполне можно обойтись и без него.

А так в целом для Apache нужно лишь изменить umask для создаваемых файлов и папок на такой же, который мы использовали для настройки SFTP. Делается это путём добавления в /etc/apache2/envvars строчек:

# umask 007 для создания файлов с разрешениями 0660 и каталогов с 0770 umask 007 Для минимальной настройки phpMyAdmin нужно лишь поменять адрес, по которому он будет доступен, с неприлично бестолкового your.site/phpmyadmin на что-то другое. Для этого в файле /etc/phpmyadmin/apache.conf нужно заменить строчкуAlias /phpmyadmin /usr/share/phpmyadmin на, например:# А мы немного схитрим! Alias /вдушу_влазер /usr/share/phpmyadmin Не забывайте перезапускать Apache:service apache2 restart

Добавление сайтов

Для добавления сайтов на ваш хостинг нужно сделать две вещи — во-первых, разместить файлы сайта с нужными правами на вашем сервере, а во-вторых создать конфиг апача для сайта. Кроме этого чаще всего потребуется создать БД и настроить права доступа к ней — но это тривиальная операция, поэтому рассматривать её не будем.

Для размещения файлов нужно из-под root создать каталог сайта в папке нужного 'аккаунта'. Например:

mkdir /var/www/42/sites/deep-thought.net Дальше выставить желаемые права. Как минимум у SFTP пользователя, который будет работать с этим каталогом, должны быть права на запись. К примеру, можно сделать так:chown marvin:www-data /var/www/42/sites/deep-thought.net chmod 0750 /var/www/42/sites/deep-thought.net Ок, теперь пользователь может зайти и залить файлы сайта. Осталось настроить апач. Для этого, как всегда, создаём файл настроек в директории /etc/apache2/sites-available. Содержимое этого файла для сайта deep-thought.net с данными в каталоге /var/www/42/sites/deep-thought.net должно быть примерно таким:<VirtualHost *:80> ServerAdmin [email protected] ServerName deep-thought.net # Корневая директория сайта DocumentRoot /var/www/42/sites/deep-thought.net <Directory /var/www/42/sites/deep-thought.net> # Тут всякая стандартная хрень по типу #Options FollowSymLinks #AllowOverride All <IfModule mod_php5.c> # Запрещаем php вылазить куда ему совершенно не надо php_admin_value open_basedir /var/www/42/sites/deep-thought.net # Поскольку вылазить запретили - сохраняем временные файлы и сессии внутри корня сайта php_admin_value upload_tmp_dir /var/www/42/sites/deep-thought.net/temp php_admin_value session.save_path /var/www/42/sites/deep-thought.net/temp # Отключаем возможность инклуда по URL php_admin_flag allow_url_include off # Отключаем возможность динамической подгрузки модулей PHP php_admin_flag enable_dl off # Отключаем всю лабудень для системных вызовов php_admin_value suhosin.executor.func.blacklist apache_note,apache_setenv,closelog,debugger_off,debugger_on,define_syslog_variables,escapeshellarg,escapeshellcmd,ini_restore,openlog,passthru,pclose,pcntl_exec,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,syslog,system,url_exec </IfModule> </Directory> # Закрываем, на всякий случай, доступ в temp <Directory /var/www/42/sites/deep-thought.net/temp> AllowOverride None Order Deny,Allow Deny from All </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost> Важным тут является только содержимое блока <IfModule mod_php5.c>. В нём находятся настройки PHP, которые во-первых, запрещают обращение к файлам вне корневой директории сайта (open_basedir и перенос в temp), во-вторых отключают две крайне опасные возможности PHP (allow_url_include, enable_dl), которые всё ещё присутствую в современных версиях PHP и даже могут быть включены. И наконец в-третьих, запрещают PHP скриптам использовать целый ряд функций взаимодействия с ОС. Например, функций исполнения произвольной команды. Список функций честно выцеплен откуда-то из интернета и не претендует на всеобщий охват, хотя вроде бы является достаточным для обеспечения безопасности.

Немного про temp: поскольку мы запрещаем PHP обращаться к файлам вне корневой директории сайта, то нам нужно указать каталог для сохранения временных файлов (файлов, загружаемых пользователями сайта на сервер через стандартный механизм загрузки из HTML формы) и файлов сессий внутри корня сайта. Каталог этот нужно, естественно, предварительно создать. Кроме этого лучше бы явно закрыть к нему доступ из интернета, что и сделано во втором блоке Directory. Иначе кто-нибудь может невзначай получить сессии ваших пользователей.

Если на сервере не установлен Suhosin, то вместо suhosin.executor.func.blacklist можно использовать стандартную опцию PHP disable_functions. Правда её нужно указывать в php.ini, т.е. она будет действовать на все сайты на вашем сервере.

Кроме этого в приведённых выше настройках не отключена функция eval. Увы, многим сайтам она зачем-то нужна, хотя всё же лучше её отключать. Обратите внимание на опции suhosin.executor.disable_eval и suhosin.executor.disable_emodifier всё того же Suhosin.

После того, как вы подготовите нужный вам конфиг, просто активируйте сайт:

a2ensite deep-thought.net И не забудьте пнуть апач:service apache2 reload Ну и конечно нужно залить файлы и базу данных сайта на сервер — без них вряд ли что-то заработает.

Тюнинг SSH: ключи и интерактивный вход

Для доступа пользователей SFTP по ключам нужно сделать всё тоже, что делается всегда: внутри HOME каталога создать директорию .ssh/, в ней файлик authorized_keys, в который прописать публичный ключи для пользователя.

Кроме этого, можно некоторым пользователям открыть интерактивный доступ на сервер. Для этого нужно, во-первых, подготовить в корневой папке соответствующего 'аккаунта' нужное chroot окружение, как минимум с интерпретатором и всеми необходимыми виртуальными ФС. Делается это стандартно и ничего сложно в этом нет.

Дальше можно создать дополнительную группу для интерактивного входа. Например, ssh-interactive:

addgroup --gid 900 ssh-interactive Добавить в неё нужных пользователей, попутно сменив им SHELL на полноценный bash:usermod -a -G ssh-interactive --shell /bin/bash marvin И прописать для этой группы специфические настройки в sshd_config. Для этого нужно модифицировать директиву Match, относящейся к www-data, дописав к ней !ssh-interactive, дабы она не распространялась на пользователей этой группы:Match Group www-data,!ssh-interactive И после неё добавить ещё одну директиву Match:# Интерактивный вход по SSH для доступа к коду сайтов Match Group www-data,ssh-interactive AllowTCPForwarding no X11Forwarding no ChrootDirectory %h/../../ Проблема только в том, что для членов группы ssh-interactive umask больше не будет выставляться в 007. Исправить это можно дописав соответствующий параметр в глобальных настройках подсистемы sftp в sshd_config. Кстати, вряд ли вы захотите перетаскивать компоненты openssh в chroot окружение, так что можно заодно сменить внешний обработчик sftp на внутреннюю реализацию:Subsystem sftp internal-sftp -u 0007 Подробней про конфигурацию SFTP: http://en.wikibooks.org/wiki/OpenSSH/Cookbook/SFTP

В заключение

Меня всегда интересовал вопрос — а нет ли где-нибудь на официальных ресурсах полного списка с описанием всех PHP функций, которые так или иначе могут дать доступ скрипту к компонентам и файлам системы. Приведённый выше список честно взят из интернета, так что если кто поделится ссылочкой на списочек функций — буду премного благодарен.

Ну и да — если есть какие-то комментарии по поводу того, что ещё минимально можно сделать для обеспечения безопасной работы простейшего хостинга — пишите.

habr.com

Хостинг на домашнем компьютере - видеокурс

Итак, уважаемый читатель, наконец-то мы подошли к запуску полноценного динамического сайта с домашнего компьютера. Сегодня мы настроим PHP и MySQL, установим phpMyAdmin.

И на этой позитивной ноте позвольте подытожить получившийся видеокурс.

Данный видеокурс из 5-ти частей имеет цель дать базовые знания по администрированию системы Linux, познакомить с процессом настройки Apache + PHP + MySQL. И, скорее, является пособием по развеинью благоговейного трепета перед услугами хостинг-провайдера и ощущения тайны покрытой мраком, витающей над Linux-ом, нежели руководством к немедленному действию.

Сам я начал изучать процесс администрирования сервера будучи совершенно уверенным в том, что хоститься гораздо удобнее и спокойнее у какого-то провайдера, нежели самому связываться со всем этими заморочками.

Но, начав работать с более-менее серьезными проектами, я в корне поменял свое мнение и ощутил весь кайф работы с сервером на полную.

В любом случае, на мой взгляд, знания по администрированию сервера обязательно должны быть у уважающего себя веб-строителя.

Первая часть видеоурока на YouTube:

Вторая часть видеоурока на YouTube:

Третья часть видеоурока на YouTube:

Бонусное видео по настройке Нейм-сервера хостинг провайдера:

 

Хотите скачать видео в лучшем качестве и дать мне возможность заработать несколько центов?

– Нет проблем! Вот ссылки:

Если вы ищите подробную статью с видеоуроком о хостинге, ссылку на которую я пообещал, то вот она.

С уважением, Андрей Морковин.

www.sdelaysite.com

Виртуальный хостинг и свой домен на домашнем компьютере » Самоучка

8

Для проверки в разных браузерах иногда бывает необходимо протестировать свой сайт до того как установить его на платный хостинг. Некоторые,в том числе и я, вообще пользуются домашним компьютером как виртульным хостингом для своего сайта.Как пишут в Интернете, некоторые умудряются держать на своем ноутбуке несколько ресурсов и спокойно вещать их в web-сеть. Если вы тоже хотите настроить виртуальный хостинг на своем компьютере, то в этой статье вы найдете как это сделать.Настройка виртуального хостинга не вызывает особых осложнений. Установка XAMPP была описана ранее. Для установки полноценного сервера на домашнем компьютере необходимы некоторые требования:

- у Вас должен быть уникальный(белый) или выделенный IP. Его можно приобрести у провайдера.

- вам потребуется ДНС сервер для связи ваших доменных имен с вашим сервером. Для этого необходимо при регистрации домена, выбирать регистратора, который предоставляет такие услуги. Обычно такие услуги платные. Можно воспользоваться бесплатным ДНС сервисом Яндекса.После того как вы только установили XAMPP на домашний компьютер, у вас имеется только один локальный домен localhost. Если вы сделаете настройку виртуальных хостов, то сможете разместить сколько захочется сайтов со своими доменами. Для настройки виртуального хостинга открываете папку /xampp/apache/conf/extra/httpd-vhosts.conf.

Все что находится в этом файле, оставляете как есть. При добавлении новых хостов, первым должен быть обязательно localhost. Добавлять новые строки в такие файлы лучше всего с помощью специального блокнота Notepad++, но можно и обычным блокнотом. Добавляете такие строчки:

NameVirtualHost *:80

<VirtualHost>ServerName localhostDocumentRoot c:/xampp/htdocs/localhost/wwwServerAdmin [email protected]</VirtualHost>

<VirtualHost>ServerName mysite.ruServerAlias www.mysite.ruDocumentRoot c:/xampp/htdocs/mysite.ru/wwwServerAdmin [email protected]</VirtualHost>

<VirtualHost>ServerName mysite2.ruServerAlias www.mysite2.ruDocumentRoot c:/xampp/htdocs/mysite2.ru/wwwServerAdmin [email protected]</VirtualHost>

Здесь mysite.ru и mysite2.ru названия ваших доменов, которые измените на свои. [email protected] – почта админа сайта.

После такой настройки виртуального хостинга на домашнем компьютере останется только прописать на ДНС ваши указанные в этом файле домены и направить их на ваш IP.

Чтобы запустить это все для общего доступа, обезопасить на сколько это возможно в windows, читайте мои следующие статьи, обязательно прочтите, не запускайте сервер для всех желающих в этом состоянии, так как он совсем отрыт для всего и всех.

malwselennaiaru.ru

Правильный хостинг своими руками – TheWired

Для следующей статьи нам понадобится связка NGINX + PHP5-FPM. Установим и настроим.

Начнем с python-software-properties для удобного добавления репозиториев. Выполним в консоли сервера команды:

apt-get install libcurl3-gnutls apt-get install python-gnupginterface apt-get install python-pycurl apt-get install python-software-properties apt-get install unattended-upgrades

apt-get install libcurl3-gnutls

apt-get install python-gnupginterface

apt-get install python-pycurl

apt-get install python-software-properties

apt-get install unattended-upgrades

Теперь добавим репозиторий NGINX:

add-apt-repository ppa:nginx/stable apt-get update

add-apt-repository ppa:nginx/stable

apt-get update

Далее, устанавливаем сам NGINX, PHP5-FPM и сопутствующий софт:

apt-get install nginx apt-get install php5-fpm apt-get install mysql-server apt-get install php5-mcrypt apt-get install php5-mysql apt-get install php5-curl apt-get install php-db apt-get install php5-gd apt-get install unzip

apt-get install nginx

apt-get install php5-fpm

apt-get install mysql-server

apt-get install php5-mcrypt

apt-get install php5-mysql

apt-get install php5-curl

apt-get install php-db

apt-get install php5-gd

apt-get install unzip

Устанавливаемые пакеты можно было бы и перечислить в строку, однако виртуальная машина в Digital Ocean в этом случае принудительно приводит к аборту. Выглядит это вот так:

After this operation, 198 MB of additional disk space will be used. Do you want to continue [Y/n]? y Abort.

After this operation, 198 MB of additional disk space will be used.

Do you want to continue [Y/n]? y

Abort.

Поэтому выполняйте команды одну за одной, последовательно. В процессе установки спросит пароль для MySQL, придумайте пароль посложнее и запишите его, впоследствии пригодится :) Наш сервер будет исполнять PHP посредством PHP5-FPM. Никакой Apache нам не тарахтел, по двум причинам:

  1. NGINX потребляет меньше памяти, чем Apache;
  2. Каждый сайт будет «запускаться» от своего юзера.

Для быстрых правок на сервере я советую связку PuTTY + MC. Для более вдумчивой и комфортной работы — WinSCP + Sublime Text 3. Все это лезет на сервер посредством SSH/SFTP, поэтому стандартный FTP нам также не тарахтел :)

Создадим группу SFTP (выполняем команду в консоли):

Теперь запускаем MC, находим файл:

В конец файла добавляем:

Subsystem sftp internal-sftp Match Group sftp ChrootDirectory %h AllowTCPForwarding no ForceCommand internal-sftp

Subsystem sftp internal-sftp

Match Group sftp

    ChrootDirectory %h

    AllowTCPForwarding no

    ForceCommand internal-sftp

Комментируем там же строку:

#Subsystem sftp /usr/lib/openssh/sftp-server

#Subsystem sftp /usr/lib/openssh/sftp-server

Теперь для нашего будущего сайта нужно создать домашнюю директорию, директорию для временных файлов, юзера, добавить его в группу SFTP и назначить домашнюю директорию. Выполняем команды:

mkdir /var/www mkdir /var/www/siteru mkdir /var/www/siteru/www mkdir /var/www/siteru/tmp adduser siteru adduser siteru sftp usermod -d /var/www/siteru siteru

mkdir /var/www

mkdir /var/www/siteru

mkdir /var/www/siteru/www

mkdir /var/www/siteru/tmp

adduser siteru

adduser siteru sftp

usermod -d /var/www/siteru siteru

Далее надо настроить PHP и NGINX. Открываем файл:

Втыкаем в него это:

post_max_size = 100M upload_max_filesize = 100M cgi.fix_pathinfo = 0

post_max_size = 100M

upload_max_filesize = 100M

cgi.fix_pathinfo = 0

Теперь открываем файл:

Можно сделать резервную копию старого, если хотите. В новый файл пишем:

user www-data; worker_processes 4; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; client_max_body_size 100m; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain text/html text/xml application/xml application/x-javascript text/javascript text/css text/json; gzip_disable "msie6"; gzip_comp_level 8; charset utf-8; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

user                    www-data;

worker_processes        4;

error_log               /var/log/nginx/error.log;

pid                     /var/run/nginx.pid;

events {

                        worker_connections  1024;

}

http {

    include             /etc/nginx/mime.types;

    client_max_body_size 100m;

    access_log          /var/log/nginx/access.log;

    sendfile            on;

    keepalive_timeout   65;

    tcp_nodelay         on;

    gzip                on;

    gzip_min_length     1000;

    gzip_proxied        any;

    gzip_types          text/plain text/html text/xml application/xml application/x-javascript text/javascript text/css text/json;

    gzip_disable        "msie6";

    gzip_comp_level     8;

    charset             utf-8;

    include             /etc/nginx/conf.d/*.conf;

    include             /etc/nginx/sites-enabled/*;

}

Открываем файл:

/etc/nginx/fastcgi_params

/etc/nginx/fastcgi_params

Комментируем строку:

#fastcgi_param HTTPS $server_https;

#fastcgi_param  HTTPS                   $server_https;

Настало время разобраться с виртуальными хостами. NGINX подгружает сайты из директории /etc/nginx/sites-enabled/, а рядом с ней есть директория /etc/nginx/sites-available/. В первой директории находятся симлинки на конфиг файлы сайтов из второй директории. Это очень удобно, для удаления/отключения виртуального хоста надо просто удалить симлинк и перезапустить NGINX. Стандартный конфиг файл для виртуального сервера выглядит так:

upstream backend-siteru {server unix:/var/run/php5-siteru.sock;} server { listen 80; server_name siteru.domain.ru; root /var/www/siteru/www; access_log /var/log/nginx/siteru-access.log; error_log /var/log/nginx/siteru-error.log; index index.php; rewrite_log on; location /core/ { deny all; } location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass backend-siteru; } location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ { access_log off; expires 10d; break; } location ~ /\.ht { deny all; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

upstream backend-siteru {server unix:/var/run/php5-siteru.sock;}

server {

    listen              80;

    server_name         siteru.domain.ru;

    root                /var/www/siteru/www;

    access_log          /var/log/nginx/siteru-access.log;

    error_log           /var/log/nginx/siteru-error.log;

    index               index.php;

    rewrite_log         on;

    location /core/ {                                                      

        deny all;                                                          

    }

    location / {

        try_files       $uri $uri/ @rewrite;

    }

    location @rewrite {

        rewrite         ^/(.*)$ /index.php?q=$1;

    }

    location ~ \.php$ {

        include         fastcgi_params;

        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_pass    backend-siteru;

    }

    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ {

       access_log       off;

       expires          10d;

       break;

    }

    location ~ /\.ht {

        deny            all;

    }

}

В этих настройках сразу активированы Frienfly URLs, отдача статики и отработка PHP посредством PHP5-FPM (для него обозначается backend, 1-я строка конфига). Следующий можно создавать, просто скопировав этот конфиг и поменяв название одного сайта, на название другого. Далее, создаем симлинк:

ln -s /etc/nginx/sites-available/siteru.conf /etc/nginx/sites-enabled/siteru.conf

ln -s /etc/nginx/sites-available/siteru.conf /etc/nginx/sites-enabled/siteru.conf

Далее, надо создать процесс PHP5-FPM для сайта. Создаем файл:

/etc/php5/fpm/pool.d/siteru.conf

/etc/php5/fpm/pool.d/siteru.conf

В него пишем:

[siteru] listen = /var/run/php5-siteru.sock listen.mode = 0666 user = siteru group = siteru chdir = /var/www/siteru php_admin_value[upload_tmp_dir] = /var/www/siteru/tmp php_admin_value[date.timezone] = Europe/Moscow pm = dynamic pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 4

[siteru]

listen = /var/run/php5-siteru.sock

listen.mode = 0666

user = siteru

group = siteru

chdir = /var/www/siteru

php_admin_value[upload_tmp_dir] = /var/www/siteru/tmp

php_admin_value[date.timezone] = Europe/Moscow

pm = dynamic

pm.max_children = 10

pm.start_servers = 2

pm.min_spare_servers = 2

pm.max_spare_servers = 4

Перезапускаем сервисы:

service nginx restart service php5-fpm restart

service nginx restart

service php5-fpm restart

Все :)

Я советую хостинг Linode и Digital Ocean. Рефам помощь в установке и настройке — бесплатно!

www.thewired.ru

Мини-Сервер своими руками - это просто!

Сервер - это часть компьютерной сети для совместного использования ресурсов. Новичку главное понять, как и для чего, будет использоваться сервер. Ведь именно с этой задумки начинается сборка, установка и настройки сервера. Этапы создания сервера:

- выбор комплектующих- выбор и установка операционной системы- настройка сети- настройка прикладных программ

Mini server - условное название сервера за основу которого взят простой персональный компьютер, проще сказать это домашний сервер, причем его роль может выполнять как простой стационарный компьютер так и неттоп, ноутбук и даже нетбук. Главная цель mini server показать максимальные возможности mini систем, как со стороны стоимости оборудования так и со стороны производительности. Сделанный сервер своими руками не уступает по качеству многим хостинг компаниям и даже во много привосходит некоторые фирмы.

Для чего нужен сервер - в первую очередь сервер нужен для организации и коллективной работы в сети. Как основы для mini server я выделил несколько типов серверов:

- Игровой сервер- Web сервер- Файловый сервер- Сервер доступа

Для обеспечения корректной работы оборудования необходимо также включать в инфраструктуру сервера и источник бесперебойного питания (ИБП). Для небольших сверверов подойдет линейно-интерактивный (Smart) ИБП. При выборе источника бесперебойного питания для сервера стоит обратить внимание на модели "флагмана" в производстве ИБП для домашних или небольших серверов - компании APC by Schneider Electric. Именно от их серии APC Smart-UPS пошло общее название линейно-интерактивных (Smart) ИБП. В России данная линейка так же широко представлена, как и во всем мире, и постоянно пополняется новыми моделями бесперебойников для серверов и ПК.

Установив на Ваш компьютер необходимое программное обеспечение, настроив его и подключив к интернету, Вы получаете игровой сервер. Пользователи, желающие играть на Вашем сервере, так же должны установить на своём компьютере соответствующее программное обеспечение - клиент. Клиенты, зная IP адрес вашего сервера, смогут подключиться к нему и войти в игру.

 

Администратору не обязательно быть рядом с сервером, в большинстве случаев, все сервера управляются удаленно, через локальную сеть или интернет. Надо учитывать тот факт, что администратор может управлять сервером практически с любого компьютера, т.к. сервер ограничивает доступ клиентам на уровне проверки имени и пароля.Читать далее >>>

     Web сервер - Web

Выполняет функцию хостинга, в собранном сервере своими руками мы можем поместить сайт, например с PHP и базой данных SQL, привязать IP нашего домашнего сервера к имени нашего домена, запустить почтовый ящик для нашего сайта. Удаленное администратирование нашего сервера осуществляется с применением панели управления хостингом ISPconfig, которая построена на открытом исходном коде, и упрощает работу администратора сервера построенного на Linux системах. Панель ISPconfig 3 способна управлять несколькими серверами с одной панели управления и разделять пользователей между собой, таким образом можно вести отдельный учет каждого из клиентов с индивидуальными настройками и правами.

На приведенном рисунке изображен самый простой вид хостинга, в котором управление осуществляется удаленно - через интернет, при обращении к одному главному серверу который уже в свою очередь управляет другими. Такая схема помогает разгрузить главный сервер и контролировать нагрузку между другими.

Главная задача такого сервера заключается в предоставлении места под web сайт, это в том случае, если мы говорим о паре сайтов и одном пользователе, а если Ваш сервер своими руками рассчитан на несколько сайтов и пользователей, лучше задуматься о виртуальном сервере, в данном случае нам необходимо полное управление сервером, желательно удаленное, например супер пользователь или администратор web сервера должен иметь полный контроль за пользователями и их сайтами, а так же за их ресурсами. К ресурсам лучше отнести дополнительные возможности, например поддержку PHP, баз данных SQL, создание дополнительных пользователей для FTP доступа к сайту, и самый важный момент это полностью изолировать друг от друга пользователей и их ресурсов, что бы вести общий учет за каждым в отдельности. На моем mini-servere с этой задачей отлично справляется панель управления хостингом ISPconfig и его работу Вы наблюдаете на примере этого сайта и это не хостинг, а простой домашний сервер.Читать далее >>>

     Файловый сервер - файловый

В сети для хранения большого объема информации существуют файловые сервера. Другими словами это большой диск, подключенный к сети. Для обмена файлами между FTP клиентом и файловым сервером используется одноименный протокол FTP (File Transfer Protocol — протокол передачи файлов). Именно на этот протокол в сетях приходится самая большая часть трафика, т.к. с помощью ее мы можем загружать документы, фильмы, картинки, дистрибутивы программ, музыкальные файлы. Именно по этому протоколу мы можем: загрузить страницы нашего сайта в интернете, связать компьютеры между собой для обмена файлами (открываем общий доступ к файлам). Файловый сервер предусматривает авторизацию пользователей для ограничения использования ресурсов, если в этом есть необходимость. Как правило, файловый сервер своими руками не сильно зависит от мощности самого сервера (частота процессора, размера оперативной памяти) и для его роли вполне подойдет устаревший компьютер с увеличенным объемом дискового пространства. Именно HDD (жесткий диск) является самой неотъемлемой и главной частью нашего файловые сервера, как правило, в таких серверах HDD не один. Большим интересом является наличие поддержки RAID массива, именно эта функция позволяет производить независимую копию ваших данных, и ощутимо уменьшает возможность их потери. Такой вид защиты широко применяется не только на файловых серверах, но и во многих других, но взяв во внимание тот факт, что протокол FTP применяется и на других, как главный из протоколов обмена файлами в большинстве серверов. Наличие RAID массива является гарантией сохранности наших данных.

Структурная схема сети ничем не отличается от структуры игрового сервер и наша связь с файловым сервером, так же может работать как в локальной, так и интернет сети. Читать далее >>>

     Сервер доступа - router

Данный вид сети чаще всего называется маршрутизацией, в этом случае сервер своими руками выполняет функцию проводника интернета, в нем преобладает наличие нескольких сетевых карт (в дальнейшем сетевые карты будем называть как INTERNET и LAN). Сам домашний сервер подключается к интернету через карту INTERNET а вторая LAN карта подключается в локальную сеть, где необходимо раздать интернет. Задача самого сервера в этом случае направить трафик именно тем адресам компьютеров (клиентов), которым это необходимо. Сервер доступа может ограничивать возможности клиентов, например если у нас есть необходимость дать выход в интернет только на определенные компьютеры, а другие в этой же сети используются только как локальные. Такая функция ограничения сетевых возможностей клиента называется Фаерволом (Firewall).

Ограничения могут быть, как по скорости так и по разрешению доступа клиента в интернет. Самый простой пример это полный запрет на доступ в интернет, так же может быть частичным доступом, ограниченный на уровне портов, а значит можно отдельно запретить доступ в интернет не только компьютеру, но и отдельной программе на этого компьютера. Как и компьютер, каждая программа имеет свой адрес в сети. Компьютерный адрес принято называть IP адресом, тогда как адрес клиент-программы принято называть портом.Читать далее >>>

Это основная статья сайта www.mini-server.ru проекта mini server всего лишь в сжато отвечает на вопрос для чего нужен сервер, поэтому, каждый подраздел ведет на одну из страниц отдельной категории, для демонстрации самого яркого примера работы одного из видов mini server. Данная страница находится в постоянном обновлении, как и весь сайт, для этого у каждого материала Вы найдете даты последних изменений.

www.mini-server.ru