Воскресенье — AviHost, установка FreeBSD, nginx

Иметь свой сайт — это полезно, приятно и порой прибыльно. Полезно потому, что заставляет организовываться, приятно от того, что видишь реакцию посетителей на свои труды, прибыльно…ну, не всегда :) Но помимо домена надо еще иметь площадку, где все будет размещаться.

Таковой в самом начале мой интернет деятельности была компания hosting.ua. Именно та, у которой сгорели сервера, слава богу, тогда я уже переехал от них. Они предоставляли по началу хороший стартовый вариант. Но скоро мне стало их мало, а  те тарифы, что лучше и надежнее — значительно дороже, чем у конкурентов. Тогда-то со мной связался представитель AviHost уже не помню, по какому вопросу (кажется по тому баннеру, что в сайдбаре).

После того, как мне мой хостер AviHost предоставил vds хостинг, я всерьез задумался о будущем переезде. На тот момент я не имел понятия про то, как необходимо настраивать сервер, но решил попробовать. Установил Debian, а потом Apache2, php, mysql, nginx, eaccelerator и еще что-то. Подробности вот в этой записи. Но я побоялся переносить рабочие сайты. Не знаю почему, так уж вышло.

Возможно и правильно поступил :) Потому как вскоре у меня появился другой vds хостинг, так же от AviHost, называется FreeBSD. Вот на нем я и остановился :) Я его сначала установил, потом вроде как настроил, потом забыл про него, потом снова вспомнил и начал подгонять nginx, а теперь перенес все домены, остался только вот этот, cosydale.com — самый объемный.

Итак, очень коротко про то, что вам надо сделать, если вы захотите разместить свою сеть или посещаемый сайт на FreeBSD хостинге от AviHost.

Для начала вам надо зарегистрироваться как клиенту на сайте. Сделать вы можете по этой ссылке. После регистрации вы попадете в контрольную панель. Там следует выбрать FreeBSD VDS (Россия):

Выбор FreeBSD

Выбор FreeBSD

В поле промо код можете ввести один из тех, который я публиковал в конце записей: 1 или 2. Теоретически они могут быть уже использованы (я не слежу за этим), и если уже не работают, то тогда пишите в комментариях, я напишу еще. Что дадут вам промо-коды? Ощутимую скидку в 10% в течение первых трех месяцев использования FreeBSD! У меня не так уж много кодов осталось.

Вы получите систему, на которой уже будет стоять фряха. Пустая. Так что надо бы поднять на ней сервер… На Debian я ставил apache2, а потом сверху — nginx. На FreeBSD я решил сразу же обойтись без «индейца» и крутить все на продукте Сысоева. Пока что все удачно, хотя и не без проблем на этапе настройки. Итак, начнем (все команды можно скопировать отсюда в буфер обмена и вставить в консоль правой кнопкой мыши).

1. Получили freebsd

2. Далее качаете putty или любую другу программу с этой страницы, если у вас Windows, а если Linux — у вас уже есть консоль и скорее всего все, написанное ниже, вы уже знаете.

3. Открыли скачанную программу и прописали порт 22 и IP вашего vds.

4. Авторизация (вводите логин и пароль, которые пришлют вам на мыло после заказа) и открытие окна mc (это MidnightCommander — лучшая консольная программа для просмотра и редактирования файлов по ssh). Открываем прописыванием команды mc и дальнейшим вводом пароля. Если выдаст, что такой команды не знает, то вам надо установить mc — читаем тут.

5. Обновляем порты (нужно для дальнейшей работы) командой: portsnap fetch update

6. Далее устанавливаем nginx, прописывая команду: cd /usr/ports/www/nginx/ && make install clean

