Где находится httpd.conf в GCE Apache?

У меня есть простое приложение Django, которое я хотел бы запустить в производство на сервере Google Compute Engine (GCE). Сервер GCE работает под управлением Debian-Wheezy. Я установил Apache 2, Django 1.6.2 и mod-wsgi на сервер и установил правило брандмауэра, которое открывает порт tcp:80.

Я пытаюсь следовать инструкциям на https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/. Однако мне не удалось найти файл httpd.conf для изменения.

Вопросы:

  1. Где я могу найти этот httpd.conf файл для изменения?
  2. Найдя, нужно ли мне просто отредактировать его, как показано на веб-странице, и тогда любые посещения внешнего IP-адреса экземпляра GCE будут направлены в мое приложение Django?

Изменить 1:

В моем корне у меня есть следующие папки:

bin  boot  build  dev  etc  home  initrd.img  lib  lib64  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var  vmlinuz

Следующие советы от: http://commanigy.com/blog/2011/06/08/finding-apache-configuration-file-httpd-conf-location Я запустил следующее:

$ ps -ef | grep apache

который возвращается

jason@instance-1:/$ ps -ef | grep apache
root     10492     1  0 13:33 ?        00:00:00 /usr/sbin/apache2 -k start
www-data 10495 10492  0 13:33 ?        00:00:00 /usr/sbin/apache2 -k start
www-data 10496 10492  0 13:33 ?        00:00:00 /usr/sbin/apache2 -k start
www-data 10497 10492  0 13:33 ?        00:00:00 /usr/sbin/apache2 -k start
jason    11669 11529  0 16:54 pts/1    00:00:00 grep apache

а потом

$ /usr/sbin/apache2 -V

который возвращается

Server version: Apache/2.2.22 (Debian)
Server built:   Feb  1 2014 21:26:17
Server's Module Magic Number: 20---edited-just-in-case
Server loaded:  APR 1.4.6, APR-Util 1.4.1
Compiled using: APR 1.4.6, APR-Util 1.4.1
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....

 -D APACHE_MPM_DIR="server/mpm/worker"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

Согласно этому веб-сайту, файл, который я на самом деле ищу, это apache2.conf, а не httpd.conf, хотя это противоречит документации Django...

Редактировать 2

Чтобы ответить на вопрос @ls97, в /usr/sbin/apache2 есть символическая ссылка, которая указывает на

apache2 -> ../lib/apache2/mpm-worker/apache2

Если я перейду к этому месту и запустите $ ls -al я получил

  total 496
  drwxr-xr-x 2 root root   4096 Apr 18 13:27 .
  drwxr-xr-x 7 root root   4096 Apr 18 13:27 ..
  -rwxr-xr-x 1 root root 497808 Feb  1 21:27 apache2

И apache2 Элемент в этом месте не является каталогом.

2 ответа

Решение

apache2.conf обычно под /etc/apache2/ и является основным файлом конфигурации apache. Загружает httpd.conf где вы должны разместить свои конфигурации (а не в основном файле).

Обновить:

Итак, в /etc/apache2/apache2.conf file, у вас наверняка есть строки вроде этих 2 где-то:

# Include all the user configurations:
Include httpd.conf

Последний будет включать /etc/apache2/httpd.conf файл, который, вероятно, является пустым файлом (или почти) при новой установке. Если он не существует, вы можете создать новый и добавить:

NameVirtualHost *:80
Listen 80

Вы можете добавить свои глобальные конфигурации и конфигурации виртуальных хостов туда, как указано в руководстве по django. Как я знаю, часть virtualhost не находится в учебнике по django (потому что она не связана с django, но apache), вот начальный пример с рабочего сайта django:

<VirtualHost *:80>  # will listen on port 80 - as defined above

    ServerAdmin your@email.com
    ServerName your.site.com     # will serve requests on this url

    DocumentRoot /path/to/your/djangoproject  # like /home/username/projects/myproject


# complete with the rest of the django tutorial configuration under "Serving Files" 
# to serve static files using the same server as I think you have only 1 server available

# close the virtualhost after django tutorial configurations
</VirtualHost>

Вам, конечно, нужно установить и включить модуль wsgi на apache. Обычно он уже есть, и вам нужно только включить его с помощью: sudo a2enmod wsgi, Не уверен насчет этого, но я полагаю, что он включен для вас GCE на основе вашей конфигурации для python/django.

Также будьте осторожны, если вы используете Apache до 2.4, в django есть примечание, чтобы изменить Require all granted с Allow from all и выберите порядок разрешений.

Я думаю, что это самый простой способ сделать это. Другой метод, который я предпочитаю для нескольких виртуальных хостов, это использовать каталог sites-available хранить 1 файл на vhost и разрешить выборочную ссылку на них sites-enabled, Вы можете найти примеры того, как это сделать, в документации Apache, но работая в httpd.conf тоже подойдет для небольшого количества сайтов.

httpd.conf - это основной файл конфигурации для Apache. Он находится под apache/conf, и вы можете редактировать файл, как показано (я не эксперт, но похоже, что их изменения должны работать).

Я помню, что читал, что вы рискуете потерять изменения в httpd.conf при обновлении apache, если вы редактируете файл напрямую, но это может быть только для пользователей XAMPP. Я не могу найти этот источник снова. В любом случае сделайте резервную копию файла конфигурации до и после его редактирования.

Другие вопросы по тегам