Gra*_*avy 3 linux apache bash mod-rewrite
我正在远离 AMPPS / MAMP,并希望构建一个尽可能接近生产环境的开发环境。
因此,我在安装了 CentOS 6.4 64 位操作系统的 Mac 上使用 Vagrant / VirtualBox。
在我的流浪文件中,我有一个配置脚本:
config.vm.provision :shell, :path => "bootstrap.sh"
Run Code Online (Sandbox Code Playgroud)
目前,我的 bootstrap.sh 如下所示:
#!/usr/bin/env bash
# Install the remi repos
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# Update the repositories
sudo yum -y update
sudo yum -y --enablerepo=remi,remi-php55 install php-pecl-apc php-cli php-pear php-pdo php-mysqlnd php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
Run Code Online (Sandbox Code Playgroud)
现在我已经安装了我的 apache 服务器,我希望我的 bash 脚本编辑/etc/httpd/conf/httpd.conf文件并更改AllowOverride None到AllowOverride All我的 html 目录中。
<Directory "/var/www/html">
...
Options Indexes FollowSymLinks
...
# Need to change this to AllowOverride All via bash script
AllowOverride None
...
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
使用 Linux SED 命令搜索和替换两个模式之间的行
另一个不错的解决方案是使用 SED 命令来搜索和替换两个模式之间的行。在您的情况下,模式将是:
'<Directory "/var/www/html">' and </directory>'
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您只替换 html 目录(<Directory "/var/www/html">)中的“AllowOverride None”行,而不是 httpd.conf 文件中包含“AllowOverride None”的每一行。
SED 命令支持以下形式的模式范围:
sed '/startpattern/,/endpattern/ <sed-commands>' file
Run Code Online (Sandbox Code Playgroud)
在你的情况下,这变成:
sed -i '/<Directory "\/var\/www\/html">/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' /etc/httpd/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)
-i 选项用于就地编辑文件。如果您不使用选项 -i,那么修改后的输出将打印在屏幕上并且文件不会被修改!
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |