Бормотухи.НЕТ

Вернуться   Бормотухи.НЕТ > Web-мастеру > Сайтостроение
Расширенный поиск

Сайтостроение В этой категории темы о создании сайтов, их раскрутке, скриптах и т.п

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 20:19 Вверх   #1
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
Хорошо Настройка сервера в режиме Apache + Nginx

Настройка сервера в режиме Apache + Nginx

Наконец то получился 100% рабочий мануал по настройке сервера в таком режиме, но есть загвоздки о которых напишу в конце.

Итак, в качестве ОС сервера у меня всегда ubuntu 10.04, я к ней безумно привык и меня она устраивает. Ставлю всегда в минимальной версии.

В качестве домена будет выступать serberg.ru , сам тестовый сервер пока что имеет IP 159.253.18.138.

Начнемс.

Устанавливаем все что может понадобится, сервер у меня от части стриминговый, так что я ставлю некоторые примочки:

sudo apt-get update
apt-get install mc
apt-get install nano
apt-get install gcc++
apt-get install libpcre3 libpcre3-dev
apt-get install openssl
apt-get install libssl-dev

Итак, приступим к установке Nginx:

Жирным выделяю команды в консоли - через тире комментарий к ней

cd /tmp - переходим в папку tmp

wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz - качаем Nginx пакет

tar xvf nginx-0.8.54.tar.gz - распаковываем его

cd nginx-0.8.54 - переходим в папку

Конфигурируем и устанавливаем:

./configure
make
make install

Обычно ошибок не возникает. Запускаем nginx командой:

sudo /usr/local/nginx/sbin/nginx

Переходим по адресу http://159.253.18.138/ и видим что Nginx заработал по соответствующему приветственному окну.

Остановим пока что nginx убив процесс.

killall -KILL nginx

Стоит отметить что установленный Nginx базируется в папке /usr/local/nginx/ и конфигурационные файлы лежат в папке /usr/local/nginx/conf.

Ок. Пока что Nginx оставим и приступим к настройке Apach + PHP + PhpMyAdmin

sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec - ставим апач с плюшками

После перехожу по адресу в браузере http://159.253.18.138/ и вижу что теперь меня привествует апач "It works!". Это хорошо, но позже исправим.

Устанавливаем PHP модулями командой:

sudo apt-get install php5 php-pear libapache2-mod-php5 libapache2-mod-ruby libapache2-mod-auth-mysql php5-mysql libapache2-mod-python php5-dev php5-cgi php5-mcrypt php5-gd php5-cli php5-common php5-curl php5-idn php5-imagick php5-imap php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl libapache2-mod-evasive

Установка дополнительных пакетов для gd:

sudo apt-get install libpng12-dev libjpeg62-dev libxpm-dev libfreetype6-dev

Ставим мод паф для взаимодействия и правильной передачи IP между нгинксом и апачем:

sudo apt-get install libapache2-mod-rpaf

Подключение модулей:
sudo a2enmod php5
sudo a2enmod mod-evasive
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include
a2enmod rpaf

До кучи можно перезапустить апач:
/etc/init.d/apache2 force-reload

Редактируем конфиг хостов:

sudo nano /etc/apache2/sites-available/default

Изменяем параметр: AllowOverride None на AllowOverride All

Сохраняем нажав Ctrl + O и закрываем нано Ctrl + X.

Перезапускаем апач:

sudo service apache2 restart

Установка MySQL сервера:

sudo apt-get install mysql-server

В процессе установки, будет запрошен ввод пароля для root MySql сервера. Введите его дважды.

Установка phpMyAdmin:

sudo apt-get install phpmyadmin

Во время установки у Вас спросят какой тип сервер установлен apache2 или lighttpd, выбираем пробелом apache2 и жмем Enter.

Создаем папки для домена:

sudo mkdir /usr/local/nginx/serberg.ru
sudo mkdir /usr/local/nginx/serberg.ru/www
sudo mkdir /usr/local/nginx/serberg.ru/log
sudo mkdir /usr/local/nginx/serberg.ru/sess
sudo mkdir /usr/local/nginx/serberg.ru/tmp

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

sudo nano /etc/apache2/sites-available/serberg.ru


Со следующим содержимым:

<VirtualHost *:8080>
ServerName serberg.ru
ServerAlias www.serberg.ru
DocumentRoot /usr/local/nginx/serberg.ru/www
ServerAdmin admin@serberg.ru
ErrorLog /usr/local/nginx/serberg.ru/log/apache_error.log
CustomLog /usr/local/nginx/serberg.ru/log/apache_access.log combined

<Directory /usr/local/nginx/serberg.ru/www>
Options FollowSymLinks
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>

php_admin_value upload_tmp_dir /usr/local/nginx/serberg.ru/tmp
php_admin_value error_log /usr/local/nginx/serberg.ru/log/php.log
php_admin_value session.save_path /usr/local/nginx/serberg.ru/sess
</VirtualHost>
Обратите внимание что папки созданы в каталоге nginx, т.к. я решил что там будут тусить мои сайты. Так же стоит отметить что сайту назначен порт 8080, его будет слушать апач. Для того чтобы апач больше не занимал 80 порт отредактируем конфиг его портов ports.conf:

