Пока я пилил вторую часть заметки повыходило много чего хорошего и интересного, а именно: 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-й части, она будет вон там, по кнопке: