Домашний хостинг

Главные вкладки

Аватар пользователя olk olk 31 мая 2010 в 16:13

Много вопросов возникает про хостинг. Расскажу еще одно решение.
Для небольших проектов их отладки и стартапов (а так-же например для презентации проектов заказчику) вполне достаточно домашнего хостинга.
Естественно для этого необходим выделенный канал (и желательно безлимитный по трафику, хотя исходящий трафик провайдеры иногда не считают, что нам и надо).
Сервер 24/7 (можно мини-сервер), на первое время пойдет и домашний ББ, если вас не напрягает его шумность и расход энергии.
Статический IP (многие провайдеры предоставляют такую услугу за небольшие деньги), можно и динамический с использованием dyndns - но это хуже.
Ну и желателен роутер с возможностью использования DMZ и защитой от различных атак (иначе замучаетесь с защитой своей домашней сети).

Что бы совсем было интересно расскажу как я делал свой мини-сервер.

Ни для кого не секрет, что у каждого уважающего себя «итишника» со временем скапливается куча устаревшего оборудования, которое вроде уже и не используется и выкинуть жалко.
Вот и я, наводя в очередной раз порядок в своих «закромах», обнаружил интересное устройство - внешний CD-RW девайс от фирмы HP.

Для интереса измерил его размер, который оказался 280 x 180 x 60. Сразу вспомнился формат материнских плат Mini-ITX (170 x 170) и возникла идея сделать на основе данного корпуса маленький сервер 24/7 с «правильной» ОС для отладки веб-приложений и сайтов. Благо дома у меня «выделенка» со статическим IP и соответственно я могу иметь доступ к своему серверу практически из любого места.

Ну что-же, сказано сделано.

Первое - поиск подходящей материнки (формата Mini-ITX) и памяти к ней по инет магазинам. Критерии - минимальная цена, при достаточной производительности и приличным поддерживаемым объемом памяти (что важно для веб-сервера). Свой выбор я остановил на
INTEL Original D510MO mini-ITX, OEM [BLKD510MO 903641], которая привлекла меня двухядерным интегрированным процессором Атом (1.66Ггц), поддержкой памяти до 4 Гб, 4 выведено + (3 на плате) USB 2.0 порта, слот под mini-PCI (есть возможность в дальнейшем поставить например WiFi модуль) . Также заказал две 2 Гб планки DDR-2. Поискал и нашел преобразователь DC-DC (ATX) 120W и внешний блок на 12В 60W, для моих целей должно хватить. 2.5" диск на 80 Гб у меня уже был (остался от нетбука когда я его апгрейдил с 80 на 320), так что вроде все компоненты в сборе.

Для справки, стоимость заказа:
Материнская плата INTEL Original D510MO mini-ITX,
OEM [BLKD510MO 903641]                            2 490 руб.
Модуль памяти DIGMA DDR2- 2Гб, 800, DIMM OEM  2 х 1 600 руб.
Доставка в пределах МКАД                       390 руб
Стоимость заказа:                                  6 080 руб.

Адаптер внешний 60W (FJ-SW2545XY)                   394 руб.  
Конвертер 120W LR-DC12V-120W                        452 руб.
Доставка в пределах МКАД                       250 руб
Стоимость заказа:                                  1 096 руб.

Всего:                                            7 176 руб.  
(так как заказывал в разных магазинах вышло две доставки)

На следующий день получил все компоненты (а это было в пятницу) и в субботу приступил к сборке.

Итак, что мы имеем:
Материнка с памятью

Преобразователь DC-DC(АТХ)

Из заглушки для 3.5" устройств от старого АТХ-корпуса (из которого я «вырезал» блок управления (две кнопки и два светодиода)) я смастерил некий интерфейсный блочок для моего нового корпуса, с USB-планки снял и приспособил сюда же два дополнительных USB.

Далее процесс сборки.
В этом деле мне очень помогли имеющаяся у меня в наличии небольшая бормашина и клеевой пистолет. Так как внутренние размеры корпуса (из за ребер жесткости) были недостаточны, пришлось немного поработать фрезой удаляя препятствия. С помощью все той же бормашинки, наждачки, ножа, трех банок пива и такой-то матери часа через три процесс предварительной подгонки компонентов был закончен. Также приспособил валявшейся без дела блок вентиляторов от 3.5" устройств, предварительно урезав ему «уши» до приемлемых размеров. В результате после тестовой сборки получилась следующая конструкция.
Такая ориентация платы была выбран из за особенностей конструкции корпуса, мешали элементы крепления дна с крышкой. Второй аспект такого расположения - лучший режим охлаждения, хотя дальнейшая эксплуатация показала что принудительный обдув оказался избыточным, т.е. даже при отключенном принудительной вентиляции температура внутри корпуса не поднималась выше 35 градусов.

Жесткий диск при помощи формовки места клеевым пистолетом и небольшим вырезанным кусочком жести был закреплен на верхней крышке корпуса.

Ну и в итоге после покраски получил компактный сервер с неплохими характеристиками.

Аптайм пока всего лишь двенадцать дней, но ни каких нареканий к машинке нет.
Немного беспокоит дисковая система, как ноутбучный винт выдержит режим 24/7 (в следствии чего настроил бэкап раз вдень критических данных на "большого брата").
На мини-сервере установлена FreeBSD 8.0, Nginx + FastCGI + MySql + Drupal 6.16.

Комментарии

Аватар пользователя vgoodvin vgoodvin 31 мая 2010 в 19:55

"<a href="mailto:mensh@drupal.org">mensh@drupal.org</a>" wrote:
Но я бы в качестве оси CRUX поставил, ибо обрезан по самые гланды.

Какие доводы в пользу CRUX кроме компактности? Фряха тоже не сильно раздута.

Аватар пользователя olk olk 31 мая 2010 в 23:49

Ну задача минимилизации особо не стояла, все таки 80 гб (на крайний случай всегда можно вставить диск того-же типоразмер хоть на 500гб) с лихвой хватает для декларированных целей, кроме того CRUX все же на сколько я понимаю основано на ядре Linux (или я ошибаюсь ?), а мне всегда были ближе BSD системы. И еще, если из FreeBSD исключить Иксы (которые для сервера как пятая нога), собрать ядро (исключив поддержку заведомо неиспользуемых девайсов), то все получается логично и не ёмко. В числе прочего в FreeBSD 8.0 меня радует поддержка подключения USB на лету (не знаю как с этим CRUX).
Кстати почему я упомянул про USB и в самом топике и здесь. У меня есть мысль (и я ее думаю Lol использовать в дальнейшем данный сервер как контролер в элементе "умного дома" (ну это отдельная история) - ну там покормить через интернет кота, полить цветы , повертеть веб-камеру и посмотреть что там твориться в доме Smile ...
Ну и в конце концов не хотелось бы превращать все это в холивар FreeBSD vs CRUX.

Просто я пытался донести мысль, что есть простые и относительно дешевые решения.
Я не знаю сколько сейчас обходиться в среднем VDS или аренда сервера, но вот для прикидки:
У меня выделенка от Акадо без ограничения трфаика (не сочтите за рекламу - так как у них не самый дешевый трафик)
(без ограничения конечно условно, если вдруг попрет я думаю они спохватятся и чего нибудь урежут Lol
16000/1600 + Stat IP (+87 каналов ТВ) ~ 1500 руб.
Стоимость сервера ~ 8 000 руб.
Причем я привел в пример самоделку (мне так было интересней), а на самом деле есть большой выбор mini-ITX корпусов, в том числе и под "большие диски".
Кстати доступность моего канала+сервера (правда субъективно и без особой нагрузки) гораздо выше чем у многих уважаемых хостеров.
Я конечно понимаю, что если все вдруг "ломанутся", то он на раз загнется как по каналу так и по серверу, но для задекларироавнных целей самое то Smile

Аватар пользователя Shift-Web Shift-Web 31 мая 2010 в 23:37

olk, здорово ) Я делал mp3\dvd проигрыватель из начинки игрового автомата ))) Там мамы примерно такого-же формата, а на IDE стоят вместо хардов что вроде флэшек )))

Аватар пользователя vgoodvin vgoodvin 31 мая 2010 в 23:39

CRUX - это такой дистр линукса. Очень похож некоторыми деталями на BSD (инициализация, структура каталогов, названия утилит), но ядро Linux. Тут уж как по вкусу. Мне фря тоже нравится, хотя знаю я её сравнительно мало.
Я так понимаю вместе с корпусом тыс. за 10 такой мини-сервер обойдется?

Аватар пользователя olk olk 1 июня 2010 в 0:09

"vgoodvin" wrote:
Я так понимаю вместе с корпусом тыс. за 10 такой мини-сервер обойдется?

Ну я не включал в стоимость диск, в среднем приемлемый корпус от 800 до 1500 р (это с бп - соответственно можно вычесть преобразователь и внешний бп). Ну и диск, все зависит от объема ну и размера конечно,
если не гнаться за минимализмом, и сэкономить на памяти (гиг или два вполне приемлемое решение) (а можно и на материнке - есть такая же одноядерная 410 кажется, дешевле баксов на 20), то вполне можно в десяточку уложиться, а может и дешевле.
Да еще сама инсталляция ОС у меня происходила с внешнего USB-DVD (но есть решения и по инсталляции с флэшки например, или временного подключения SATA СD/DVD, а можно извратиться и инсталлировать по сети (честно скажу не разу не пробовал еще)).
К чему это я, к тому что на этой маме IDE-ATA нет, поэтому если вдруг возьметесь, подумайте как инсталлить систему.