nano /etc/apache2/ports.conf

Меняем 80 на 8080, будет похоже на это:

NameVirtualHost *:8080
Listen 8080

<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
Сохраняем нажав Ctrl + O и закрываем нано Ctrl + X.

Активируем сайт на сервере

sudo a2ensite serberg.ru

Внесем имя сайта в список хостов сервера:

sudo nano /etc/hosts

Найдем строчку 127.0.0.1 localhost и допишем в неё через пробел:

serberg.ru www.serberg.ru

Получится так:

Код:
127.0.0.1 localhost serberg.ru www.serberg.ru
Сохраняем нажав Ctrl + O и закрываем нано Ctrl + X.

Чтобы Apache не ругался, внесем строчку в один из конфигурационных файлов Apache (начиная с версии 11.04 не требуется).

sudo nano /etc/apache2/httpd.conf

Добавим следующее содержимое:

ServerName localhost

Сохраняем нажав Ctrl + O и закрываем нано Ctrl + X.

sudo service apache2 restart - перезапустим апач

Для понимания, в папке настрое апача есть папки:
sites-available - все доступные виртуальных хосты
sites-enabled - включаемые вебсервером
Это надо понимать.

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

sudo a2dissite default

Итак, теперь конфигурируем nginx в режиме прокси для апача.

nano /usr/local/nginx/conf/nginx.conf

По умолчанию он выглядит так:

PHP код:
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    
worker_connections  1024;
}


http {
    include       
mime.types;
    
default_type  application/octet-stream;

    
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    
sendfile        on;
    
#tcp_nopush     on;

    #keepalive_timeout  0;
    
keepalive_timeout  65;

    
#gzip  on;

    
server {
        
listen       80;
        
server_name  localhost;

        
#charset koi8-r;

        #access_log  logs/host.access.log  main;

        
location / {
            
root   html;
            
index  index.html index.htm;
        }

        
#error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        
error_page   500 502 503 504  /50x.html;
        
location = /50x.html {
            
root   html;
        }
        
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    
}

    
# another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


Я лезу в секцию сервер:

PHP код:
    server {
        
listen       80;
        
server_name  localhost;

        
#charset koi8-r;

        #access_log  logs/host.access.log  main;

        
location / {
            
root   html;
            
index  index.html index.htm;
        } 
я привёл этот кусок к следующему виду:

PHP код:
    server {
        
listen       80;
        
server_name  serberg.ru;

        
#charset koi8-r;

        #access_log  logs/host.access.log  main;

        
location ~* \.(js|css|rdf|xml|ico|txt|gif|jpg|png|jpeg)$ {
        
root serberg.ru/www/;
        
access_log serberg.ru/log/direct.log ;
        }

        
location / {

        
proxy_pass http://127.0.0.1:8080/;
        
proxy_redirect off;

        
proxy_set_header Host $host;
        
proxy_set_header X-Real-IP $remote_addr;
        
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        
client_max_body_size 10m;
        
client_body_buffer_size 128k;

        
proxy_connect_timeout 90;
        
proxy_send_timeout 90;
        
proxy_read_timeout 90;

        
proxy_buffer_size 4k;
        
proxy_buffers 4 32k;
        
proxy_busy_buffers_size 64k;
        
proxy_temp_file_write_size 64k;
        } 
Больше ничего не трогаю, сохраняю. Сохраняем нажав Ctrl + O и закрываем нано Ctrl + X.

Тут я файлы типов js|css|rdf|xml|ico|txt|gif|jpg|png|jpeg отдаю через nginx напрямую, остальное сую в апач.

/etc/init.d/apache2 stop - Вырубаю апач
killall -KILL nginx - Вырубаю nginx
sudo /usr/local/nginx/sbin/nginx - запуск nginx
/etc/init.d/apache2 start - запуск apache

Теперь при обращении на serberg.ru должно быть написано что апач приветствует Вас.

Итак, для теста поставил DLE 9.5, включил кэширование самого движка в настройках получаю на этом сервере общее время генерирования страницы:
  • 0.014 - на голом апача
  • 0.00795 - через nginx
Результат на лицо.


Теперь меня мучает проблемка, если обратиться на сервер через адрес:
http://serberg.ru:8080/
То апач его обработает без nginx, можно как то редиректнуть такой запрос назад на 80 порт ?
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 27.05.2012, 20:22 Вверх   #2
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
По умолчанию

Еще одна проблема нарисовалась. При обращении по IP http://159.253.18.138/ грузится сам сайт. Как это можно убрать или редиректнуть ?
  Ответить с цитированием
Старый 28.10.2012, 12:36 Вверх   #3
Пользователь
 
Аватар для IngenerIT
IngenerIT вне форума
Доп. информация
По умолчанию

Serberg, спасибо тебе за такой мануал. Как говорится: "Всё в одном"
  Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:28. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
 

Время генерации страницы 0.16984 секунды с 13 запросами