Перейти к собственно контенту

Архив

Метка: PHP

При включений режима PHP как CGI вместо страничек отображался код скриптов.

Исправляем так: ( на примере CentOS 6 )
создаем файл /etc/httpd/conf.d/php-cgi.conf со следующим содержимым:
ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php /php-bin/php

Перезапускаем apache
[root@hz2 httpd]# /etc/init.d/httpd restart
И наслаждаемся рабочим PHP-CGI.

В дополнение к этой статье решил написать данный мануал. Заказчику потребовалось с выходом PHP 7 поставить эту версию как вторую. Сервер с CentOS 6 , ISPmanager 4 и PHP 5.4.45.

Качаем последнюю версию PHP 7.0.2, распаковываем
[root@hz2 ~]# wget http://php.net/get/php-7.0.2.tar.gz/from/this/mirror
[root@hz2 ~]# tar xzvf php-7.0.2.tar.gz
[root@hz2 ~]# cd ./php-7.0.2

Конфигурируем PHP:
[root@hz2 ~]# mkdir -p /opt/php70

[root@hz2 ~]# ./configure --prefix=/opt/php70 --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-libdir=lib64 --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --enable-cgi

Если появляются ошибки о нехватке необходимого ПО или сорцов ставим все это дело:
[root@hz2 ~]# yum install libxml2-devel bzip2-devel curl-devel libjpeg-devel libpng-devel libX11-devel gd-devel libc-client-devel libmcrypt-devel mysql-devel

Собираем и ставим
[root@hz2 ~]# make && make install

Нам нужно сделать, что бы при использовании php как модуля апача использовалась версия 5.4.45, а при втором варианте 7.0. Будет удобно если можно будет прям определять какая версия нужна для какого сайта и пользователя. Для этого нам нужно просто заменить файл php-cgi, что мы и сделаем, но для начала сбекапим старый.

[root@hz2 ~]# mv /usr/bin/php-cgi php-cgi.back
[root@hz2 ~]# ln -s /opt/php70/bin/php-cgi /usr/bin/php-cgi

На этом все!. Заходим в панель ISPmanager и выбираем «PHP как CGI», для того, что бы у вас использовалась версия php 7.0

Имеется сервер с Debian Wheezy, панелью управления сервером ISPmanager 4 и PHP 5.4, но заказчику понадобилось добавить туда поддержку PHP 5.3.
Устанавливаем все что необходимо для сборки PHP:
apt-get install -y build-essential git libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libxml2-dev libssl-dev libbz2-dev libcurl3-dev libdb5.1-dev libjpeg-dev libpng-dev libXpm-dev libfreetype6-dev libt1-dev libgmp3-dev libc-client-dev libldap2-dev libmcrypt-dev libmhash-dev freetds-dev libz-dev libmysqlclient-dev ncurses-dev libpcre3-dev unixODBC-dev postgresql-server-dev-9.1 libsqlite-dev libaspell-dev libreadline6-dev librecode-dev libsnmp-dev libtidy-dev libxslt-dev libt1-dev libcurl4-openssl-dev libgdbm-dev libqdbm-dev libdb++-dev php-pear libmagickwand-dev libmagickcore-dev subversion
apt-get build-dep -y php5

ln -s /usr/include/qdbm/depot.h /usr/include/depot.h
ln -s /usr/lib/libc-client.a /lib/x86_64-linux-gnu/libc-client.a
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

Копируем репозиторий исходники phpfarm:
git clone https://github.com/fpoirotte/phpfarm.git /usr/local/share/phpfarm/

Указываем опции для сборки ( создаем файл /usr/local/share/phpfarm/src/custom/options-5.3.sh с нижеуказанным содержимым ):
configoptions="\
--with-regex=php \
--disable-rpath \
--disable-static \
--with-pic \
--with-layout=GNU \
--enable-calendar \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-bcmath \
--with-bz2 \
--enable-ctype \
--with-db4=/usr \
--with-qdbm=/usr \
--without-gdbm \
--with-cdb \
--with-iconv \
--enable-exif \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-onig=/usr \
--with-pcre-regex=/usr \
--enable-shmop \
--enable-sockets \
--enable-wddx \
--with-libxml-dir=/usr \
--with-zlib \
--with-kerberos=/usr \
--with-openssl=/usr \
--enable-soap \
--enable-zip \
--with-mhash=yes \
--with-mysql-sock=/var/run/mysqld/mysqld.sock
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd (далее…)

В дополнение к статье по настройке почтового сервера на FreeBSD решил написать как настроить тоже самое, но на ОС CentOS 6.

Подключаем репозиторий Remi и Epel

rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
yum install yum-priorities
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Приводим файл /etc/yum.repos.d/epel.repo к такому виду

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

и файл /etc/yum.repos.d/remi.repo к такому виду:

[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Ставим MySQL , добавляем в атозагрузку и стартуем:

yum install mysql mysql-server
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

Установим пароь для root в MySQL следующей командой:

mysql_secure_installation

Устанавливаем nginx ( да да, как и в прошлый раз мы обойдемся без тяжеловесного Apache и сделаем все на NGINX + PHP-FPM ), добавим в автозагрузку и стартуем
yum install nginx
chkconfig --levels (далее…)

В дополнение к статье по настройке почтового сервера решил написать как настроить на этой же связке SSL соединение.

Создаем директорию для хранения наших сертификатов

deathstar# mdkir -p /usr/local/etc/ssl/certs

Генерируем сертификат утилитой OpenSSL ( ставим из портов если не установлена )

deathstar# cd /usr/local/etc/ssl/certs && openssl req -new -x509 -days 3650 -nodes -out mail.pem -keyout mail.key

И заполняем данные о сертификате ( пишем что угодно, но Common Name должно иметь значение вашего домена, в моем случае это адреса smtp и imap — mail.deathstar.name )

Далее пересобираем exim с поддержкой SSL если это не было сделано раньше и редактируем конфиг Exim

deathstar# ee /usr/local/etc/exim/configure

Описываем порты, на которыхбудет висеть Exim после строки MY_IP ( 25 и 465 для SSL )

daemon_smtp_ports = 25:465

Ниже описываем порт, на котором будет SSL

# TLS
tls_on_connect_ports = 465
tls_advertise_hosts = *
tls_certificate = /usr/local/etc/ssl/certss/mail.pem
tls_privatekey = /usr/local/etc/ssl/certs/mail.key
#auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

Здесь прописываются пути к сертификату, к ключу, и порт на котором будет SSL.
Для того чтобы запретить не SSL соединения расскоментируйте строку
auth_advertise_hosts
Сохраняем и перезапускаем Exim и пробуем почту на порту 465 с включенным SSL =)

Добавляем SSL в Dovecot

Перечисляем протоколы, которые будет обслуживать Dovecot:

protocols = imap pop3 imaps pop3s
….
Описываем сами протоколы, порты, на которых они будут висеть и пути к SSL сертификату и ключу
protocol imap {
listen=*:143
ssl_listen=*:993
ssl_cert_file=/usr/local/etc/ssl/certs/mail.pem
ssl_key_file=/usr/local/etc/ssl/certs/mail.key
}

protocol pop3 {
listen=*:110
ssl_listen=*:995
ssl_cert_file=/usr/local/etc/ssl/certs/mail.pem
ssl_key_file=/usr/local/etc/ssl/certs/mail.key
}

Включаем SSL, сменив

# SSL/TLS support: yes, no, required. (далее…)

Первым делом подключаем репозитарий EPEL
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Для x64 систем устанавливаем репозитарий отсюда:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
В нем нет ветки php 5.3.x, он подключается для разрешения некоторых зависимостей при последующей установке.

И подключаем репозитарий Remi:

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Устанавливаем MySQL:

yum --enablerepo=remi install mysql-server
Ставим php и apache

yum --enablerepo=remi install httpd php php-common
Устанавливаем модули для php (мне нужны только эти модули):

yum --enablerepo=remi install php-pear php-pdo php-mysql php-pgsql php-pecl-memcache php-gd php-mbstring php-mcrypt php-xml

Запускаем apache и mysql

service httpd start
service mysqld start

Задаем пароль root для MySQL

mysql_secure_installation

Теперь на сервере имеем установленные PHP 5.3.6, Apache 2.2.3 и MySQL 5.1.56 =)

Вздумалось мне этой ночью попробовать поставить Apache 22 + PHP 5 + MySQL 5.1 + phpMyAdmin на домашнем ПК,для обзора некоторых документов из локальной сети некоторым пользователям,подумал-сделал.
Устанавливаем из портов Apache22, при этом убираем поддержку IPV6:

cd /usr/ports/www/apache22
make install clean

Для старта apache при загрузке системы прописываем в /etc/rc.conf строчку:
apache22_enable="YES"

Устанавливаем php5. Убираем поддержку IPV6, добавляем поддержку Apache:

/cd /usr/ports/lang/php5
make install clean

В конфиге Apache /usr/local/etc/apache22/httpd.conf смотрим чтобы была строчка:

LoadModule php5_module libexec/apache22/libphp5.so

а так же блок:


DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

находим секцию и добавляем index.php

DirectoryIndex index.php index.html

В /usr/local/etc/php.ini проверяем, чтобы было разрешено отображение короткой формы записи

short_open_tag = On

Включаем защищенный режим:

safe_mode = On

Необходимо так же раскомментировать строчки:

extension=php_mcrypt.dll
session.save_path = "/tmp"

После этих действий страницы на php буду нормально открываться в браузере.

Устанавливаем MySQL 5.1

cd /usr/ports/databases/mysql51-server
make install clean

cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf

/usr/local/bin/mysql_intsall_db --user=mysql

chown -R mysql:mysql /var/db/mysql/

/usr/local/bin/mysqld_safe –user=mysql &

/usr/local/bin/mysqladmin -u root password '123456'

в /etc/rc.conf добавляем:

mysql_enable=”YES”

Установка PhpMyAdmin

cd /usr/ports/databases/phpmyadmin
make install clean

добавляем в /usr/local/etc/apache22/httpd.conf

Alias /pma/ "/usr/local/www/phpMyAdmin/"


Options none
AllowOverride Limit

Order Deny,Allow
Deny from all
Allow from 127.0.0.1 .example.com

Вместо .example.com нужно вписать IP с которого разрешено заходить.

Теперь необходимо создать файл конфигурации для подключения phpMyAdmin к (далее…)