Аватар пользователя mensh@drupal.org mensh@drupal.org 1 июня 2010 в 7:45

"olk" wrote:
Ну и в конце концов не хотелось бы превращать все это в холивар FreeBSD vs CRUX

Я лишь обратил внимание на путь снижения нагрузки на процессор и экономию памяти. Даже если поставите CRUX только для ознакомления, то Вас потом от него за уши не оттащишь, летает как пуля. Тем более, что ничего чужеродного не найдёте, он во фряшном стиле.

Аватар пользователя vgoodvin vgoodvin 1 июня 2010 в 9:26

"<a href="mailto:mensh@drupal.org">mensh@drupal.org</a>" wrote:
Я лишь обратил внимание на путь снижения нагрузки на процессор и экономию памяти.

Я не ошибусь если скажу что фря по умолчанию расчитана на минимальное потребление ресурсов и работает экономнее любого линукса?

Аватар пользователя olk olk 1 июня 2010 в 11:32

"penexe" wrote:
olk, скинь лог ab и devel`a

В конфигурации Nginx 0.8.16 + php_fpm + PHP 5.2.10 + MySQL 5.4.2 + Drupal 6.16

ab -n 1000 -c 50 ----.ru/node
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ----.ru (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:        nginx/0.8.16
Server Hostname:        ----.ru
Server Port:            80

Document Path:          /node
Document Length:        5489 bytes

Concurrency Level:      50
Time taken for tests:   20.998 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      5977000 bytes
HTML transferred:       5489000 bytes
Requests per second:    47.62 [#/sec] (mean)
Time per request:       1049.923 [ms] (mean)
Time per request:       20.998 [ms] (mean, across all concurrent requests)
Transfer rate:          277.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2   17 190.5      4    3022
Processing:   207 1008 120.8   1020    1350
Waiting:      101 1002 132.8   1018    1348
Total:        210 1026 229.3   1025    4151

Percentage of the requests served within a certain time (ms)
  50%   1025
  66%   1036
  75%   1043
  80%   1049
  90%   1068
  95%   1259
  98%   1300
  99%   1328
 100%   4151 (longest request)

В конфигурации Nginx 0.8.16 + Apache2.2 + mod_wsgi + Python 2.6 + PostgreSQL 8.4 + Django 1.2.1

ab -n 1000 -c 50 ----.ru/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ----.ru (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:        nginx/0.8.16
Server Hostname:        ----.ru
Server Port:            80

Document Path:          /
Document Length:        228 bytes

Concurrency Level:      50
Time taken for tests:   8.447 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      438000 bytes
HTML transferred:       228000 bytes
Requests per second:    118.38 [#/sec] (mean)
Time per request:       422.361 [ms] (mean)
Time per request:       8.447 [ms] (mean, across all concurrent requests)
Transfer rate:          50.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        3  106 365.0     39    3218
Processing:     2  176 605.6     28    4340
Waiting:        2  176 605.6     28    4340
Total:         19  282 750.2     62    4552

Percentage of the requests served within a certain time (ms)
  50%     62
  66%    127
  75%    178
  80%    239
  90%    267
  95%   1092
  98%   4008
  99%   4422
 100%   4552 (longest request)

devel поставлю попозже, логи покажу ...
Да эти данные без всякой оптимизации (единственное на php стоит eAccelerator) и практически на пустых данных
Еще дальше попробую разные связки и конфигурации ...

Аватар пользователя pselfin pselfin 1 июня 2010 в 14:31

Добре.
К слову сказать http://kuban.ubuntu.ru/ крутится на обычном ПК в виртуальной машине уже год, другие ресурсы уже парочку.
ОС Убунту с обвязкой апача, мускла и пхп, не оптимизировалась специально никак, разве что пхп лимит увеличен - все, так сказать, из коробки сервера 8.04.
Посещаемость не большая и поэтому вполне хватает. Ну и нет никаких ограничений сколько доменов парковать, сколько БД, место только хардом. Так что не удивлюсь, если инет станет стабильнее и дешевле(в Краснодаре актуален вопрос), то многим проектам можно будет отказаться от услуг хостеров...

Аватар пользователя vgoodvin vgoodvin 1 июня 2010 в 16:46

"<a href="mailto:P.Selfin@drupal.org">P.Selfin@drupal.org</a>" wrote:
многим проектам можно будет отказаться от услуг хостеров...

Каким еще многим? Разве что экспериментальным и не особо нужным.

Аватар пользователя pselfin pselfin 1 июня 2010 в 22:28

"vgoodvin" wrote:
Каким еще многим? Разве что экспериментальным и не особо нужным.

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