Apache/Nginx 文档根环境变量

Apache/Nginx 文档根环境变量

Apache/Nginx“默认”文档根路径通常是,/var/www/html但理论上这可能明天会改变。

为其拥有一个发行版默认和公共维护的环境变量(而不是自己创建一个,当然是小写的,这样我就不会与现有的大写环境变量发生冲突)会让我轻松很多因为那样我就不需要做:

cat <<-EOF >> "$HOME"/.profile
    export drt="/var/www/html"

    drt() {
        cd $drt/
    }
EOF

文档根目录在任何常见发行版中都有 envar 吗?尤其是 Debian/Arch?

答案1

这是一个想法,因为我没有发现环境变量的证据——只是各种发行版中的默认配置:

case $(lsb_release -i) in
  (*Debian) conf=/etc/apache2/sites-available/000-default.conf;;
  (*Arch)   conf=/etc/httpd/conf/httpd.conf;;
esac
awk '/^[^#]*DocumentRoot/ { print "export drt=\""$2"\"" ORS 
                                  "drt() {" ORS 
                                  "  cd \"$drt\"/" ORS 
                                  "}" }' "$conf" >> "$HOME"/.profile

每个发行版都可以决定默认值是什么,因此即使上述方法也需要知道基本 HTTPD 配置文件在哪里。

答案2

在 Debian 中,有很多 Apache 环境变量,但没有用于文档根目录的环境变量。

所做/usr/sbin/apachectl的是:

  1. 查找APACHE_CONFDIR并将其设置为默认值(/etc/apache2如果未设置)。

  2. 查找APACHE_ENVVARS(环境变量文件)并将其设置为默认值("$APACHE_CONFDIR/envvars"如果未设置)。然后获取该文件。

  3. 修改APACHE_ARGUMENTS以包含配置目录的路径(如果它被覆盖)。

  4. 设置二进制文件的默认路径/usr/sbin/apache2

  5. 设置一些其他变量...

默认环境变量文件包含以下变量:

root@x250:/# grep export /etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2$SUFFIX/apache2.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
export LANG=C
export LANG
#export APACHE_LYNX='www-browser -dump'
#export APACHE_ARGUMENTS=''
#export APACHE2_MAINTSCRIPT_DEBUG=1

所以你可以

  • 添加变量“ MY_HACKED_APACHE_DOCUMENT_ROOT/etc/apache2/envvars并修改您的 *.conf 文件
  • 或走私您的路径APACHE_ARGUMENTS并检查它/将其设置在修改后的 *.conf 中<IfDefine>
  • 或者将配置目录更改APACHE_CONFDIR为不同的路径
  • <VirtualHost>或者包含一个不同的配置文件DocumentRoot
  • 或符号链接/var/www/html到不同的目录
  • ...

有很多选择!老实说,我真的不认为 Debian 的人/var/www/html在不久的将来会改变。他们为什么会这么做?

但如果他们这样做,你可能会看到类似的东西

这是默认的欢迎页面,用于测试 Apache2 服务器在 Debian 系统上安装后的正确操作。如果您可以阅读此页面,则意味着此站点安装的 Apache HTTP 服务器工作正常。你应该替换这个文件(位于 /xxx/yyy/html/index.html),然后继续操作您的 HTTP 服务器。

抱歉,我不知道它在 nginx 中是如何完成的。

相关内容