httpd.conf 在 GCE Apache 中位于哪里?

httpd.conf 在 GCE Apache 中位于哪里?

我有一个简单的 Django 应用程序,我想将其推送到生产环境Google 计算引擎(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. 一旦找到,我是否只需按照网页上显示的方式对其进行编辑,然后对 GCE 实例的外部 IP 地址的任何访问都将被定向到我的 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此位置的项目不是目录。

答案1

apache2.conf通常位于 下/etc/apache2/,是 apache 的主配置文件。它会加载httpd.conf您应该放置配置的位置(而不是在主文件中)。

更新:

因此,在/etc/apache2/apache2.conf文件中,某处肯定有类似这两行的内容:

# Include all the user configurations:
Include httpd.conf

最后一个将包含/etc/apache2/httpd.conf文件,在全新安装时,该文件可能是一个空文件(或几乎是空文件)。如果不存在,您可以创建一个新文件并添加:

NameVirtualHost *:80
Listen 80

您可以在此处添加全局配置和虚拟主机配置,如 django 教程中所述。据我所知,虚拟主机部分不在 django 教程中(因为它与 django 无关,而是与 apache 有关),下面是来自一个正常运行的 django 站点的起始示例:

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

    ServerAdmin [email protected]
    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>

当然,您需要在 apache 上安装并启用 wsgi 模块。通常它已经存在,您只需使用以下命令启用它:sudo a2enmod wsgi。我不确定,但我认为 GCE 会根据您的 python/django 配置为您启用它。

还要注意,如果您使用的是 2.4 之前的 apache,django 教程中有一个说明,可更改Require all grantedAllow from all选择权限顺序。

我认为这是最简单的方法。对于多个虚拟主机,我更喜欢的另一种方法是使用一个名为的目录sites-available来存储每个虚拟主机的 1 个文件,并允许它们有选择地链接到sites-enabled。您可以在 apache 文档中找到如何执行此操作的示例,但httpd.conf对于少数网站来说,在 中工作也是可以的。

答案2

httpd.conf 是 Apache 的主要配置文件。它位于 apache/conf 下,您可以按照所示编辑该文件(我不是专家,但看起来他们的编辑应该有效)。

我记得读到过,如果直接编辑文件,则在 apache 更新时可能会丢失对 httpd.conf 的更改,但这可能仅适用于 XAMPP 用户。我似乎再也找不到这个来源了。无论如何,请在编辑配置文件之前和之后对其进行备份。

相关内容