?

Log in

No account? Create an account

Previous Entry | Next Entry

Сегодня мы обустроим Лунапарк с блекдж 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

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

Comments

( 11 comments — Leave a comment )
Василий Агарков
Sep. 10th, 2013 08:27 am (UTC)
Vasily
Добрый день.
Подскажите, а как дальше конфигурировать MySQL?
Моя проблема: при попытке установки phpMyAdmin получаю надпись "Расширение mysqli не найдено. Пожалуйста, проверьте ваши настройки PHP"
Может быть не надо использовать phpMyAdmin?
2gusia
Sep. 10th, 2013 11:18 am (UTC)
Re: Vasily
Пример конфигурирования mysql есть в посте про torreentmonitor
Роман Калугин
Sep. 22nd, 2013 04:35 am (UTC)
Нашел способ установки MySQL на встроенную систему без джали. http://rediantosatya.wordpress.com/2012/03/07/how-to-install-mysql-on-embedded-freenas/

Если автор блога переведет и сделает удобный мануальчик - Я ПРОСТО БУДУ СЧАСТЛИВ! :)
2gusia
Jan. 9th, 2014 08:17 pm (UTC)
Прошу прощения - движок ЖЖ пометил коммент как подозрительный и я только что его случайно увидел.

Я посмотрел на рецепт - на вид всё должно работать. Но мне вариант с джейлом гораздо больше нравится. IMHO подключить симлинками папку с диска можно, но конструкция получится не просто переносимая на новую флешку, если старая сдохнет. Тогда уж лучше ставить full вариант - будет проще и понятнее. Ну или вообще полную FreeBSD
vhl000
Nov. 3rd, 2013 05:47 pm (UTC)
Пункт 5) не совсем правильно, нужно вот так (с фигурными скобками в конце):
$SERVER["socket"] == "192.168.1.51:8080" {}
2gusia
Nov. 3rd, 2013 10:36 pm (UTC)
Спасибо, вернусь проверю. Что то в этом месте действительно было шерохоаато
ext_2105885
Mar. 15th, 2014 07:51 pm (UTC)
Дерево портов удобнее ставить/обновлять прямо в The Brig (Extensions|TheBrig|Updates|Central Ports), подключая ports в Jail из web-интерфейса, причем одна копия ports используется для всех Jail, что экономит место и избавляет от лишних телодвижений при работе.

Edited at 2014-03-15 08:00 pm (UTC)
2gusia
Mar. 16th, 2014 10:23 am (UTC)
Да, я видел эту функцию, спасибо. Но всегда с опаской отношусь к новой функциональности. Тем более, что есть 100% рабочий вариант, пары гигабайт на массиве не жалко, а связь с разработчиком TheBrig неустойчивая.
shtapoff
Nov. 20th, 2014 01:25 pm (UTC)
удалось поставить дерево портов, теперь проблема с curl:

root@torrentmonitor:~ # cd /usr/ports/ftp/curl && make config
===> Building/installing dialog4ports as it is required for the config dialog
===> Cleaning for dialog4ports-0.1.5_2
===> Skipping 'config' as NO_DIALOG is defined
===> License BSD2CLAUSE accepted by the user
===> dialog4ports-0.1.5_2 depends on file: /usr/local/sbin/pkg - not found
===> Verifying install for /usr/local/sbin/pkg in /usr/ports/ports-mgmt/pkg
===> Skipping 'config' as NO_DIALOG is defined
You are about to convert your system to pkg while you have ports/packages
installed with the old pkg_install tools.

To switch to pkg:
1) Install ports-mgmt/pkg
cd ports-mgmt/pkg && make UPGRADEPKG=1 install clean
2) Convert your package database by running pkg2ng

*** [pre-everything] Error code 1

Stop in /usr/ports/ports-mgmt/pkg.
*** [install] Error code 1

Stop in /usr/ports/ports-mgmt/pkg.
*** [pkg-depends] Error code 1

Stop in /usr/ports/ports-mgmt/dialog4ports.
*** [install] Error code 1

Stop in /usr/ports/ports-mgmt/dialog4ports.
===> Options unchanged
root@torrentmonitor:/usr/ports/ftp/curl #
2gusia
Nov. 20th, 2014 02:49 pm (UTC)
о-хо-хо...

во FreeBSD произошла замена менеджера пакетов на pkg ng. Обе они вроде как сосуществовать не могут в одной системе. Но в хосте и в джейле(или в chroot) могут быть разными.

Чтобы жизнь была ярче - весь nas4free сделан вокруг старого варианта, pkg_add. Похоже, многие посты придётся мне апдейтить.

Я советовал бы при наличии возможности пока пользоваться старым вариантом.

pkg ng мне только раз пришлось юзать - когда перекомпилировал bash

http://2gusia.livejournal.com/200016.html
очень полезный коммент от blog4avatar как такое делать в джейле, от 29 сент
В принципе любой софт одинаково устанавливается и собирается, так что bash - как пример пойдёт.
shtapoff
Nov. 20th, 2014 04:45 pm (UTC)
будем с нетерпением ждать ваших апдейтов! Потому как я как обезьянка с клавиатурой, понимания не ноль, конечно, а мало-мало! :)
с комментариями ознакомился. завтра буду трясти своего админа, он в этом фишку немного рубит, может что скажет дельного

Edited at 2014-11-20 04:46 pm (UTC)
( 11 comments — Leave a comment )

Latest Month

July 2018
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    

Tags

Powered by LiveJournal.com