Ubuntu → Настройка связки Nginx+Apache с PHP5, MySQL на Ubuntu
Давно собирался написать мануал по установке и настройке высокопроизводительного сервера.
Думаю что для многих эта статься окажется полезной и прольет свет на многие неясности в этом вопросе.
Сама задача не очень сложная, единственная проблема в том, что последний раз мне приходилось заниматься подобным-почти год назад, а многие вещи имеют свойство забываться.
В общем было решено установить Nginx как прокси-сервер для Apache, энджинск будет лопатить статику, а индеец, будет работать со скриптами.
Чтобы все это выглядело более понятно, прилагаю схему:

Все запросы приходят на сервер Nginx -он отдает статические данные (изображения (jpg, png, html и т.п.), далее он передает запрос на обработку скриптов WEB серверу Apache (PHP,cgi,pl и т.п.), скрипты выполняют запросы к MySQL и получив оттуда данные, возвращают их Nginx, тот, в свою очередь, отдает готовую страницу пользователям. Все просто.
Данный мануал подходит для всех версий Ubuntu и Debian
На этом с теорией все, переходим к практике.
В репозиториях Ubuntu/Debian лежит старая версия пакета 0.7.65, ставить все из репозиториев и довольствоваться тем что есть, это для слабоков, мы соберем более свежую версию, для этого будем компилить исходники, в данный момент доступна версия nginx 1.0.4, ее мы и будем ставить.
Существует 2 варианта установки nginx:
1) Установка поверх установленной ранее, более старой версии будет рассмотрен в данной статье.
2) Установка Nginx из исходных кодов в чистом виде.
Устанавливаем необходимые для компиляции пакеты и версию nginx из репозиториев:
Останавливаем демон:
Качаем исходники:
Распаковываем:
Переходим в директорию с распакованными исходниками:
Собираем и устанавливаем:
Запускаем полученное:
Переходим по адресу httр://ip_server и видим окно приветствия nginx набираем имя произвольной директории например httр://ip_server/nopage и видим страницу с ошибкой 404, в низу которой указана версия WEB сервера, которая ее сгенерировала, если там указана та версия, исходники которой вы выкачивали, значит все в норме.
Переходим к настройке конфигурационного файла
Мы будем устанавливать Web сервер Apache, нам необходимо установить сборку Apache2-mpm-itk, ее отличие от обычной, заключается в возможности Apache, запускать виртуальные хосты сервера с правами разных пользователей, это позволяет, при грамотной расстановке прав доступа на директории, избежать перехода из корневой директории одного сайта в другую. Если кратко, то на обычной сборке apache все хосты работают от пользователя www-data, а эта, позволяет запускать от разных пользователей, не имеющих доступа в корневые директории соседей по серверу.
Дожидаемся окончания установки, после завершения apache выдаст ошибку, такого содержания:
* Starting web server apache2 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Которая говорит нам о том, что 80й порт занят и он запуститься не может-это нормально, на восьмидесятом порту у нас висит nginx. Нам необходимо перенести Apache на другой порт, традиционно его переносят на порт 8080 (хотя можно на любой не занятый выше 1024го порта).
Для начала поправим порты:
По умолчанию там указано
Мы делаем:
Во многих мануалах предлагается после переноса порта, зарубить к нему доступ через iptables-это НЕ правильно и является, по сути, костыльным решением. Для чего его блокировать, если можно совсем не выставлять, мы сделаем так, чтобы Apache начал принимать и обрабатывать запросы только от localhost и одновременно стал недоступным снаружи, вот по этому мы и добавляем в Listen 127.0.0.1:8080
Сделаем настройки, чтобы апач, меньше выдавал о себе информации
Находим там строку:
ServerTokens OS
Меняем ее на:
ServerTokens Prod
Далее строку:
ServerSignature On
Меняем на:
ServerSignature Off
Сохраняем изменения, пробуем запустить Apache
Указываем новый пароль и его подтверждение для пользователя root (это администратор MySQL, а не системный пользователь)
В домашней директории создадим каталоги для файлов сервера, логов и временных файлов.
Предоставим пользователю example права на эти директории:
Т.к. у нас Nginx работает от пользователя www-data, то он не сможет получить доступ к содержимому домашней директории пользователя example, но при создании была создана одноименная группа, в нее нам необходимо добавить пользователя www-data.
Таким образом, в будущем при создании нового виртуального хоста нам необходимо добавить пользователя www-data в группу с именем нового пользователя.
Основным симптомом что вы этого не сделали-отсутствие изображений на странице, которую вы запрашиваете с вашего сервера т.к. Nginx читает только графические файлы, то из-за отсутствия прав доступа к ним, он сделать этого не сможет, и страница генерируется без изображений-решение, добавить пользователя www-data (от имени которого работает Nginx) в одноименною группу пользоваться, от имени которого работает виртуальный хост Apache!
Лирическое отступление.
Если не добавить пользователя www-data в группу example, то после того, как любая CMS будет залита на сервер, сайт будет отображаться без графики (т.е. графические файлы выдаваться не будут, потому что не достаточно прав доступа). Для устранения этой проблемы необходимо добавить пользователя www-data в группу пользователя, от имени которого работает виртуальный хост и перезапустить nginx. Попробуйте на досуге, понимание этого приходит после первого коряво выглядящего дизайна ;) в дальнейшем вопросов не возникает.
И вставляем в него то, что указано ниже, в вашем случае пути необходимо указывать свои:
Сохраняем изменения и выходим.
Теперь нам необходимо создать символическую ссылку, для того чтобы наш виртуальный хост заработал:
И перезапустим Nginx:
Также создадим символическую ссылку на файл example.org
Перезапустим Apache:
Теперь нам необходимо проверить работоспособность сервера, создадим в корневой директории сайта файл test.php с содержимым:
Должно выдать нечто подобное:

