"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Dec 262012
 

Ну вот и пришла пора поставить и настроить Web-сервер. После установки apache2 + ngnix + php5 + mySQL + memcached + eaccelerator мы должны получить довольно быстрый сервер, с не очень большим потреблением памяти. ngnix будет обрабатывать все статические запросы, а динамику отдавать apach2.

Приступим.

Ставим весь веб-сервер за один раз

nord_tramper@SRV:~$ sudo apt-get 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

+152Мб на диске 🙂 – жмем Y и в путь!

При установке mySQL вводим пароль root пользователя MySQL. (у меня это было на таком веселом розовеньком фоне Smile )

New password for the MySQL "root" user: ПИШЕМ_СВОЙ_ЛЮБИМЫ_ПАРОЛЬ
Repeat password for the MySQL "root" user: ПИШЕМ_СВОЙ_ЛЮБИМЫ_ПАРОЛЬ

Когда дело дойдет до установки phpmyadmin, надо будет в настройках выбрать apache2, чтобы админка заработала.

И снова окно настроек Myphpadmin:

Выбираем Yes и снова вводим пароли. phpmyadmin должен где-то хранить свои настройки – так что база ему нужна.

Разрешаем, необходимые нам, модули “индейца”, т.е. apach2

sudo /usr/sbin/a2enmod ssl
sudo /usr/sbin/a2enmod rewrite
sudo /usr/sbin/a2enmod suexec
sudo /usr/sbin/a2enmod include

Настроим сайт по умолчанию. Для этого поправим конфиг /etc/apache2/sites-available/default (я правлю редактором MC).

<VirtualHost *:81>
        ServerAdmin webmaster@lifelongjourney.ru
        DocumentRoot /var/www/lifelongjourney.ru
        <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>

Вместо Lifelongjourney.ru подставьте свой сайт. 81 порт – это не ошибка – на 80-м порту будет жить nginx, и он уже будет перенаправлять все на 80-й порт.

Теперь сделаем ссылку на наш файл в разрешенных файлах

sudo ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/

Теперь поправим файл /etc/apache2/apache2.conf/ Изменим максимальное число процессов апача, запущенных одновременно. В трех местах в файле правим MaxClients 150 на MaxClients 50

Ставим nginx

sudo apt-get install nginx
sudo apt-get install libapache2-mod-rpaf

И сразу меняем в конфиге апча /etc/apache2/ports.conf порт 80 на 81

NameVirtualHost *:81
Listen 81

При желании поправим /etc/nginx/nginx.conf, например, включим там Gzip сжатие и поправим число процессов. Оно должно быть равно числу ядер Вашего процессора.Создадим конфиг для нашего сайта

sudo touch /etc/nginx/sites-enabled/lifelongjourney.ru

и впишем туда

server {
listen 80;
server_name lifelongjourney.ru;
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/lifelongjourney.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;
}
}

Добавим настройки для phpmyadmin, иначе доступ к нему будет только через localhost:81/phpmyadmin. Для этого в конфиге ngnix в секции server{} добавим

location /phpmyadmin/ {
    proxy_pass http://127.0.0.1:81/phpmyadmin/;
}

Устанавливаем memcached

sudo apt-get install memcached

и сразу добавляем eaccelerator

wget http://sourceforge.net/projects/eaccelerator/files/latest/download.zip
unzip download.zip
cd eaccelerator-0.9.6.1/
sudo phpize
sudo ./configure --enable-eaccelerator=shared 
sudo make
sudo make install

Теперь добавим в конфигурацию PHP наш eaccelerator – редактируем файл /etc/php5/apache2/php.ini. Добавим в конец файла

zend_extension = "/usr/lib/php5/20090626+lfs/eaccelerator.so"
 eaccelerator.shm_size = "32"
 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"

Создаем папку для кэша

sudo mkdir -p /var/cache/eaccelerator
sudo chmod 0777 /var/cache/eaccelerator

Рестартутем сервисы

sudo service apache2 restart
sudo service nginx restart
sudo service memcached restart

Ну и затестим сервер

В браузере зайдем на localhost

Welcome to nginx!

nginx работает. А теперь посмотрим на свой сайт. Кстати про свой сайт. Надо создать папку /var/www/lifelongjourney.ru и поместить туда, например, файл index.html

В браузере lifelongjourney.ru

Иииии попадаем на свой сайт, который уже есть в интернете. Ну да. Самое время прописать в /etc/hosts

127.0.0.1 lifelongjourney.ru

Все. Теперь браузер показывает нам наш index.php

В следующем посте – разворачиваем локальную копию сайта на нашем сервере.

Поделиться в соц.сетях

  4 Responses to “Делаем свой собственный сервер на Ubuntu. Установка nginx + apache2 + php5 + mySQL + memcached + eaccelerator”

  1. Спасибо, очень полезный пост, воспользовался в своей практике для работы с сайтом.

  2. Спасибо, админ, очень помог. Все в одном. Прекрасный пост.

Leave a Reply to fedsas Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)