Печать

Установка и настройка веб сервера

вкл. .

(1 Проголосовало)

Речь пойдет о развертывании полноценного Веб-сервера в Debian.

Apache 2 + Nginx + php 5 + MySQL + memcached + eaccelerator

Если кому надо ставим SSH:

$ sudo apt-get install --no-install-recommends openssh-server

Также рекомендую установить:

$ sudo aptitude install mc htop zip tar bzip2 gzip g++ wget

mc - Midnight Commander - консольный файловый менеджер
htop - Удобный менеджер процессов
zip и tar позволит распаковывать zip, tar.gz, tar.bz2 и tar.lzma архивы
wget позволит скачивать файлы из интернета в консольном режиме.

Установка Apache 2 + php 5 + MySQL + phpmyadmin:

$ sudo 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-ffmpeg php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-tidy php5-xmlrpc php5-xsl phpmyadmin

В процессе установке нужно будет ввести пароль суперпользователя(root) MySQL, а также выбрать сервер для phpmyadmin.

Конфигурация MySQL сервера:

Создайте или измените пароль MySQL от root-пользователя, удалите анонимных пользователей, запретите удаленный вход от имени root-пользователя, удалите базу данных "test" (и доступ к ней), перезагрузите таблицы привелегий.

$ sudo mysql_secure_installation

Разрешаем модули апача:

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Отключаем хост по умолчанию:

$ sudo a2dissite 000-default

Создаем файл виртуального хоста:

$ sudo nano /etc/apache2/sites-available/kdv.su

Следующего содержания:

<VirtualHost *:8080>

        ServerAdmin Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
        DocumentRoot /var/www/kdv.su
        ServerName kdv.su
       ServerAlias www.kdv.su       
        <Directory />
                Options FollowSymLinks
                AllowOverride 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
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Делаем ссылку на наш файл в папке /etc/apache2/sites-enabled/

$ sudo ln -s /etc/apache2/sites-available/kdv.su /etc/apache2/sites-enabled/kdv.su

Редактируем конфигурационный файл:

$ sudo nano /etc/apache2/apache2.conf

Необходимо найти и отредактировать следующие строки:

Timeout 90

KeepAlive Off

MaxClients 64

Настраиваем apache на работу с портом 8080, а не 80:

$ sudo nano /etc/apache2/ports.conf

Должен иметь вид:

NameVirtualHost *:8080
Listen 8080

Устанавливаем nginx + apache2-mod-rpaf

Если посмотреть в логи apache, то там все запросы будут идти с адреса front-end'a. Чтобы это исправить, необходимо установить модуль mod_rpaf.

$ sudo wget http://ftp.de.debian.org/debian/pool/main/n/nginx/nginx_0.8.54-3_all.deb
$ sudo dpkg -i nginx_*
$ sudo aptitude install libapache2-mod-rpaf

Настроим mod_rpaf:

$ sudo nano /etc/apache2/mods-enabled/rpaf.conf

Должен выглядеть примерно так:

<IfModule mod_rpaf.c>
# Включаем модуль
RPAFenable On

# Приводит в порядок X-Host
RPAFsethostname On

# Адрес фронтенда (nginx)
RPAFproxy_ips 127.0.0.1 192.168.0.11
</IfModule>

Настраиваем gzip сжатие для nginx. И сам nginx (worker_processes 2; ставим равному количеству ядер в процессоре). Открываем конфиг:

$ sudo nano  /etc/nginx/nginx.conf

Все стираем и делаем так:
 
user www-data;
worker_processes 2;
pid /var/run/nginx.pid;

events {
        worker_connections 1024;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        #tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
        server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";
        # gzip_vary on;
        gzip_proxied any;
        gzip_min_length     1100;
        gzip_comp_level 9;
        gzip_buffers 16 8k;
        gzip_http_version 1.0;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

 

Для нашего виртуалхоста создаем новый конфиг:

$ sudo nano /etc/nginx/sites-enabled/kdv.su

server {
listen 80;
server_name kdv.su;
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/kdv.su/;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:8080/;
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:

$ sudo aptitude install memcached

Устанавливаем eAccelerator.
А так же php5-dev, т.к. нам понадобится утилита phpize.

$ sudo aptitude install php5-dev
$ sudo aptitude install make
$ sudo cd /tmp/
$ sudo wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
$ sudo tar xvjf eaccelerator-0.9.5.3.tar.bz2
$ sudo cd eaccelerator-0.9.5.3
$ sudo phpize
$ sudo ./configure --enable-eaccelerator=shared
$ sudo make
$ sudo make install

Создаем папку кеша:

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

Редактируем конфиг PHP:

$ sudo 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"

 

Перезагружаем apache, nginx, memcached:

$ sudo /etc/init.d/apache2 restart

$ sudo /etc/init.d/nginx restart

$ sudo /etc/init.d/memcached restart

В итоге мы получили полноценный Web-сервер.

Комментарии   

 
0 #1 Денис 30.06.2011 02:10
Подтверждаю NGinx как фронт енд для Apache очень сильно спасает сетуацию!!! На машине со 128 Мб ОЗУ крутиться сервер на 200 одновременных подключений с 5ю доменами.
Цитировать
 

Добавить комментарий


Защитный код
Обновить