Связка Apache PHP MySQL в Solaris 11.3

При первом знакомстве с Solaris единственным для меня недостатком был тот факт, что пакеты которые возможно установить являются довольно устарелыми, но к счастью актуальные версии можно собрать из исходного кода. В данной публикации пойдёт речь о сборке apache и php из исходного кода(mysql можно скачать в виде готового пакета с сайта mysql.com). На момент написания данной публикации актуальная версия apache была 2.4.29, а php 7.2.3.

Сборка

Первым делом необходимо установить пакет gcc-48:

pkg install gcc-48 

Также необходимо определить некоторые переменные для дальнейшей компиляции(сборка будет происходить 64-х битных версий):

export CPP="/usr/gcc/4.8/bin/gcc -E" export CC="/usr/gcc/4.8/bin/gcc" export CFLAGS="-m64 -std=gnu99 -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" export LDFLAGS="-m64 -L/usr/lib -R/usr/lib" export CXXFLAGS="-m64" 

После перезагрузки системы данные значения необходимо заново добавить(если ещё не закончили собирать необходимые пакеты).

Загрузим необходимые архивы с исходным кодом(все действия происходят в корне файловой системы):

wget http://php.net/distributions/php-7.2.3.tar.bz2 wget http://apache-mirror.rbc.ru/pub/apache//httpd/httpd-2.4.29.tar.bz2 wget http://mirror.linux-ia64.org/apache//apr/apr-1.6.3.tar.bz2 wget http://mirror.linux-ia64.org/apache//apr/apr-util-1.6.1.tar.bz2 wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.39-solaris11-x86_64.pkg.gz 

Распакуем:

tar -xvf apr-1.6.3.tar.bz2 tar -xvf apr-util-1.6.1.tar.bz2 tar -xvf httpd-2.4.29.tar.bz2 tar -xvf php-7.2.3.tar.bz2 gzip -d mysql-5.6.39-solaris11-x86_64.pkg.gz 

Переименуем каталоги и пакет mysql для большего удобства:

mv mysql-5.6.39-solaris11-x86_64.pkg mysql.pkg mv apr-1.6.3 apr mv apr-util-1.6.1 apr-util mv httpd-2.4.29 apache mv php-7.2.3 php 

Для корректной сборки apache также необходимо собрать два дополнительных пакета apr и apr-util, можно конечно использовать те которые имеются в составе Solaris, но в этом случаи необходимо внести значительные изменения в скрипт libtool. Первым делом соберём apr, перейдите в каталог /apr и выполните последовательно команды для конфигурации, сборки, и установки(сборку и установку необходимо производить gnu версией make). Установка будет произведена в каталог /opt, если Вам привычней производить установку в каталог /usr/local, то в этом случаи необходимо отредактировать параметр —prefix, а также указывать корректные пути при последующей сборке apache и php:

cd /apr ./configure --prefix=/opt/apr gmake gmake install 

Далее необходимо собрать apr-util, а также указать в какую папку установлен apr:

cd /apr-util ./configure  --prefix=/opt/apr-util --with-apr=/opt/apr gmake gmake install 

Последним штрихом в установке apr будет небольшое редактирование libtool, который находиться в каталоге /opt/apr/build-1, в данном скрипте необходимо отредактировать одну строку:

export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" 

Данную строку необходимо изменить, как указано ниже(удалить \$global_symbol_pipe):

export_symbols_cmds="\$NM \$libobjs \$convenience | \$SED 's/.* //' | sort | uniq > \$export_symbols" 

После данных манипуляций apache соберётся без проблем(главное указать каталог с apr и apr-util). Будет собрана «многопоточная» версия apache:

cd /apache ./configure --prefix=/opt/apache24 --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-mpm=worker gmake gmake install 

Осталось только собрать php:

cd /php ./configure   --prefix=/opt/php \               --with-config-file-path=/opt/php/lib \               --with-apxs2=/opt/apache24/bin/apxs  \ 	      --with-config-file-scan-dir=/opt/php \               --without-pgsql \               --with-zlib \               --with-zlib-dir=/usr/include \               --with-iconv-dir=/usr/include \               --with-pcre-dir=/usr/include \               --with-gettext=/usr/include \               --with-libxml-dir=/usr/include/libxml2/libxml \               --with-curl \               --with-openssl \               --with-openssl-dir=/usr/include \               --with-gd \               --with-freetype-dir=/usr/include \               --with-xpm-dir=/usr/include \               --with-jpeg-dir=/usr/include \               --with-png-dir=/usr/include \               --with-gnu-ld \ 	      --with-mhash \               --enable-shared \ 	      --with-mysqli=mysqlnd \               --enable-zip \               --enable-ftp \               --enable-mysqlnd \ 	      --enable-opcache \ 	      --disable-cli \ 	      --disable-ipv6 gmake  gmake install 

Если Вы производите сборку не в глобальной зоне, то Вам необходимо скопировать некоторые зависимости для корректного запуска модуля php, в примере ниже указаны файлы которые необходимо скопировать(путь до зоны укажите тот который используете Вы):

cp /usr/lib/amd64/libX11.so.4 /zones/zone1/root/usr/lib/amd64/libX11.so.4 cp /usr/lib/amd64/libXpm.so.4 /zones/zone1/root/usr/lib/amd64/libXpm.so.4 cp /usr/lib/amd64/libjpeg.so.62 /zones/zone1/root/usr/lib/amd64/libjpeg.so.62 cp /usr/lib/amd64/libXext.so.0 /zones/zone1/root/usr/lib/amd64/libXext.so.0 cp /usr/lib/amd64/libxcb.so.1 /zones/zone1/root/usr/lib/amd64/libxcb.so.1 cp /usr/lib/amd64/libXau.so.6 /zones/zone1/root/usr/lib/amd64/libXau.so.6 cp /usr/lib/amd64/libXevie.so.1 /zones/zone1/root/usr/lib/amd64/libXevie.so.1 cp /usr/lib/amd64/libXss.so.1 /zones/zone1/root/usr/lib/amd64/libXss.so.1 cp /usr/lib/amd64/libXdmcp.so.6 /zones/zone1/root/usr/lib/amd64/libXdmcp.so.6 

Если Вам необходимо что то добавить дополнительно, то в этом случаи можно посмотреть все параметры сборки с помощью команды:

./configure --help 

Последним штрихом будет установка mysql:

pkgadd -d /mysql.pkg 

Конфигурирование

Осталось только добавить mysql и apache в автозапуск, настроить apache на обработку php, а также настроить mysql на корректный запуск. Для того чтобы apache корректно обрабатывал php скрипты необходимо выполнить следующею команду, данная команда добавит строку AddHandler application/x-httpd-php .php в httpd.conf:

echo "AddHandler application/x-httpd-php .php" >> /opt/apache24/conf/httpd.conf 

А также изменить параметр:

DirectoryIndex index.html 

на

DirectoryIndex index.php 

или на

DirectoryIndex index.html index.php 

Следующим шагом активируем расширение для оптимизации «опкодов»(данное расширение может увеличить скорость генерации страниц в несколько раз), для этого необходимо создать файл:

touch /opt/php/ext-10-opcache.ini 

А также добавить в данный файл строку zend_extension=opcache.so:

echo "zend_extension=opcache.so" >> /opt/php/ext-10-opcache.ini 

Также, при необходимости, можно создать файл php.ini в каталоге /opt/php, так как php ищет файлы конфигурации именно в данном каталоге.

Для корректного запуска mysql необходимо создать каталог mysql в папке /etc, а также скопировать в данную папку файл my.cnf, а также добавить строку которая указывает имя пользователя от которого необходимо запускать mysql(root):

mkdir /etc/mysql cp /opt/mysql/mysql/my.cnf /etc/mysql/my.cnf echo "user = root" >> /etc/mysql/my.cnf 

После данных манипуляций необходимо запустить mysql командой:

/etc/init.d/mysql start 

После установки mysql в корне файловой системы создаётся файл(.mysql_secret) с паролем по умолчанию, данный пароль используем что-бы выполнить скрипт mysql_secure_installation, в котором можно сменить данный пароль, удалить тестовые базы, удалить тестового пользователя:

/opt/mysql/mysql/bin/mysql_secure_installation 

Если по каким-то причинам установщик не создал ссылку на клиент версию mysql в папке /usr/bin(запускать «mysql-client» можно будет из любого места(mysql -p -r)), то необходимо это сделать вручную:

ln -s /opt/mysql/mysql/bin/mysql /usr/bin/mysql 

Осталось только добавить mysql и apache в автозапуск(level 3), а также настроить автоматическое отключение служб на level 0. Для этого создайте ссылки в двух каталогах:

ln /etc/init.d/mysql /etc/rc0.d/Kmysql ln /opt/apache24/bin/apachectl /etc/rc0.d/Kapache 

Данные ссылки будут автоматически останавливать службы при отключении системы. Для автозапуска в многопользовательской среде(level 3) создайте следующие ссылки:

ln /etc/init.d/mysql /etc/rc3.d/Smysql ln /opt/apache24/bin/apachectl /etc/rc3.d/Sapache 

Для большего удобства можно создать символьную ссылку на apchectl в каталоге /usr/bin:

ln -s /opt/apache24/bin/apachectl /usr/bin/apachectl 

Запустите apache:

apachectl start 

Вывод

Как видно из данной публикации отсутствие актуальных версий ПО на ос Solaris не приговор, так как всегда можно собрать необходимый софт из исходного кода, а при необходимости внести некоторые изменения для получения максимальной эффективности ПО.

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

1 thought on “Связка Apache PHP MySQL в Solaris 11.3

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *