FreeBSD 13 Apache, MySQL, PHP7, Let’sEncrypt in CBSD ZFS jails (FAMP с SSL в клетках на ZFS). ч.2

Опубликовано В рубрике FreeBSD Отмечено , , , , , , , , , , Комментариев к записи FreeBSD 13 Apache, MySQL, PHP7, Let’sEncrypt in CBSD ZFS jails (FAMP с SSL в клетках на ZFS). ч.2 нет

Пока я пилил вторую часть заметки повыходило много чего хорошего и интересного, а именно: FreeBSD 13 перешла в стадию релиза, вышло обновление враппера CBSD, принёсшее функционал, который я три дня пытался запилить на python :-/
В частности, в новой CBSD завезли поддержку назначения ipv4 и ipv4 default gateway для vnet клеток при создании и старте, а также ряд других улучшений, но мне пока интересно лишь про назначение ip.
# uname -a
FreeBSD main.2net.local 13.0-RELEASE

# pkg info | grep cbsd
# cbsd-13.0.4 Yet another FreeBSD Jail, XEN and Bhyve Management Utility

На хостинге я планирую держать блог на WordPress, облако с файлами на ownCloud и TorrentMonitor, чтобы не пропустить выход нового фильма (РКН! От братьев Люмьер конечно же!).
Создадим клетку для индейца, профиль “по умолчанию” и обзовём её apache :

Для скриптов сайтов и их файлов у меня отдельный том на отдельном ссд, смонтируем его в клетку и пробросим сокет mysql внутрь.
Добавим в файл /usr/jails/jails-fstab/apache/fstab.local:
/mnt/data/www /usr/local/www nullfs rw 0 0
/usr/jails/jails-data/mysql-data/tmp/mysql /tmp/mysql nullfs rw 0 0


Теперь запустим клетку, залогинимся в неё:
# cbsd jstart apache
# cbsd jlogin apache

Внутри jail-a apache

Произнесём мантру БЗДэшника:
# cd /usr/ports/www/apache24/ && make install clean

В нынешних реалиях, разработчик порта, видимо, предлагает собирать все модули, а потом включать их в httpd.conf, это странно, спорить я конечно же не буду, места на винте полно, чего бы и не понаставить туда всякой фигни?
Далее нам понадобится php7 и mod_php, зачитываем мантры и ставим:
# cd /usr/ports/lang/php74 && make install clean
# cd /usr/ports/www/mod_php74 && make install clean


Тут важная штука, я собираю индейца с MPM_PREFORK non-threaded, pre-forking web server, в этом случае при сборке mod_php и php74 мы не используем ZTS.
# cd /usr/ports/lang/php74-extensions && make install clean

Модули, которые мне понадобятся:

│ │ [x] BCMATH bc style precision math functions │ │
│ │ [x] BZ2 bzip2 library support │ │
│ │ [x] CALENDAR calendar conversion support │ │
│ │ [x] CTYPE ctype functions │ │
│ │ [x] CURL CURL support │ │
│ │ [x] DOM DOM support │ │
│ │ [x] EXIF EXIF support │ │
│ │ [x] FILEINFO fileinfo support │ │
│ │ [x] FILTER input filter support │ │
│ │ [x] GD GD library support │ │
│ │ [x] ICONV iconv support │ │
│ │ [x] IMAP IMAP support │ │
│ │ [x] INTL Internationalization(ICU) │ │
│ │ [x] JSON JavaScript Object Serialization support │ │
│ │ [x] MBSTRING multibyte string support │ │
│ │ [x] MYSQLI MySQLi database support │ │
│ │ [x] OPCACHE OPcache support │ │
│ │ [x] PCNTL pcntl support (CLI only) │ │
│ │ [x] PDO PHP Data Objects Interface (PDO) │ │
│ │ [x] PDO_MYSQL PDO MySQL driver │ │
│ │ [x] PDO_SQLITE PDO sqlite driver │ │
│ │ [x] PHAR phar support │ │
│ │ [x] POSIX POSIX-like functions │ │
│ │ [x] SESSION session support │ │
│ │ [x] SIMPLEXML simplexml support │ │
│ │ [x] SQLITE3 sqlite3 support │ │
│ │ [x] TOKENIZER tokenizer support │ │
│ │ [x] XML XML support │ │
│ │ [x] XMLREADER XMLReader support │ │
│ │ [x] XMLRPC XMLRPC-EPI support │ │
│ │ [x] XMLWRITER XMLWriter support │ │
│ │ [x] ZIP ZIP support │ │
│ │ [x] ZLIB ZLIB support │ │

Также нужен mysqlclient:
# cd /usr/ports/databases/mysql56-client/ && make install clean

В предыдущей части, для удобства монтирования сокета mysql я изменил его местоположение, теперь это аукнется:
# rm /usr/local/my.cnf
# ee /usr/local/etc/my.cnf

И добавляем туда:
[client]
socket = /tmp/mysql/mysql.sock


Возьмём рекомендуемый конфиг:
# mv php.ini-production php.ini

В php.ini добавляем новое расположение:
pdo_mysql.default_socket=/tmp/mysql/mysql.sock

Выполним требование ownCloud и в /usr/local/etc/php/ext-30-pdo_mysql.ini добавим:
extension=pdo_mysql.so

Теперь при конфигурировании какого-либо веб сервиса надо будет указывать сокет вместо ipv4 адреса и порта, например:
host: localhost
port: /tmp/mysql/mysql.sock

или
localhost:/tmp/mysql/mysql.sock

В /etc/rc.conf добавим:
sshd_enable="NO"
sshd_flags="-oUseDNS=no"
syslogd_flags="-ss -c"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
hostname="apache.2net.local"
apache24_enable="YES"

И на этом от клетки с apache надо бы отстать и подготовить ssl сертификаты с помощью Let’sEncrypt, который для “безопасности” поместим в отдельную клетку.
А напишу я об этом в 3-й части, она будет вон там, по кнопке:


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