Настройка сервера под требования системы управления сайтом 1С-Битрикс на базе Ubuntu Server

Итак, у нас есть исходное оборудование:
Винчестер: 1TB Western Digital
Материнская плата: Asus M5A78L-M LX
Процессор: AMD Athlon 2 2x250
Память: DDR3 4GB
ОС: Ubuntu Server (собранная с поддержкой дисковых квот)

Задача: настроить сервер для оптимальной работы с битриксом за минимальное время и с минимальными затратами (FAQ для блондинок).

Предпологается, что вы уже скачали на свой комп SSH клиент, если вы этого ещё не сделали, то качаем самый простой, на мой взгляд, клиент Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html).

1) Подключаемся по SSH вводя свой логин и пароль от сервера.
2) Выполняем команду sudo - i и вводим пароль администратора (Примечание: изначально мы не можем авторизироваться как администраторы, так как это противоречит политике безопасности системы и является дополнительной защитой). Данная команда переводит нас в режим администратора, результатом комадны будет изменение дескриптора пути с ~$ на ~#.
3) Теперь поставим всё необходимое в будущем ПО apt-get install apache2 nginx php5 php5-gd php5-imap php5 mysql-server proftpd postfix dovecot-common bind9. Указанные пакеты это - вебсервер с интерпритатором PHP5, кеширующий прокси сервер, сервер баз дынных, FTP сервер, почтовый сервер для отправки сообщений, сервер для приёма сообщений и днс сервер.
В процессе установки у вас спросят пароль для базы данных (запишите его), все остальные настройки выставляем по умолчанию.
При установке proftpd ОБЯЗАТЕЛЬНО ставим "standalone" режим или в русской версии "самостоятельно", если вы этого не сделали, то подправить можно в /etc/proftpd/proftpd.conf
4) Для удобства настройки сервера можно поставить phpmyadmin (менеджер баз данных) и webmin (простенькая контрольная панелька для управления сервером, безплатная).
Этот пункт является не обязательным.
4.1) Установка phpmyadmin очень проста, выполняем команду apt-get install phpmyadmin. В процессе установки ставим галочку напротив пункта apache2 и вводим рут пароль который мы задавали на шаге установки mysql сервера. Зайти на сервер мы теперь можем по адресу http://server_ip/phpmyadmin/
4.2) Установка webmin'a тоже достаточно проста. заходим на сайт http://webmin.net/ находим последнюю версию вебмина и копируем в буфер обмена путь на закачку (в моём случае это http://prdownloads.sourceforge.net/webadmin/webmin_1.550_all.deb)
теперь в консоли пишем следующие команды
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.550_all.deb
apt-get install apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions libapt-pkg-perl
dpkg --install webmin_1.550_all.deb
Теперь зайдя по адресу https://server_ip:10000 можно управлять сервисами сервака, редактировать конфиги и т.д. но в нашем примере я покажу как настроить всё без него.
5) Переходим к самому интересному, редактированию конфигов вебсервера smile:)
5.1) Начнём с Apache2
включим нужные нам модули командой a2enmod <имя мода>
a2enmod rewrite
a2enmod mime
дальше редактируем конфиг
nano /etc/apache2/ports.conf

#порт 8080 потому, что в будущем мы планируем настроить Front-End 
на базе кеширующего прокси сервера
NameVirtualHost *:8080
Listen 8080
<IfModule mod_ssl.c>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>


теперь нам необходимо создать наш сайт
root@server# mkdir /var/www/myfirstsite.ru
root@server# chown www-data /var/www/myfirstsite.ru
и включить обработку htaccess
nano /etc/apache2/sites-enabled/000-default

<VirtualHost *:8080>       
ServerAdmin webmaster@localhost
DocumentRoot /var/www/myfirstsite.ru
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/myfirstsite.ru >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg. LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

С настройкой апача закончили (по желанию можно так же установить дериктиву MaxClients в /etc/apache2/httpd.conf).
5.2) Апач у нас будет выполнять функции Back-End, теперь перейдём к настройке Front-End, коим у нас будет выступать nginx
В консоли выполняем
nano /etc/nginx/nginx.conf

user www-data;  
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events { worker_connections 1024;
# multi_accept on; }
http { include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE &#91;1-6&#93;\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*; }

nano /etc/nginx/sites-enabled/default

server {      listen   80 default;      
location / { proxy_pass [url]http://127.0.0.1:8080/[/url];
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }


для корректного отображения логов и директивы REMOTE_HOST настроим mod_rpaf2
# apt-get install libapache2-mod-rpaf
# a2enmod rpaf
и перезапустим всё, что правили
/etc/init.d/apache2 restart
/etc/init.d/nginx restart

5.3) Теперь наш сервер имеет и фронт и бэк, перейдём к настройке php
nano /etc/php5/apache2/php.ini
и меняем следующие директивы
display_errors = On
default_charset = "utf-8"
upload_max_filesize = 20M (если будут большие файлы грузиться то ставьте по больше значение)
post_max_size = 80M
short_open_tag = On
allow_call_time_pass_reference = On
session.use_trans_sid = Off
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
memory_limit = 512M
realpath_cache_size = 4096k


Для установки APC в конец файла добавляем (о его установке ниже)
[apc]
apc.ttl = 1
apc.max_file_size = 4M
apc.shm_size = 90
если необходим ZendOptimizer то добавляем в конец (о его установке ниже)
[zend]
zend_extension=/usr/lib/ZendGuardLoader.so #тут указываем путь к зенд оптимайзеру

5.4) Установка APC (этот пункт не обязательный, но желательный)
Выполняем в консоле команды
apt-get install apache2-dev php5-dev php-pear make
pecl install apc
nano /etc/php5/conf.d/apc.ini
и вписываем туда 1 строчку

 extension=apc.so  

все остальные настройки мы уже сделали на шаге настройки php.ini

5.5) Установка ZendOptimizer
По опыту с установкой зенд оптимайзера у меня постоянно возникают проблемы с его скачиванием. Советую сразу зарегистрироваться на сайте zend.com и тащить оттуда последнюю версию
Кстати начиная с версии php 5.3 он называется Zend Guard Loader
Качаем нужный нам релиз отсуда http://www.zend.com/en/products/guard/downloads
Последнюю версию на данный момент можно взять отсуда (http://www.zend.com/download/418?start=true)
Качаем архив на локальный компьютер, распаковываем его и забираем оттуда единственную библиотеку ZendGuardLoader.so и потом закачиваем её по фтп на сервер в корень пользовательской папки
Примечание: в ходе самого первого шага мы установили proftpd это и есть наш фтп сервер. По уполчанию через него можно зайти под системным пользователем (тем, под которым вы первоначально авторизировались на сервер по ssh), файлы загруженные в корень пользовательской папки можно найти в директории /home/<username>/
Переходим в папку и перемещаем нашу библиотеку в нужное место
cd /home/<username>/
mv ZendGuardLoader.so /usr/lib/
и для уверенности перебиваем на него права
chmod 644 /usr/lib/ZendGuardLoader.so
chown www-data /usr/lib/ZendGuardLoader.so

перезапускаем наш вебсервер

/etc/init.d/apache2 restart

6) Тестирование
Переходим в папку с нашим сайтом
cd /var/www/myfirstsite.ru
и загружаем туда скрипт установки битрикса
wget http://www.1c-bitrix.ru/download/scripts/bitrixsetup.php
переходим на сайт устанавливаем битрикс и тестим smile:)
http://myfirstsite.ru/bitrixsetup.php

Возврат к списку