Это говорит о том что PHP5 на нашем сервере работает, дальше остается наращивать функционал, под нужные вам задачи.
Если на сервере необходимо организовать доступ по FTP, то рекомендую прочитать статью по настройке FTP сервера vsFTPd
На этом все.
Думаю что для многих эта статься окажется полезной и прольет свет на многие неясности в этом вопросе.
Сама задача не очень сложная, единственная проблема в том, что последний раз мне приходилось заниматься подобным-почти год назад, а многие вещи имеют свойство забываться.
В общем было решено установить Nginx как прокси-сервер для Apache, энджинск будет лопатить статику, а индеец, будет работать со скриптами.
Чтобы все это выглядело более понятно, прилагаю схему:

Все запросы приходят на сервер Nginx -он отдает статические данные (изображения (jpg, png, html и т.п.), далее он передает запрос на обработку скриптов WEB серверу Apache (PHP,cgi,pl и т.п.), скрипты выполняют запросы к MySQL и получив оттуда данные, возвращают их Nginx, тот, в свою очередь, отдает готовую страницу пользователям. Все просто.
Данный мануал подходит для всех версий Ubuntu и Debian
На этом с теорией все, переходим к практике.
Установка Nginx
В репозиториях Ubuntu/Debian лежит старая версия пакета 0.7.65, ставить все из репозиториев и довольствоваться тем что есть, это для слабоков, мы соберем более свежую версию, для этого будем компилить исходники, в данный момент доступна версия nginx 1.0.4, ее мы и будем ставить.
Существует 2 варианта установки nginx:
1) Установка поверх установленной ранее, более старой версии будет рассмотрен в данной статье.
2) Установка Nginx из исходных кодов в чистом виде.
Установка Nginx, поверх более старой версии
sudo su
Устанавливаем необходимые для компиляции пакеты и версию nginx из репозиториев:
aptitude install libpcre3-dev libcurl4-openssl-dev gcc nginx
Останавливаем демон:
/etc/init.d/nginx stop
Качаем исходники:
wget sysoev.ru/nginx/nginx-1.0.4.tar.gz
Распаковываем:
tar -zxvf nginx-1.0.4.tar.gz
Переходим в директорию с распакованными исходниками:
cd nginx-1.0.4
Собираем и устанавливаем:
./configure --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid \
--user=www-data \
--group=www-data \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-mail \
--with-mail_ssl_module
make
make install
Запускаем полученное:
/etc/init.d/nginx start
Переходим по адресу httр://ip_server и видим окно приветствия nginx набираем имя произвольной директории например httр://ip_server/nopage и видим страницу с ошибкой 404, в низу которой указана версия WEB сервера, которая ее сгенерировала, если там указана та версия, исходники которой вы выкачивали, значит все в норме.
Переходим к настройке конфигурационного файла
nano /etc/nginx/nginx.conf
user www-data;
worker_processes 2; # Обычно устанавливается по количеству ядер в процессоре
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/nginx.access.log;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on; #Использование сжатия статики (Пример: CSS)
gzip_proxied any;
gzip_min_length 1100;
gzip_http_version 1.0;
gzip_buffers 4 8k;
gzip_comp_level 4; #Степень сжатия (больше ставить смысла нет, нагрузка на ЦПУ растет, а файлы меньше не практически становятся)
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/*;
}
Установка Apache-mpm-itk
Немного теории:Мы будем устанавливать Web сервер Apache, нам необходимо установить сборку Apache2-mpm-itk, ее отличие от обычной, заключается в возможности Apache, запускать виртуальные хосты сервера с правами разных пользователей, это позволяет, при грамотной расстановке прав доступа на директории, избежать перехода из корневой директории одного сайта в другую. Если кратко, то на обычной сборке apache все хосты работают от пользователя www-data, а эта, позволяет запускать от разных пользователей, не имеющих доступа в корневые директории соседей по серверу.
sudo su
aptitude install apache2-mpm-itk libapache2-mod-rpaf
Дожидаемся окончания установки, после завершения apache выдаст ошибку, такого содержания:
* Starting web server apache2 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Которая говорит нам о том, что 80й порт занят и он запуститься не может-это нормально, на восьмидесятом порту у нас висит nginx. Нам необходимо перенести Apache на другой порт, традиционно его переносят на порт 8080 (хотя можно на любой не занятый выше 1024го порта).
Для начала поправим порты:
nano /etc/apache2/ports.conf
По умолчанию там указано
NameVirtualHost *:80
Listen 80
Мы делаем:
NameVirtualHost *:8080
Listen 127.0.0.1:8080
Во многих мануалах предлагается после переноса порта, зарубить к нему доступ через iptables-это НЕ правильно и является, по сути, костыльным решением. Для чего его блокировать, если можно совсем не выставлять, мы сделаем так, чтобы Apache начал принимать и обрабатывать запросы только от localhost и одновременно стал недоступным снаружи, вот по этому мы и добавляем в Listen 127.0.0.1:8080
Сделаем настройки, чтобы апач, меньше выдавал о себе информации
nano /etc/apache2/conf.d/security
Находим там строку:
ServerTokens OS
Меняем ее на:
ServerTokens Prod
Далее строку:
ServerSignature On
Меняем на:
ServerSignature Off
Сохраняем изменения, пробуем запустить Apache
/etc/init.d/apache2 start
Установка PHP5
aptitude install php5 libapache2-mod-php5 php5-mysql php5-snmp php5-gd php5-memcache php5-imagick php5-recode php5-xmlrpc php5-xsl php5-mcrypt php5-curl php-pear php5-imap -y
Устанавливаем MySQL
aptitude install mysql-server mysql-client
Указываем новый пароль и его подтверждение для пользователя root (это администратор MySQL, а не системный пользователь)
Настройка виртуального хоста Nginx
Теперь создадим первый виртуальный хост, для этого нам понадобится выполнить ряд действий:- 1-создать нового пользователя
- 2-создать виртуальный хост Nginx
- 3-создать виртуальный хост Apache
Создаем пользователя нашего тестового сайта example.org
sudo useradd example -b /home/ -m -U -s /bin/false
В домашней директории создадим каталоги для файлов сервера, логов и временных файлов.
sudo mkdir -p -m 754 /home/example/www
sudo mkdir -p -m 777 /home/example/tmp
sudo mkdir -p -m 754 /home/example/logs
Предоставим пользователю example права на эти директории:
sudo chown -R example: /home/example/www/
sudo chown -R example: /home/example/tmp/
sudo chown -R example: /home/example/logs/
Т.к. у нас Nginx работает от пользователя www-data, то он не сможет получить доступ к содержимому домашней директории пользователя example, но при создании была создана одноименная группа, в нее нам необходимо добавить пользователя www-data.
usermod -a -G example www-data
Таким образом, в будущем при создании нового виртуального хоста нам необходимо добавить пользователя www-data в группу с именем нового пользователя.
Основным симптомом что вы этого не сделали-отсутствие изображений на странице, которую вы запрашиваете с вашего сервера т.к. Nginx читает только графические файлы, то из-за отсутствия прав доступа к ним, он сделать этого не сможет, и страница генерируется без изображений-решение, добавить пользователя www-data (от имени которого работает Nginx) в одноименною группу пользоваться, от имени которого работает виртуальный хост Apache!
Лирическое отступление.
Если не добавить пользователя www-data в группу example, то после того, как любая CMS будет залита на сервер, сайт будет отображаться без графики (т.е. графические файлы выдаваться не будут, потому что не достаточно прав доступа). Для устранения этой проблемы необходимо добавить пользователя www-data в группу пользователя, от имени которого работает виртуальный хост и перезапустить nginx. Попробуйте на досуге, понимание этого приходит после первого коряво выглядящего дизайна ;) в дальнейшем вопросов не возникает.
Создаем виртуальный хост Nginx
sudo nano /etc/nginx/sites-available/example.org
И вставляем в него то, что указано ниже, в вашем случае пути необходимо указывать свои:
server {
listen 80;
server_name example.org www.example.org;
access_log /home/example/logs/nginx_access.log;
error_log /home/example/logs/nginx_error.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|docx|xlsx)$ {
root /home/example/www/;
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;
}
}
Сохраняем изменения и выходим.
Теперь нам необходимо создать символическую ссылку, для того чтобы наш виртуальный хост заработал:
sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/
И перезапустим Nginx:
sudo /etc/init.d/nginx restart
Настройки виртуального хоста Apache
sudo nano /etc/apache2/sites-available/example.org
<VirtualHost *:8080>
DocumentRoot /home/example/www
ServerAdmin admin@example.org
ServerName example.org
ServerAlias www.example.org
ErrorLog /home/example/logs/apache_error.log
CustomLog /home/example/logs/apache_access.log combined
<Directory />
#Order Deny,Allow
#Deny from all
Options -ExecCGI -Indexes -Includes +FollowSymLinks
AllowOverride All
<Limit GET POST>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
AssignUserId www-data example
php_admin_value open_basedir "/home/example/:."
php_admin_value upload_tmp_dir "/home/example/tmp"
php_admin_value session.save_path "/home/example/tmp"
</VirtualHost>
Также создадим символическую ссылку на файл example.org
sudo ln -s /etc/apache2/sites-available/example.org /etc/apache2/sites-enabled/
Перезапустим Apache:
/etc/init.d/apache2 restart
Теперь нам необходимо проверить работоспособность сервера, создадим в корневой директории сайта файл test.php с содержимым:
<?php
phpinfo();
?>
Должно выдать нечто подобное:

Это говорит о том что PHP5 на нашем сервере работает, дальше остается наращивать функционал, под нужные вам задачи.
Если на сервере необходимо организовать доступ по FTP, то рекомендую прочитать статью по настройке FTP сервера vsFTPd
На этом все.
176 комментариев
вот здесь ошибка, нужно указать вместо php5-snm — php5-snmp
Очепятка есть
Исправьте на apache2
Nginx может работать в режиме прокси-сервера, подробнее об этом можно прочитать в документации, на сайте разработчиков nginx.org
сервер выдает ошибку
директории по пути /home/blog/logs/ существуют?
Права на запись пользователю ww-data есть?
Пытаюсь поставить livestreet. Кое-как сделал, чтобы шаблон отображался, осталась проблема — не работает ЧПУ. При заходе куда угодно, кроме главной страницы, выдает ошибку 500.
Демонстрирую свою настройку nginx
Nginx тут совершенно не причем, он работает как прокси сервер.
У вас выдает ошибку 500 Apache, mod_rewrite подключен?
Что написано в логах?
Вот частично файл nginx.error из папки logs
Вот файл apache_error.log из той же директории
А вот файл error_log от туда же
закопипастите мой конфигурационный файл и добейтесь работы с ним
Конфигурационный файл и так ваш использую, не знаю, что не так. Или файл не тот..?)
sudo a2enmod (потом там же пишешь и рестартуешь сервак)
rewrite
sudo service apache2 restart
ps :D
AddDefaultCharset UTF-8
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php
<Files «plugins.dat»>
order allow,deny
deny from all
А то у меня VPS слабый, даже в такой связке подтормаживает.
EACCELERATOR заменил на xcache и установил с помощью apt-get install
MemCache установил так же
Теперь вместо 1-1.5 секунды страница загружается 0.25-0.5 секунд. Это очень хороший прирост!
Artful если сочтёте нужным добавьте вот это в статью
Но тенденция мне нравится, читатели, понемногу, начали думать, как можно улучшить функционал!
Какие все-таки права необходимо ставить на папки? www-data добавлен в группу пользователя, права рекурсивно 754 на директории, 644 на сам файл, владелец site.ru:site.ru
2) Пользователь www-data добавлен в группу, от имени которой запускается вирт. хост?
3) Какие права на файл, который вы пытаетесь запросить с web севрера?
Виртуальный хост nginx:
Виртульаный хост apache:
cat /etc/group :
При такой конфигурации Apache работает отлично, с правами проблем нет, а вот nginx не хочет отдавать статитику не обращаясь к apache.
Но вот судя по строке из лога попробуйте дать права 655 на файлы
Используемые версии: Apache 2.2.22, nginx 1.2.1 (из репозитория самого nginx). Есть ли смысл пробовать откатить nginx, в надежде, что проблема в нем?
В логах apache пишется следующее:
В логах nginx пишется следующее:
При обращении к test.mysite.com/phpmyadmin — выводится форма с запросом логина и пароля, НО БЕЗ ИЗОБРАЖЕНИЙ.
При обращении к 127.0.0.1//phpmyadmin — выводится ошибка 404 Not Found.
Выходит, nginx пытается выдавать статику с адреса 127.0.0.1//phpmyadmin, но так как там 404 Not Found, то выдавать-то и нечего.
Подскажите, пожалуйста, что я делаю не так и/или что нужно сделать дополнительно к уже содеянному, дабы картинки нормально выводились на phpmyadmin и всём прочем?
С уважением, Геннадий.
Вы решительный, но не внимательный! Посмотрите в статье, там этот момент освящен.
Все пропускают этот абзац, я его теперь еще и выделил… :)
Возьмите себе за правило, сначала залезать в логи web сервера, из них можно узнать 99% информации, если бы вы это сделали, то там удивили что у nginx не хватает прав доступа, на чтение файлов. Error.log-очень полезная штука…
P.S. Прошу прощения, я запутался.
С добавлением в группу-именно так.
Прочитав ваш комментарий я сам запутался… :)
apache — pastebin.com/rN6cxBQC
в /home/xenti/logs -везде пустота
в /var/log/apache/error.log — [Wed Sep 05 22:32:42 2012] [notice] caught SIGTERM, shutting down
[Wed Sep 05 22:32:43 2012] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.2 with Suhosin-Patch configured — resuming normal operations
в /var/log/nginx/error.log — пустота
/home/xenti/logs/nginx_error.log
Попробуйте ее комментировать.
Открываем sudo nano /etc/apache2/sites-available/example.org
И добавляем перед
<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-Real-IP
Перезапускаем Апач
P.S Я новичек в этом деле
Вот посмотрите в статье howitmake.ru/blog/ubuntu/80.html там был пример подключения сторонних репозиториев, от nginx.com
при заходе по доменному имени выводит
явно апач работает.
а если заходить по ип то
работает nginx, также не могу ничего открыть с закинутых файлов сайта. Хотя вывод test.php выводило.
По поводу Apapche добавьте в apache2.conf следующее:
По второму пункту:
Нет прав доступа к директории, посмотрите error.log виртуального хоста, там все написано.
По третьему пункту:
виртуальный хост создан, но думаю что-то путями, также обычно все написано в логах виртуального хоста nginx.
а какие права должны быть непосредственно на файлах ?
dima:www-data или dima:dima?
Эти вопросы поднимались не сколько раз в комментариях, посмотрите комемнты выше…
читал у вас статью где описывается как прикрутить если установлен nginx но там не соответствие с данными настройками. Тут как то по другому?
Там указано было не выбирать. Теперь нужно приложить ума ))
Кстати про Apache там тоже есть, даже картинка присутствует… :)
какие то ошибки и как решать а не в курсе, пока что обучаюсь.
в углу видно что картинка не отображается. Думаю права, но куда их ставить то?
phpmyadmin запускается по адресу example.org/phpmyadmin Но ясно дело что в директории example/www/нету phpmyadmin
вот как то так.
странички сайта загружаются, фото видны.
подскажите куда капать?
По поводу путей к phpmyadmin посмотрите в конфигах Apache, там все есть.
А по поводу допиливания phpmyadmin так вам и ссылки приложены, что делать и даже ссылка на документацию.
В файле Указал: однако Nginx не проксирует, почему — непонятно…
https соединение или установлено или не установлено, третьего варианта нет…
Nginx Vhost:
что в логах по этому поводу?
у проблемы может быть 2 варианта:
1) нет доступа к ключу
2) глючит сам web сервер
Требовалось указать:
А именно: site.ru — мой сайт, вместо www.example.com (стили страниц стали отображаться корректно) ещё по части прокси нашёл здесь: brainstorm.name/node/462.html в принципе всё теперь работает, что и требовалось доказать. Просто было необходимо проявить внимание к деталям. Https в Apache настраивать не стал, чтобы nginx мог слушать порт 443 я настроил в файле Listen 0.0.0.0:444 (по причине того что иначе apache занимает порт 443 под нужды ip v6 и данный порт становится для nginx'a недоступен), как скомпилировать apache без ip v6 можно почитать здесь: www.apachelounge.com/viewtopic.php?p=14560
но у меня тоже есть вопрос :)
при команде — /etc/init.d/apache2 restart
выдает:
Syntax error on line 23 of /etc/apache2/sites-enabled/teamspeak.danfis.eu:
Invalid command 'AssignUserId', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
Вы точно установили apache2-mpm-itk, просто обычная версия Apache не поддерживает данную директиву.
Правда статья писалась довольно давно и что-то могло измениться, проверить не могу т.к. я от данной схемы отказался, оставив только Nginx.
запускаю инсталятор site.ru, картинки отображаются, а вот кнопка «Далее» не срабатывает, если обратиться напрямую к апачу — в адресной строке прописать порт апача: site.ru:81, то кнопка «Далее» начинает действовать
[16/Mar/2013:10:12:26 +0400] "-" 400 0 "-" "-" "-"
[16/Mar/2013:10:12:26 +0400] "-" 400 0 "-" "-" "-"
[16/Mar/2013:10:12:26 +0400] "-" 400 0 "-" "-" "-"
Кстати данные сообщения "-" 400 0 "-"… в access.log показываются при обращении с chrome, в случае же Firefox таких сообщений нет, однако всё равно не получается продолжить установку joomla 3
Просто данная статья писалась довольно давно и имеет смысл только в крайне-специфическом круге задач.
Рекомендую ознакомится с соответствующей статьёй по настройке Nginx+php-fpm+mysql+memcahed все это работает шустрее чем на Apache
Вопрос может показатся слегка туповатым — прокатит ли вариант просто поставить nginx из репозитория, без php5-fpm и повесить апач на 8080 а икс на 80? Я почему спрашиваю, как то уже хотел так сделать sudo aptitude install nginx php5-fpm но там появилось сообщение хотите ли вы что то удалить, я решил тогда не рисковать ибо времени было в притык. Вроде fpm нужен только есть используется голый апач? Или можно смело ставить nginx + php5-fpm не опасаясь, что он потрет этот апаче хэндлер?
Restarting nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
nginx.
Restarting nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx.
перевод
Перезапуск nginx: nginx: файл конфигурации /etc/nginx/nginx.conf синтаксис ok
nginx: файл конфигурации /etc/nginx/nginx.conf проверка прошла успешно
nginx.
далее делаю команду
echo '<?php phpinfo(); ?>' > /home/mysite/www/index.php
выдает ошибку 404((
Я хочу чтобы вы сами догадались ;)
Ошибка 404 что означает?
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
80/tcp open http nginx 1.0.4
8080/tcp open http Apache httpd
Service Info: OS: Linux
Меня смущает вот это (httpd) это так и должно быть?
Права доступа позволяют его читать пользователю www-data?
httpd это нормально!
-rwxrwxrwx 1 root root 22 марта 22 13:27 index.php
Смотрите логи, там все написано, почему скрипт не отрабатывает
а эту инструкцию можно использовать в качестве то что у меня чистый сервер установлен только SSH и все
Какой IP укажите, тот и будет работать.
howitmake.ru/blog/FAQ/108.html
сами DNS сервера можно легко нагуглить.
вот настройки nginx
/etc/nginx/sites-available/mysite
а это настройки apache2
/etc/apache2/sites-available/mysite
В чем загвоздка?
Ваш запрос не содержит имя виртуального хоста, вот вас и перебрасывает на дефортный хост.
А по этому уроку хоть лбом бейся не работало(((
Перечитал все возможные варианты, результат 0
Смотрите логи по поводу файла test.php
11.2.1.4 — - [25/Jun/2013:13:11:09 +0300] «GET /context.php?key=75b417c81730a9015547e6926e813997&type=index&format=JSON HTTP/1.1 500 5 „87.222.144.116:81/index.php“ „Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36“
из index.php делается аякс запрос. Гдебы копнуть-то?
Ну или вариант номер 2-сам скрипт кривой.
Заранеее благодарен
Шаблоны конфигурационных файлов виртуальных хостов, уже есть в статье, просто поменяйте указанные в них доменные имена, на те что нужны вам, ну путь к корневым директориям сайтов-если требуется…
Вопрос поднимался
дать права…
Самый безопасный сервер-который выключен из розетки.
А если серьезно, почитайте что дают эти права…
Вижу несколько процессов apache2 запущенных от рута. Это правильно что от рута?
nginx
apache
Естественно, пути к файлам логов указываем свои.
Спасибо за хорошую статью.
Возникла проблемка с php директивой include_path.
Юзаю Yii и php 5.4.
Выдает ошибку
Полагаю, надо для каждого хоста прописывать еще include_path. Посоветуете что в данном случае будет являться решением проблемы?
При создании виртуального хоста строка с open_basedir не нужна.