Apache 使用命令行更改文档根目录
我正在设置一个Amazon Web服务堆栈,我想在/etc/apache2/sites enabled/000-default.conf中配置文档根目录,我目前通过修改文档的DocumentRoot来实现这一点。然后,我在/etc/apache2/apache2.conf中反映这一变化。是否可以使用命令行进行这些更改,而不是打开和编辑文件?提前感谢。您可以使用sed来完成。我使用以下包装器函数,以使其更方便:Apache 使用命令行更改文档根目录,apache,ubuntu,amazon-web-services,command-line,stack,Apache,Ubuntu,Amazon Web Services,Command Line,Stack,我正在设置一个Amazon Web服务堆栈,我想在/etc/apache2/sites enabled/000-default.conf中配置文档根目录,我目前通过修改文档的DocumentRoot来实现这一点。然后,我在/etc/apache2/apache2.conf中反映这一变化。是否可以使用命令行进行这些更改,而不是打开和编辑文件?提前感谢。您可以使用sed来完成。我使用以下包装器函数,以使其更方便: replace_string () { while :; do
replace_string () {
while :; do
case $1 in
file=?*) local file=${1#*=} ;;
replace=?*) local replace=${1#*=} ;;
with=?*) local with=${1#*=} ;;
*) break ;;
esac
shift
done
sudo sed -i -- "s/$replace/$with/ig" $file
}
replace_string file='/etc/apache2/sites-enabled/000-default.conf' \
replace='.*DocumentRoot.*' \
with='DocumentRoot path-to-your-document-root'
replace_string file='/etc/apache2/apache2.conf' \
replace='.*DocumentRoot.*' \
with='DocumentRoot "path-to-your-document-root"'
请注意,运行此脚本的用户应该能够在没有密码的情况下使用sudo 如果您有httpd.conf文件
我不知道文档是否支持这一点(我看不到对它的引用),但我发现追加将取代以前的指令
在对通常伴随此类问题的sed
、grep
和awk
脚本的共同声音感到失望后,我在实验中偶然发现了这一点(请参阅)
在我的例子中,我有一个名为httpd_changes.conf
的文件,如下所示:
DocumentRoot "/my/new/web/dir"
<Directory "/my/new/web/dir">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
如果您没有httpd.conf文件
这不是我的情况,但据我所知,您可以在
conf.d
目录中放置一个新的配置文件。这些文件是按字母顺序读取的(根据本页),这显然比我的hack要好得多。您可以尝试以下方法:
sed“s,/var/www/html,/my/new/web/dir,g”/etc/apache2/sites enabled/000 default.conf
这将显示对文件所做的修改
,
用作自定义分隔符,使正则表达式更易于阅读。
此示例使用将所有出现的/var/www/html
替换为/my/new/web/dir
添加-i
标志以实际修改文件:
sed-i“s,/var/www/html,/my/new/web/dir,g”/etc/apache2/sites enabled/000 default.conf
是的,您必须使用命令行编辑器来编辑文件,比如“nano”使用vimhorrendous@quant我讨厌bash,喜欢ruby,所以我有一个完整的“框架”这样的函数。
cat httpd_changes.conf >> /etc/apache2/httpd.conf