Статья является продолжением моей публикации, где рассматривалась возможность установки не нативных для pfsense пакетов на примере FAMP. Такая возможность не лишена недостатков:
1. после инсталляции неродных php-пакетов меняются нативные библиотеки и зависимости, что вызывает php варнинги (можно отключить) и наблюдаются глюки при попытке поставить родное приложение большого размера на этапе проверки контрольной суммы. Причем мелкие приложение pfsense устанавливались без проблем.
2. приходилось создавать недостающие стартовые BSD-скрипты, которые вызывали варнинги в шелле.
3. отсутствие интеграции с вебмордой pfsense.
В новой статье попытаюсь исправить вышеперечисленные недостатки приблизив в последующих публикациях проект к нативному приложению pfsense.
Первый недостаток связан с тем, что в системе все службы завязаны на php-fpm cli, но и этот же недостаток можно использовать для того чтобы исполнять php на вебсервере через fastcgi, тем самым избавив апач от php5_module и увеличив производительность сайта.
Еще о приятном моменте, в чистом виде нативного апача нет, но есть сборка ModSecurity на основе апача.
Как сказано в описание ModSecurity — это вебприложение файрвол, предназначенное для работы либо в качестве встроенного, либо обратного прокси … и используемого для редиректа на вебсервера, размещенные за pfsense.
При детальном рассмотрении становится ясно, что данный пакет можно с помощью определенных манипуляций превратить в полноценный апач.
Итого, имеем две составляющие FAMP, а именно Apache и PHP, которые являются нативными для pfsense.
С mysql сложнее — ни в одном нативном пакете его нет. Но, в расширенных php присутствует экстеншен mysql.so. Установим mysql и встроим возможность запуска и остановки службы в вебморду pfsense.
В вебадминке
Освобождаем 80 порт от вебморды на основе lighttpd и включаем sshd.
Устанавливаем самый первый пакет Apache with mod_security_dev
Mysql. В консоле
Создаем файл настроек /usr/local/etc/my.cnf
Установим базу пользователей
создаем стартовый скрипт /usr/local/etc/rc.d/mysql.sh
Биты исполнения и права
Добавим службу в /cf/config.xml после apache
Удаляем кеш конфига
Под вебкой заходим
Status — Services
И тестируем (start/stop) службу mysql
PHP. Добавим в скрипт /etc/rc.php_ini_setup
до; Extensions
после; Extensions
Ниже, в том же файле меняем настроки отвечающие за php-fpm
Настрока апача
В вебке создадим юзера для виртуал хоста.
System — User Manager — Groups — добавим группу www
Вкладка Users — добавим юзера bitrix в группе www
System — packages — установим FileManager
С помощью FileManager создадим каталог для вебконтента /home/bitrix/www
Service — Mod_Security — Virtual hosts — добавим новый:
Enable
Protocol = Http
Server Names = bitrix.ru
www.bitrix.ru
Custom Options:
Перегружаемся и смотрим тестовый файл /home/bitrix/www/test.php
На клиентской машине не забываем отредактировать /etc/hosts
На этом все, но большинство CMS требуют графический пакет php55-GD.
Который при установке потянет за собой зависимости, в том числе сам php55, что не есть хорошо.
Поэтому мы поставим только зависимости:
A сам пакет распакуем в корне системы
Перегружаемся и ставим нашу CMS.
В случае с битриксом, будет одна ошибка:
Обработка .htaccess — Выключена
Она возникает из-за php-fpm и вопросов безопасности. Это недосмотр самого битрикса. Игнорируем ошибку.
Мы получили рабочее решение. С интегрированными в pfsense службами. С удобным управлением с помощью веба.
1. после инсталляции неродных php-пакетов меняются нативные библиотеки и зависимости, что вызывает php варнинги (можно отключить) и наблюдаются глюки при попытке поставить родное приложение большого размера на этапе проверки контрольной суммы. Причем мелкие приложение pfsense устанавливались без проблем.
2. приходилось создавать недостающие стартовые BSD-скрипты, которые вызывали варнинги в шелле.
3. отсутствие интеграции с вебмордой pfsense.
В новой статье попытаюсь исправить вышеперечисленные недостатки приблизив в последующих публикациях проект к нативному приложению pfsense.
Первый недостаток связан с тем, что в системе все службы завязаны на php-fpm cli, но и этот же недостаток можно использовать для того чтобы исполнять php на вебсервере через fastcgi, тем самым избавив апач от php5_module и увеличив производительность сайта.
Еще о приятном моменте, в чистом виде нативного апача нет, но есть сборка ModSecurity на основе апача.
Как сказано в описание ModSecurity — это вебприложение файрвол, предназначенное для работы либо в качестве встроенного, либо обратного прокси … и используемого для редиректа на вебсервера, размещенные за pfsense.
При детальном рассмотрении становится ясно, что данный пакет можно с помощью определенных манипуляций превратить в полноценный апач.
Итого, имеем две составляющие FAMP, а именно Apache и PHP, которые являются нативными для pfsense.
С mysql сложнее — ни в одном нативном пакете его нет. Но, в расширенных php присутствует экстеншен mysql.so. Установим mysql и встроим возможность запуска и остановки службы в вебморду pfsense.
В вебадминке
Освобождаем 80 порт от вебморды на основе lighttpd и включаем sshd.
Устанавливаем самый первый пакет Apache with mod_security_dev
Mysql. В консоле
pkg update pkg install mysql56-server
Создаем файл настроек /usr/local/etc/my.cnf
[client] port = 3306 socket = /var/tmp/mysql.sock default-character-set = utf8 [mysqld] port = 3306 socket = /var/tmp/mysql.sock init-connect='SET NAMES utf8' collation_server = utf8_unicode_ci character_set_server = utf8 character_set_client = utf8 character_set_filesystem = utf8
Установим базу пользователей
/usr/local/bin/mysql_install_db --basedir=/usr/local --defaults-extra-file=/usr/local/etc/my.cnf --datadir=/var/db/mysql —force
создаем стартовый скрипт /usr/local/etc/rc.d/mysql.sh
#!/bin/sh rc_start() { if [ ! -f /var/run/mysql/mysql.pid ] then mkdir /var/run/mysql chown -R mysql:mysql /var/run/mysql /usr/local/libexec/mysqld --defaults-extra-file=/usr/local/etc/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/var/run/mysql/mysql.pid fi } rc_stop() { if [ -f /var/run/mysql/mysql.pid ]; then PID=`cat /var/run/mysql/mysql.pid` kill $PID else killall mysqld 2>/dev/null fi } case $1 in start) rc_start ;; stop) rc_stop ;; restart) rc_stop rc_start ;; esac
Биты исполнения и права
chmod 755 /usr/local/etc/rc.d/mysql.sh chown -R mysql:mysql /var/db/mysql
Добавим службу в /cf/config.xml после apache
<service> <name>mysql</name> <rcfile>mysql.sh</rcfile> <executable>mysqld</executable> <description><![CDATA[Mysql server]]></description> </service>
Удаляем кеш конфига
rm /tmp/config.cache
Под вебкой заходим
Status — Services
И тестируем (start/stop) службу mysql
PHP. Добавим в скрипт /etc/rc.php_ini_setup
до; Extensions
mbstring.internal_encoding = UTF-8 mbstring.func_overload = 2
после; Extensions
extension = mysql.so extension = gd.so
Ниже, в том же файле меняем настроки отвечающие за php-fpm
listen = /var/run/php-fpm.socket listen.owner = www listen.group = www listen.mode = 0660
Настрока апача
В вебке создадим юзера для виртуал хоста.
System — User Manager — Groups — добавим группу www
Вкладка Users — добавим юзера bitrix в группе www
System — packages — установим FileManager
С помощью FileManager создадим каталог для вебконтента /home/bitrix/www
Service — Mod_Security — Virtual hosts — добавим новый:
Enable
Protocol = Http
Server Names = bitrix.ru
www.bitrix.ru
Custom Options:
<Directory "/home/bitrix/www"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all Require all granted </Directory> DirectoryIndex index.php index.html LoadModule proxy_module libexec/apache24/mod_proxy.so LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php-fpm.socket|fcgi://127.0.0.1/home/bitrix/www
Перегружаемся и смотрим тестовый файл /home/bitrix/www/test.php
<?php phpinfo(); ?>
На клиентской машине не забываем отредактировать /etc/hosts
192.168.100.1 bitrix.ru
На этом все, но большинство CMS требуют графический пакет php55-GD.
Который при установке потянет за собой зависимости, в том числе сам php55, что не есть хорошо.
Поэтому мы поставим только зависимости:
pkg install freetype2 jpeg libxml2 pcre png t1lib libXaw xproto printproto libXpm libXext xextproto libXau libX11 libxcb libXdmcp libpthread-stubs kbproto libXt libSM libICE libXp libXmu
A сам пакет распакуем в корне системы
cd / fetch http://pkg.freebsd.org/freebsd:9:x86:64/latest/All/php55-gd-5.5.22.txz tar xpf php55-gd-5.5.22.txz rm php55-gd-5.5.22.txz
Перегружаемся и ставим нашу CMS.
fetch http://www.1c-bitrix.ru/download/business_encode_php5.tar.gz tar xpf business_encode_php5.tar.gz
В случае с битриксом, будет одна ошибка:
Обработка .htaccess — Выключена
Она возникает из-за php-fpm и вопросов безопасности. Это недосмотр самого битрикса. Игнорируем ошибку.
Мы получили рабочее решение. С интегрированными в pfsense службами. С удобным управлением с помощью веба.
