Ставим сборку LAMP: Apache 2.2 / PHP 5.6 / mySQL 5.1

Категория: / DEV Блог / Сервер (FreeBSD)
2. Обновление LAMP apache22/php5.4/mysql.5.1 до актуальных версий

Для моего случая переопределяю дефолтные версии в make.conf (значения можно посмотреть в /usr/ports/Mk/bsd.default-versions.mk)
DEFAULT_VERSIONS=php=5.6 mysql=5.1 apache=2.2

pkg install mysql51
pkg install apache22
pkg install php56 php56-php56-extensions php56-mysql php56-pdo_mysql php56-openssl php56-mcrypt php56-curl
pkg install php56-zlib php56-gd pecl-memcache pecl-APCu
 
pkg install mod_php56


Несмотря на переопределение в make.conf хочет установить apache24, но мне нужен 2.2

cd /usr/ports/www/mod_php56
 
make config && make && make install


# система зачем-то подтянула вайн, но он нам не нужен
pkg remove i386-wine-devel

Смотрим все ли хорошо

mysql --version
..Distrib 5.1.73
 
httpd -t
..Syntax OK
 
httpd -M
..php5_module
 
php -v
..PHP 5.6.7 (cli) (built: Apr  9 2015 16:15:38
 
# модули php
php -m


В завершении рестартим apache и mysql

service apache22 restart
service mysql-server restart




Обновление PHP 5.3.10 -> 5.4.7 через порты

LAMP - акроним Linux/Apache/Mysql/PHP.

Если у вас windows и вам нужен тестовый сервер, воспользуйтесь готовыми решениями.
Например - денвер (www.denwer.ru)или xampp (www.apachefriends.org/en/xampp.html).

Рассмотрим установку на ОС FreeBSD 5 и выше.

Приступим!

Устанавливать софт в системе FreeBSD проще и удобнее из коллекции портов (portage).
Это нативный менеджер пакетов, который поможет вам в дальнейшем и возьмет на себя
разбор с зависимостями между библиотеками при обновлении системы.

"Продакш" или user-free серверу обычно не нужны X11, чтобы не цеплять лишних тяжелых зависимостей,
добавляем в /etc/make.conf строку WITHOUT_X11=yes.

Обновляем порты

portsnap fetch update


Если у вас уже установлен PHP, его необходимо удалить, чтобы изберажть конфликта версий.
выполнив make deinstall либо pkg_delete php5-*

Далее переходим к коллекции портов

cd /usr/ports/www/apache22
make install clean
cd /usr/ports/databases/mysql40-server
make install clean
cd /usr/ports/lang/php5
make install clean
cd /usr/ports/lang/php5-extensions
make install clean


Ставим нужные галки в конфигураторе пакетов и жмем "далее".
Компиляция (сборка) может занять продолжительное количество времени.

Для быстрой установки расширений php, можно установить готовые пакеты вместо их сборки:

pkg_add -r php5-extensions
pkg_add -r php5-mysqli
pkg_add -r php5-session
pkg_add -r php5-gd


Сессии, библиотека работы с изображениями GD и поддержка mysql не добавляются по умолчанию?

Добавляем поддержку apc

pkg_add -r pecl-APC
portupgrade -P  pecl-APC
pkg_info | grep APC


curl:

pkg_add -r php5-curl
php -r "var_dump(function_exists('curl_init'));"
# bool(true)


Добавляем автозапуск сервисов:

echo mysql_enable="YES" >> /etc/rc.conf
echo apache22_enable="YES" >> /etc/rc.conf


В настройках апача назначаем файлам *.php установленный интерпритатор php

#/usr/local/etc/apache22/httpd.conf
 
LoadModule php5_module        libexec/apache22/libphp5.so
...
<IfModule dir_module>
    DirectoryIndex index.html index.php index.htm
</IfModule>
...
 
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps



Обновление сервера

Самой непонятной задачей для неопытного админа является - обновление установленного сервера.
Не нужно паниковать, за вас все уже сделали! Ставим portupgrade из тех же портов, и обнаружив, что
используете не самую сежую версию apache/php/mysql/... набираете команду

# обновляем php со всеми связями
portupgrade -Rr php*
 
# Для того, чтобы не компилировать лишнего - можно пользовать пакеджи
portupgrade -P "php*"


Проверка актуальности портов

portversion -v -l "<"


Дополнительно

Ротация логов httpd по маске *.log

#/etc/newsyslog.conf
/var/log/httpd/*.log    600  7     *    $D3     JG      /var/run/httpd.pid


Apache на два сетевых интерфейса (через alias)

rc.conf
ifconfig_em0="inet 187.42.72.161  netmask 255.255.255.0"
ifconfig_em0_alias0="inet 183.22.3.50 netmask 255.255.255.0"


В httpd.conf

NameVirtualHost 187.42.72.161:80
NameVirtualHost 183.22.3.50:80


Устанавливаем safe_mode и open_basedir для виртуальных хостов

<location />
  php_admin_flag safe_mode on
  php_admin_value open_basedir "/www/path.ru/:/tmp"
 
  php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@domain.ru"
  php_admin_value upload_tmp_dir "/home/user/mod-tmp"
  php_admin_value session.save_path "/home/user/mod-tmp"
 
  php_value safe_mode_gid 1
  php_value safe_mode_include_dir 1
  php_value magic_quotes_gpc 0
  php_value magic_quotes_runtime 0
  php_value magic_quotes_sybase 0
  php_value file_uploads 1
  php_value display_errors 1
  php_value short_open_tag 1
  php_value register_globals 0
  php_value register_long_arrays 0
</location>