Настройка apache 2 + nginx + php 5 + MySQL + memcached + eaccelerator + sphinx в Ubuntu
Автор http://rubuntu.ru/blog/server/435/nastrojka-apache-2-nginx-php-5-mysql-memcached-eaccelerator-sphinx-v-ubuntu.html
Итак сегодня я раскажу вам как поднять Веб сервер на маломощном компьютере или VDS / VPS
Мной был взят сервер VDS в конфигурации CPU 480 MHz, RAM 256 Mb, HDD 8 Gb (Ubuntu Server 9.04).
Делаем начальные действия необходимые нам для дальнейшей работы:
выставим пароль root и зайдем под ним
обновим информацию о пакетах, и обновим систему
доставим wget если ставились в минималке
поставим webmin дабы было удобнее приглядывать за сервером (после установки он доступен по адресу https://ваш адрес:10000)
Поставим SSH если он ещё не установлен
Доставим g++ он пригодится в дальнейшем:
С подготовительной частью закончили, ставим веб сервер.
Установка apache2 + phph5 + mysql + phpmyadmin одной строкой:
По ходу установки вводим пароль пользователя сервера Mysql (root):
New password for the MySQL «root» user: < — yourrootsqlpassword ВАШ ПАРОЛЬ
Repeat password for the MySQL «root» user: < — yourrootsqlpassword ЕЩЕ РАЗ ВАШ ПАРОЛЬ
Разрешаем модули апача:
правим конфиг сайта по умолчанию, и далее от него и отталкиваемся при создании виртуалхостов:
nano /etc/apache2/sites-available/default (все стираем и делаем так, ну и всетки думаем что делаем, ибо под вашу задачу могут быть отличия)
(порт 81 это не ошибка, так и должно быть, ибо слушать 80й порт у нас будет nginx, и в апачь передавать только запросы на динамику(php и др)):
Делаем ссылку на наш файл в папке /etc/apache2/sites-enabled/
правим в двух местах nano /etc/apache2/apache2.conf
Ставим nginx + apache2-mod-rpaf
nano /etc/apache2/ports.conf
Далее настраиваем виртуальный хост apache.
Копируем дефолтный конфиг: (и правим его под свой домен)
Настраиваем gzip сжатие для nginx. И сам nginx (worker_processes 1; ставим равному количеству ядер в процессоре). Открываем конфиг:
все стираем и делаем так:
Для нашего виртуалхоста создаем новый конфиг:
С такими настройками nginx у нас отдаёт всю статику (картинки, видиое, музыку, css, ява скрипты и др.), а апачь трудиться только над выполнением php.
Устанавливаем memcached:
Устанавливаем eAccelerator.
Так же тянем php5-dev, т.к. нам понадобится утилита phpize.
Создаем папку кеша:
Редактируем конфиг PHP:
Добавляем строки в самом верху:
Перезапускаем сервисы:
Вуаля у нас супершустрый сервер который кушает 90мб оперативной памяти.
Для тех кому нужен sphinx (free open-source SQL full-text search engine)
и правим конфиг под свои нужды:
Вроде ничего незабыл…
Мной был взят сервер VDS в конфигурации CPU 480 MHz, RAM 256 Mb, HDD 8 Gb (Ubuntu Server 9.04).
Делаем начальные действия необходимые нам для дальнейшей работы:
выставим пароль root и зайдем под ним
sudo passwd root su
обновим информацию о пакетах, и обновим систему
aptitude update aptitude upgrade
доставим wget если ставились в минималке
aptitude install wget make
поставим webmin дабы было удобнее приглядывать за сервером (после установки он доступен по адресу https://ваш адрес:10000)
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.490_all.deb (версию подставляйте свежую на момент своих действий) dpkg -i webmin_1.490_all.deb aptitude -f install
Поставим SSH если он ещё не установлен
aptitude install ssh openssh-server
Доставим g++ он пригодится в дальнейшем:
aptitude install g++
С подготовительной частью закончили, ставим веб сервер.
Установка apache2 + phph5 + mysql + phpmyadmin одной строкой:
aptitude install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl phpmyadmin
По ходу установки вводим пароль пользователя сервера Mysql (root):
New password for the MySQL «root» user: < — yourrootsqlpassword ВАШ ПАРОЛЬ
Repeat password for the MySQL «root» user: < — yourrootsqlpassword ЕЩЕ РАЗ ВАШ ПАРОЛЬ
Разрешаем модули апача:
a2enmod ssl a2enmod rewrite a2enmod suexec a2enmod include
правим конфиг сайта по умолчанию, и далее от него и отталкиваемся при создании виртуалхостов:
nano /etc/apache2/sites-available/default (все стираем и делаем так, ну и всетки думаем что делаем, ибо под вашу задачу могут быть отличия)
(порт 81 это не ошибка, так и должно быть, ибо слушать 80й порт у нас будет nginx, и в апачь передавать только запросы на динамику(php и др)):
<VirtualHost *:81> ServerAdmin webmaster@твой_сайт DocumentRoot /var/www/твой_сайт <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/> 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 All Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
Делаем ссылку на наш файл в папке /etc/apache2/sites-enabled/
правим в двух местах nano /etc/apache2/apache2.conf
MaxClients 20
Ставим nginx + apache2-mod-rpaf
wget http://ftp.de.debian.org/debian/pool/main/n/nginx/nginx_0.7.62-1_i386.deb dpkg -i nginx_* aptitude install libapache2-mod-rpaf
nano /etc/apache2/ports.conf
NameVirtualHost *:81 Listen 81
Далее настраиваем виртуальный хост apache.
Копируем дефолтный конфиг: (и правим его под свой домен)
cd /etc/apache2/sites-available cp ./default /etc/apache2/sites-enabled/example.com
Настраиваем gzip сжатие для nginx. И сам nginx (worker_processes 1; ставим равному количеству ядер в процессоре). Открываем конфиг:
nano /usr/local/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; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server_names_hash_bucket_size 64; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_proxied any; gzip_min_length 1100; gzip_http_version 1.0; gzip_buffers 4 8k; gzip_comp_level 9; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
Для нашего виртуалхоста создаем новый конфиг:
nano /etc/nginx/sites-enabled/example.com
server { listen 80; server_name example.com; access_log /var/log/nginx.access_log; location ~* .(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { root /var/www/test.gigma.ru/; index index.html index.php; access_log off; expires 30d; } location ~ /.ht { deny all; } location / { proxy_pass http://127.0.0.1:81/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 90; proxy_read_timeout 90; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } }
С такими настройками nginx у нас отдаёт всю статику (картинки, видиое, музыку, css, ява скрипты и др.), а апачь трудиться только над выполнением php.
Устанавливаем memcached:
aptitude install memcached
Устанавливаем eAccelerator.
Так же тянем php5-dev, т.к. нам понадобится утилита phpize.
aptitude install php5-dev aptitude install make cd /tmp/ wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2 tar xvjf eaccelerator-0.9.5.3.tar.bz2 cd eaccelerator-0.9.5.3 phpize ./configure --enable-eaccelerator=shared make make install
Создаем папку кеша:
mkdir -p /var/cache/eaccelerator chmod 0777 /var/cache/eaccelerator
Редактируем конфиг PHP:
nano /etc/php5/apache2/php.ini
Добавляем строки в самом верху:
[PHP] ; eAccelerator configuration ; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension ; If you are using a thread safe build of PHP you must use ; zend_extension_ts instead of zend_extension extension = "eaccelerator.so" eaccelerator.shm_size = "16" eaccelerator.cache_dir = "/var/cache/eaccelerator" eaccelerator.enable = "1" eaccelerator.optimizer = "1" eaccelerator.check_mtime = "1" eaccelerator.debug = "0" eaccelerator.filter = "" eaccelerator.shm_max = "0" eaccelerator.shm_ttl = "0" eaccelerator.shm_prune_period = "0" eaccelerator.shm_only = "0" eaccelerator.compress = "1" eaccelerator.compress_level = "9" eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
Перезапускаем сервисы:
service apache2 restart service nginx restart service memcached restart
Вуаля у нас супершустрый сервер который кушает 90мб оперативной памяти.
Для тех кому нужен sphinx (free open-source SQL full-text search engine)
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.8.1.tar.gz tar –xzvf sphinx-0.9.8.tar.gz cd sphinx-0.9.8 ./configure make make install mkdir -p /var/db/sphinx/log chmod -R 777 /var/db/ mkdir -p /usr/local/SphinxIndex chmod -R 777 /usr/local/SphinxIndex/
и правим конфиг под свои нужды:
nano /usr/local/etc/sphinx.conf
Вроде ничего незабыл…