CentOs vhost показывает страницу Apache по умолчанию [закрыто]

1

Я использую CentOs 6.2. На этом сервере я хочу разместить 1 сайт. Я создал vhost в httpd.conf. Вы можете увидеть настройки ниже.

Проблема в том, что когда я захожу в домен, я получаю страницу Apache по умолчанию. Я перезапустил httpd deamon. Кто-нибудь знает, что я могу делать не так?

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin helpdesk@***.nl
    DocumentRoot /var/website
    ServerName ***.nl
    #ServerAlias www.***.nl
    ErrorLog logs/***.nl-error_log
    CustomLog logs/***.nl-access_log common
</VirtualHost>

РЕДАКТИРОВАТЬ: Я проверил журналы: Доступ к журналу:

77.160.172.88 - - [27/Nov/2012:20:37:10 +0100] "GET / HTTP/1.1" 403 5039
77.160.172.88 - - [27/Nov/2012:20:37:11 +0100] "GET /favicon.ico HTTP/1.1" 403 295

Журнал ошибок:

[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /index.php denied
[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /index.html denied
[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /index.html.var denied
[Mon Nov 26 22:37:46 2012] [error] [client 77.160.172.88] (13)Permission denied: access to /favicon.ico denied

Разрешения:

[root@srv2 website]# ls -la
total 17536
drwx------ 10 kvdp kvdp     4096 Nov 26 23:01 .
drwxr-xr-x 20 root root     4096 Nov 26 22:30 ..
-rw-r--r--  1 kvdp kvdp       37 Nov 26 22:31 35a12fb7ab5a.html
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 400.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 401.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 403.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 404.shtml
-rw-r--r--  1 kvdp kvdp      515 Nov 26 22:31 500.shtml
-rw-r--r--  1 kvdp kvdp 17816103 Nov 26 22:41 admin_kvdp.sql
drw-r--r--  2 kvdp kvdp     4096 Nov 26 22:31 _api
drw-r--r-- 13 kvdp kvdp     4096 Nov 26 22:33 beheer
drw-r--r--  2 kvdp kvdp     4096 Nov 26 22:33 cgi-bin
drw-r--r--  2 kvdp kvdp     4096 Nov 26 22:31 _config
-rw-r--r--  1 kvdp kvdp      728 Nov 26 22:31 controller.inc.php
-rw-r--r--  1 kvdp kvdp      813 Nov 26 22:31 controller.view.inc.php
-rw-r--r--  1 kvdp kvdp       53 Nov 26 22:31 google3f6160378ab03426.html
-rw-r--r--  1 kvdp kvdp      611 Nov 26 22:31 .htaccess
-rw-r--r--  1 kvdp kvdp     1978 Nov 26 22:31 index.php
drw-r--r--  3 kvdp kvdp     4096 Nov 26 22:31 _libs
drw-r--r--  6 kvdp kvdp     4096 Nov 26 22:31 _models
-rw-r--r--  1 kvdp kvdp      232 Nov 26 22:31 robots.txt
-rw-r--r--  1 kvdp kvdp       11 Nov 26 22:31 test.php
drw-r--r--  4 kvdp kvdp     4096 Nov 26 22:35 upload
drw-r--r--  5 kvdp kvdp     4096 Nov 26 22:31 _views
Бернхард
источник
Вы уже поместили index.html в / var / website?
Адам Баткин
@AdamBatkin Это не должно быть нужно. Я хотел бы взглянуть на журналы веб-сервера, чтобы увидеть, на какой виртуальный хост направляется запрос.
CVn
лично вы делаете это сложнее, чем нужно. нет необходимости в vhost. просто сбросьте свой «веб-сайт» в корневой каталог документов.
au_stan
Apache (по крайней мере, с CentOS) поставляется с модулем, который отображает страницу по умолчанию, когда нет index.html. Кроме того, вы можете попробовать запросить конкретное имя файла (например, what / somefile.html ) и посмотреть, сработает ли это
Адам Баткин
Я уже отключил SELinux. ТАК SELinux не может быть проблемой. Я обновил свой пост и добавил журналы и разрешения
Бернхард

Ответы:

3

Сначала убедитесь, что учетная запись пользователя, на которой работает Apache, имеет доступ к вашей websiteпапке (ему также потребуется пройти через все папки над ним в пути):

ps aux | grep httpd

Вы должны увидеть такие строки:

apache    1336  0.0  1.1 282772  6008 ?        S    03:24   0:00 /usr/sbin/httpd
apache    1338  0.0  1.1 282772  6008 ?        S    03:24   0:00 /usr/sbin/httpd

Первый столбец - это учетная запись пользователя, которая должна иметь доступ к вашим папкам.

Если все выглядит хорошо, проверьте, используете ли вы SELinux. Если это так, ваш /var/websiteкаталог, вероятно, все еще находится в default_tконтексте безопасности. Проверьте это с помощью:

ls -Z /var/website

Вы, вероятно, увидите что-то вроде этого:

drwxr-xr-x  root root user_u:object_r:default_t        website

Если это так, вы можете изменить контекст безопасности с помощью chconкоманды:

chcon -Rv --type=httpd_sys_content_t /var/website

Кроме того, вы можете отключить SELinux для Apache (от имени root):

  1. Отредактируйте /etc/selinux/targeted/booleansи установите httpd_disable_transравным 1.
  2. Запустите, setsebool httpd_disable_trans 1чтобы убедиться, что логическое значение установлено для текущего сеанса.
  3. Перезапустите Apache с помощью service httpd restart.

Или, если это сервер разработки, и вы не хотите запускать SELinux, вы можете эффективно отключить его, установив его в «разрешающий» режим (с правами root):

  1. Отредактируйте /etc/selinux/configи установите SELINUXравным permissive.
  2. Перезагрузка.
  3. Запустите, getenforceчтобы убедиться, что SELinux находится в разрешающем режиме.

В вашем случае проблема заключается в этой строке:

[root@srv2 website]# ls -la
total 17536
drwx------ 10 kvdp kvdp     4096 Nov 26 23:01 .

Это означает, что только ваша учетная запись пользователя ( kvdp) имеет доступ к папке. Выполните следующую команду в вашей /var/websiteпапке, чтобы исправить ситуацию:

chmod go+rx .
Джастин ᚅᚔᚈᚄᚒᚔ
источник
Пожалуйста, не отключайте SELinux. Установите его на «разрешающий», но оставьте его включенным. Если вы отключите его, а затем захотите включить, даже в разрешающем режиме, у вас будет плохое время.
Джон
@Джон: Ответ отредактирован, хотя я должен сыграть здесь адвоката дьявола и спросить: зачем кому-то снова хотеть включить SELinux? :)
Джастин ᚅᚔᚈᚄᚒᚔ
Конечно, я не вернул SELinux обратно в режим принуждения, но это не за гранью воображения, что захочет какая-то бедная развратная душа. Например, люди, поддерживающие это ...
Джон
Я уже отключил SELinux. ТАК SELinux не может быть проблемой. Я обновил свой пост и добавил логи и разрешения
Бернхард
@ Бернхард: см. Мое редактирование. У вас есть проблема с разрешениями, запустите команду в конце моего ответа, чтобы исправить ее.
Джастин ᚅᚔᚈᚄᚒᚔ
0

Здесь есть пара потенциальных проблем. Как сказал Адам, вам может понадобиться файл index.html в / var / website. Поскольку это не каталог по умолчанию, вам также может понадобиться проверить разрешения для этого каталога (вы получите страницу с ошибкой, если процесс httpd не сможет прочитать файлы в нем). Последнее, что я могу вспомнить, это то, что у вас SELinux в принудительном режиме и этот каталог не помечен в правильном контексте.

Джон
источник
Я уже отключил SELinux. ТАК SELinux не может быть проблемой. Я обновил свой пост и добавил журналы и разрешения
Бернхард
0

У вас установлен php5, верно? Если вы не Apache не можете обслуживать страницы PHP, и вы вернетесь к стандартному «Добро пожаловать в Apache!» стр.

Я ничем не пользовался CentOS, поэтому я немного ржавый. Разве веб-файлы не принадлежат пользователю веб-сервера или, по крайней мере, читаются пользователем apache? Если веб-сервер не может прочитать файл, он также может объяснить поведение, которое вы видите. Похоже, что из ваших журналов. Веб-сервер получает доступ к вашему веб-каталогу.

Jguy
источник
Да, у меня установлен PHP5, так что это не проблема. И если я не ошибаюсь, файлы доступны для чтения Apache
Бернхард