2gusia (2gusia) wrote,
2gusia
2gusia

Category:

Jail-шаблон с вебсервером и базой данных

Сегодня мы обустроим Лунапарк с блекдж FreeBSD Jail на nas4free, куда поставим вебсервер, базу данных и php. Пригодится для Torrentmonitor.
UPD от 06 дек 2014. Эта версия устарела и оставлена только потому, что в сети на неё есть ссылки. Новая рабочая здесь. /UPD
UPD от 15 марта 2014. Изменено для актуальных версий софта - nas4free rev 943, TheBrig 0.8, TorrentMonitor 0.9.4



1) Создаём джейл через TheBrig, как мы делали раньше. Даём джейлу имя torrentmonitor и IP 192.168.1.54/24

2) Запускаем джейл, смотри его номер (пусть будет 4), через putty заходим по ssh, идём в джейл
jexec 4 $SHELL

3) Ставим пакеты
pkg_add -r nano
pkg_add -r lighttpd
pkg_add -r php5-ctype
pkg_add -r php5-dom
pkg_add -r php5-fileinfo
pkg_add -r php5-filter
pkg_add -r php5-gd
pkg_add -r php5-hash
pkg_add -r php5-iconv
pkg_add -r php5-json
pkg_add -r php5-mbstring
pkg_add -r php5-pdo
pkg_add -r php5-pdo_sqlite
pkg_add -r php5-session
pkg_add -r php5-simplexml
pkg_add -r php5-sqlite3
pkg_add -r php5-xml
pkg_add -r php5-xmlrpc
pkg_add -r php5-gettext
pkg_add -r php5-mcrypt
pkg_add -r php5-zip
pkg_add -r php5-zlib


Прим. Иногда в конце подобного длинного списка система спотыкается и выскакивает что-то вроде
root@torrentmonitor:/ # pkg_add -r php5-mcrypt
Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/php5-mcrypt.tbz: Protocol error
pkg_add: unable to fetch 'ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/php5-mcrypt.tbz' by URL

Это повторяется для всех дальнейших пакетов. Помогает повторно дать команду на установку того, что не скачалось. Например

pkg_add -r php5-mcrypt
pkg_add -r php5-zip
pkg_add -r php5-zlib

rehash


4) теперь нам придётся пересобрать php5-curl
идея отсюда
К сожалению, где-то по пути в системе отвалилась поддержка куки по умолчанию. Хорошая новость в том, что исправить подобное на *nix совсем просто - если знать что править.

4.1) Ставим дерево портов (это долго, можно выпить чашечку кофе)
portsnap fetch extract
(Прим на будущее - если когда-то потом, не в момент установки, понадобится что-то ещё в этом джейле собирать - привести порты в актуальне состояние нужно командой
portsnap fetch update)

4.2) Собираем curl
Даём команду
cd /usr/ports/ftp/curl && make config
В выскочившем диалоге важен крестик на Cookies support (выделено). Заодно я также отключил DOCS и EXAMPLES, остальное оставил как было

curl_options

4.3) make install

все возникающие здесь и далее диалоги - жмём OK
Процесс долгий, по окончании
rehash

4.4) Теперь проверим, получилось ли -
curl -c '/tmp/cookies' 'http://ya.ru' > null && ls -l /tmp/cookies

если видим в конце строку
-rw-r--r-- 1 root wheel 196 Mar 15 16:04 /tmp/cookies
- поздравляю, получилось

Если строку
ls: /tmp/cookies: No such file or directory
- что-то не так и curl у вас без поддержки cookies

4.5) Если тест выше удачный - собираем php5-curl (все диалоги - жмём OK по умолчанию)

cd /usr/ports/ftp/php5-curl && make clean
make reinstall
rehash


(Да, кстати, вы теперь крутой юниксоид - имеете положительный опыт соборки софта из портов)

5) Редактируем конфиги
5.1) Открываем для редактирования /usr/local/etc/lighttpd/lighttpd.conf
Сделать это можно многими способами, например через nano
НЕ ИСПОЛЬЗУЙТЕ встроенный редактор nas4free  - он  портит конфиги

nano /usr/local/etc/lighttpd/lighttpd.conf

5.2) Редактируем lighttpd.conf (поиск по файлу - Ctrl W)
server.bind = "192.168.1.54"
server.use-ipv6 = "disable"
$SERVER["socket"] == "192.168.1.54:8080" спасибо vhl000 за поправку
$SERVER["socket"] == "192.168.1.54:8080" { }

Прим. Не забываем в начале строки server.bind убрать знак комментария #

5.3) Редактируем /usr/local/etc/lighttpd/modules.conf, удаляя # из строки
#include "conf.d/fastcgi.conf"

5.4) Добавляем в конец файла /usr/local/etc/lighttpd/conf.d/fastcgi.conf следующее
fastcgi.server = ( ".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "/usr/local/bin/php-cgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"min-procs" => 1,
"max-procs" => 1,
"idle-timeout" => 20
))
)

5.5) В список файла (где угодно внутри скобок mimetype.assign = ( ) ) /usr/local/etc/lighttpd/conf.d/mime.conf добавляем
".svg" => "image/svg+xml",
".xht" => "application/xhtml+xml",
".xhtml" => "application/xhtml+xml",
".woff" => "application/x-font-woff",
".svgz" => "image/svg+xml",

6) Проверяем синтаксис lighttpd.conf
lighttpd -t -f /usr/local/etc/lighttpd/lighttpd.conf
Если всё хорошо - он напишет Syntax OK

7) Создаём наш тестовый сайт
7.1) Создаём папку и файл
mkdir -p /usr/local/www/data
echo "XXX" > /usr/local/www/data/index.php


Прим. Вместо XXX внутри кавычек  надо написать то, что на картинке ниже. (Движок ЖЖ не даёт писать php код напрямую, а тегов для инкапсуляции нет :(. )
phpinfo

7.2) Задаём владельца
chown -R www:www /usr/local/www/

8) Проверяем
8.1) Запускаем lighttpd
/usr/local/sbin/lighttpd -f /usr/local/etc/lighttpd/lighttpd.conf

8.2) Идём в браузере по адресу нашего джейла 192.168.1.54
Если всё нормально - видим

50852_original
9) останавливем наш джейл кнопкой через TheBrig

Отправной точкой послужил этот пост

Tags: jail, nas, nas4free, руками, торрент
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 11 comments

Recent Posts from This Journal