Статья является продолжением моей публикации, где рассматривалась возможность установки не нативных для 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 службами. С удобным управлением с помощью веба.
EnterSandman
Уберите под кат