7. Процесс на шаге 6 займет достаточно много времени, так как мы собираем nginx. В это время появится как минимум 1 окно (у меня было 4, так как я еще ставил perl, если кто-то из вас подумал, что это такое и зачем он нужен, то не ставьте, а также для libconv и gd, libxslt, python, m4 (включил 1 опцию, их всего 1), png (включил поддержку анимации).

8. В окне выбора опций nginx выберите то, что вам нужно (выбор делается нажатием пробела на клаве, переход — стрелками вверх/вниз, когда все выбрали, нажимаете клавишу TAB для перемещения выделяющего элемента, а потом нажмите Enter).

9. У вас наконец установится nginx c библиотеками. У меня ушло на это полчаса. Выпили кофе.

10. Создаем пользователя (чтобы потом работать не под рутом — это опасно по неопытности): adduser login и дальше следуете подсказкам (слово login замените на имя пользователя, которое будет использоваться при его авторизации).

10.1. Пароль для пользователя поставьте любой (желательно сложный). В квадратных скобках показаны дефолтные значения (то есть можно их пропускать).

10.2. После ввода данных спросит: OK? Введите yes

10.3. На вопрос Add another user ответьте no

11. Далее настраиваем nginx: настройки брал отсюда. В конце поста — пример моего конфига. Чтобы с удобством вносить изменения в файл, используем в контрольной панели хостинга FreeBSD vds в блоке Главное->Собственные файлы (знаю, что не кошерно для линуксоидов, но попервах лучше уж так, чем никак). На нужном нам файле просто 2 раз кликаем — и можно его редактировать более удобным способом, чем через vi (это стандартый редактор текстовых файлов) или команду mcedit.

12. Добавляем строку nginx_enable="YES" в файл ‘/etc/rc.conf’.

13. Есть 2 последние ветки php — 5.2.x и 5.3.x, которые разрабатываются параллельно. Выберите ту, которую хотите использовать: если 5.3 (менее стабильна, но с последними фишками), то используйте команду:
cd /usr/ports/lang/php5 && make install clean
Если не хотите рисковать, то используйте 5.2:
cd /usr/ports/lang/php52 && make install clean

14. В окне выбираем CLI, CGI, DEBUG, SUHOSIN, MULTIBYTE, IPV6, MAILHEAD. Нажимаем TAB и ENTER. У вас установится php5.3.4 (или php5.2.16)!

15. Вот хороший пост о том, как связать nginx и php между собой с помощью fpm: читать обязательно. Используйте установку из портов — сэкономите кучу времени и нервов.

16. Расширяем php дополнительными модулями:
cd /usr/ports/lang/php5-extensions && make install clean

16.1. Откроется окно с большим количеством модулей. После выбора — TAB и Enter (дефолтных вполне хватает на первое время. Руководствуйтесь принципов — если вы знаете, что читаете и понимаете, где можно применять — устанавливайте).

16.2. Опции для CURL, ca_root_nss, php5-gd, cclient, php5-mbstring, php5-mysql, php5-mysqli, sqlite3, tcl я оставил дефолтные. В php5-sqlite отметил поддержку UTF-8

17. Ставите MySQL из портов:

  • cd /usr/ports/databases/mysql51-server/ && make install clean
  • cd /usr/ports/databases/mysql51-client/ && make install clean

18. Про настройку ftp хорошо описано вот в этом мануале.

Основная часть теперь у нас стоит. Проверьте, что у вас в /etc/rc.conf прописано как минимум вот это (example.com — это ваш основной домен на FreeBSD):

sshd_enable="YES"
hostname="example.com"
nginx_enable="YES"
spawn_fcgi_enable="YES"
mysql_enable="YES"
sendmail_enable="YES"
ftpd_enable="YES"
ftpd_flags="-D -l"

Несколько советов на просто так:

Про тюнинг php и MySQL вы можно прочитать на страницах моего сайта: здесь про php, а здесь про мускул. Также будет полезной первая часть вот этого поста по настройке FreeBSD — до Апача.

Теперь очередь лезть в конфиги nginx, так как сейчас ни один сайт пока не будет работать.

Заходим в /usr/local/etc/nginx и открываем файл nginx.conf. Если его нет, то переименовываете nginx-dist.conf. Описывать, какие параметры что означают, я думаю, не стоит (пост и так слишком длинный получился), я приведу пример работающего конфига для 2 доменов. На первом (domain1.com) стоит  только WP, на втором (domain2.com) — стоит WP+BP, а также активированы блоги и выбран режим поддоменов (то есть вида blog1.domain2.com, blog2.domain2.com). Скачать пример конфига nginx.

И напоследок еще парочка советов:

1. Для начала создайте папки с названиями ваших доменов внутри /usr/local/www

2. Далее внутри папки каждого домена создайте дополнительно 3 папки: _logs (для логов доступа и ошибок домена), _errors (тут можно размещать свои собственные страницы ошибок сервера), www (тут, собственно, будут файлы сайта). Создавать вам надо от имени ftp пользователя, которого вы создали на шаге 18! Необходимо, чтобы пользователь имел к ним полный доступ. Рутом можно прописать также следующее (запомните эту команду, еще часто вам придется ее использовать):
chown -R login:group /usr/local/www/
login — имя пользователя, который имеет сюда доступ и может обращаться к сайте по ftp, а group — его группа (обычно такое же название носит — так удобнее).

3. На папки uploads и upgrade внутри WP поставьте права 777:
chmod -R 0777 /usr/local/www/domain1.com/www/wp-content/uploads

4. После этого, а также переноса по ftp всех файлов, можете прописывать IP вашего vds в настройках доменов на старом месте хостинга — и через полчаса сайты будут запускаться с нового места.

5. Можно скопировать все файлы не по ftp по-файлово, а одним архивом. Сделайте бекап файлов сайта на старом хостинге, залейте в папку сайта domain1.com/www на новом месте, пропишите в консоли или в putty:
cd /usr/local/www/domain1.com/www
a потом:
unzip /usr/local/www/domain1.com/www/archive.zip
Файлы разархивируются в текущую папку.

6. Не забудьте создать базы и импортировать все данные (как сделать — описано выше).


PS Длинный пост получился… Писал все по памяти, так что вполне возможно, что что-то упустил, забыл или опечатался. Буду рад исправлениям. Надеюсь, данная запись поможет вам начать освоение FreeBSD, приобретенного (если вы захотите) у компании AviHost.

PPS Это не рекламный и не заказной пост, мне действительно нравятся услуги AviHost, их гибкая политика, интересные скидки, хороший саппорт. И еще я давно обещал написать про FreeBSD, вот собрался, наконец.

комментариев 12

  1. inkvizitor68sl:

    Привет) рад видеть, что пишешь мануалы)

    Стоит добавить, что в /usr/ports/lang/php52 валяется порт php 5.2

    Ещё php-apc стоит прикручивать (тем более, что настраивать его не нужно, если не преследуется цель жесткого кеширования)

    • Привет :)
      Я сам для себя еще кеширование не поставил — потому и не написал :) Буду постепенно дополнять этот пост новыми деталями.

      • Jettochkin:

        достаточно поставить W3 Total Cache — но только кеширование страниц (с БД — там глюков море: те же комменты глючат)

    • Jettochkin:

      на фрюхе php работает лучше без APC..

  2. Jettochkin:

    По существу: php 5.3.x отлично работает именно на FreeBSD, на остальных системах лучше остаться на 5.2 ;)

    Кстати — самая стабильная связка на данный момент (5 серверов из 9) — spawn-fcgi + nginx! Связка php-fpm + nginx задолбала.. и обидно, что для CentOS (Redhat) — только она катит :(

  3. Мои 5 копеек:

    1. Я бы запускал ssh и ftp не демонами, а через inetd

    2. Если у сисадмина ip постояный, то стоит настроить /etc/hosts.allow

    3. Если сайтов на сервере несколько, то удобней для каждого делать отдельный конфиг отдельным файлом в субдиректории (скажем, /usr/local/etc/nginx/vhosts/) и её инклюдить в nginx.conf.

    4. На фре хорошо работает eaccelerator

    5. «По утрам надев трусы, не забудьте про часы» (Андрей Вознесенксий), т.е. не забываем про таймзону и синхоронизацию системных часов.

    • Спасибо за советы, Юрий.
      По поводу третьего пункта — лично у меня так и сделано. Есть главный конф, а все остальные (по сайтам с их поддоменами) — отдельно, и инклюд. Удобно редактировать и отключать.

      eAccelerator — как-то не срослось у меня с ним. Решил использовать xCache. Не жалуюсь :)

      Про часы — я не особо парился по этому поводу, не критично… Хотя в целом, конечно же, лучше сразу все настроить.

    • Александр:

      3) совершенно нелогичное решение: если нужно провести оптимизацию — то лучше копи-паст по всем сайтам — как это сделать через ssh при варианте кучи конфигов?..
      4) eaccelerator — только если php 5.2.x, а в прадакшен уже давно 5.3.x … так что — xCache ;)

  4. Александр:

    офф-топ
    slaFFik, после подвала подгружается контент следующей записи…

  1. 24.07.2011

    […] уже писал пост о том, как поднять свой сервер на их хостинге с нуля. Данные все еще актуальные, но я […]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *