Настраиваем сервер для хостинга сайтов: nginx+apache+php+mysql

В данной статье мы будем рассматривать как выполнить базовую настройку linux сервера для его использования под хостинг сайтов на примере Debian 7.

1. Обновляем кэш доступных пакетов и устанавливаем необходимые пакеты:
apt-get update

Устанавливаем все необходимое, то есть все что нужно что бы работала связка nginx+apache+php+mysql и в добавок phpmyadmin
apt-get -y install nginx phpmyadmin mysql-server

в процессе установки система потребует ввести пароль root пользователя сервера БД MySQL а так же выбрать веб сервер, выбираем apache2.
В итоге на сервере будет запущен apache и mysql. Доступ к серверу БД мы уже сможем получить по ссылке:
http://ip_servera/phpmyadmin/

Установленные модули php можно проверить командой:
php -m

Если не хватает модуля (например cURL) то устанавливаем его:
apt-get -y install php5-curl


2. Настраиваем связку frontend (nginx) + backend (apache)
Изменяем конфигурационные файлы apache:
nano /etc/apache2/ports.conf

Находим строчку Listen 80 и меняем на Listen 127.0.0.1:80
Перегружаем apache
/etc/init.d/apache2 restart

В итоге наш вебсервер apache будет принимать соединения по локальному адресу 127.0.0.1:80

Изменяем конфигурационные файлы nginx:
nano /etc/nginx/sites-enabled/default

находим строчку в разделе server:
#listen   80;

и приводим ее к виду:
listen  ip_servera:80;


зону location /
которая имеет вид:
location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

меняем на:
location / {
                proxy_pass   http://127.0.0.1;
                proxy_read_timeout 600;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header  X-Forwarded-For   $remote_addr;
                proxy_buffering off;

        }

Как итог nginx сервер принимает соединения и отправляет их к apache.
Связка nginx+apache настроена. Запускаем nginx
/etc/init.d/nginx start


3. Настраиваем доменную зону для nginx и apache на примере домена test.ru
Создаем директорию для домена:
mkdir /home/test.ru && mkdir /home/test.ru/logs && mkdir /home/test.ru/tmp &&  mkdir /home/test.ru/html


Создаем конфигурационный файл домена для nginx:
nano /etc/nginx/sites-enabled/www.test.ru.conf


вставляем конфиг:
server {

    listen          ip_servera:80;
    server_name     www.test.ru test.ru;

    access_log  /home/test.ru/logs/www.test.ru.access.log;
    error_log  /home/test.ru/logs/www.test.ru.error.log;

    location /
    {
        proxy_pass http://127.0.0.1/;
        proxy_read_timeout 600;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For   $remote_addr;
        proxy_buffering off;
    }
    location ~* .(txt|jpg|jpeg|gif|mpg|mpeg|avi|png|css|swf|ico|zip|rar|sdt|js|bmp|wav|mp3|mmf|mid|vkp|sisx|sis|exe|jar|thm|nth|doc)$ {
        root /home/test.ru/html;
        expires 2d;
    }

}


Создаем конфигурационный файл домена для apache:
nano /etc/apache2/sites-enabled/www.test.ru.conf


вставляем конфиг:
<VirtualHost *:80>
    ServerName www.test.ru
    ServerAlias test.ru

    CustomLog /home/test.ru/logs/www.test.ru.access.apache.log common
    ErrorLog /home/test.ru/logs/www.test.ru.error.apache.log

    DocumentRoot /home/test.ru/html
    DirectoryIndex index.php index.html

    php_admin_value open_basedir /home/test.ru
    php_admin_value upload_tmp_dir /home/test.ru/tmp
    php_admin_value session.save_path /home/test.ru/tmp
</VirtualHost>


Перегружаем nginx и apache:
/etc/init.d/nginx restart
/etc/init.d/apache2 restart


Создаем тестовые файлы для нашего домена:
echo "hello world :)" > /home/test.ru/html/index.html
echo "<? phpinfo(); ?>" > /home/test.ru/html/info.php


Настраиваем Локальное перенаправление домена как описано в этом посте blog.vpsville.ru/blog/56.html
и если в итоге открывая страницы
http://test.ru/ и http://test.ru/info.php

видим:
Тестовая страница домена
и
Конфигурация php

значит что мы все сделали верно :)

P.S. Повторяя пункт 3 на сервер можно добавить не ограниченное количество доменов.

Всем удачи!!!
  • 0
  • 20 сентября 2013, 18:28
  • admin

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.