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
的是:
查找
APACHE_CONFDIR
并将其设置为默认值(/etc/apache2
如果未设置)。查找
APACHE_ENVVARS
(环境变量文件)并将其设置为默认值("$APACHE_CONFDIR/envvars"
如果未设置)。然后获取该文件。修改
APACHE_ARGUMENTS
以包含配置目录的路径(如果它被覆盖)。设置二进制文件的默认路径
/usr/sbin/apache2
设置一些其他变量...
默认环境变量文件包含以下变量:
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 中是如何完成的。