我正试图编写一个脚本来自动快速地为apache服务器网站创建文件和配置,因为这通常需要5分钟左右,而且非常无聊。
我正在努力的部分是这条线...
# TODO: edit ServerName and DocumentRoot to use $1 and /var/www/$1/public
这是完整的脚本
sudo mkdir /var/www/$1
sudo mkdir /var/www/$1/public
sudo chown -R www-data:www-data /var/www/$1
sudo chmod -R g+w /var/www/$1
sudo usermod -aG www-data $USER
echo "<?php echo phpinfo(); ?>" > /var/www/$1/public/index.php
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/$1.io.conf
# TODO: edit ServerName and DocumentRoot to use $1 and /var/www/$1/public
cp /etc/apache2/sites-available/$1.io.conf /etc/apache2/sites-enabled/$1.io.conf
sudo -- sh -c "echo $1.io 127.0.0.1 >> /etc/hosts"
sudo service apache2 restart
xdg-open $1.io
sleep 5
code /var/www/$1
如何替换.conf apache文件的某些部分?
答案 0 :(得分:1)
假设您的设置具有以下格式:
ServerName your.server.name
DocumentRoot '/some/path'
您可以执行以下操作(使用GNU sed
):
cp /etc/apache2/sites-available/000-default.conf "/tmp/${1}.io.conf"
sed -Ei "s|^([[:blank:]]*)#?([[:blank:]]*ServerName).*$|\1\2 ${1}|;
s|^([[:blank:]]*)#?([[:blank:]]*DocumentRoot).*$|\1\2 '/var/www/${1}/public'|;" "/tmp/${1}.io.conf"
mv "/tmp/${1}.io.conf" /etc/apache2/sites-available/
答案 1 :(得分:0)
有很多方法可以做到这一点。我最常使用的两个是:
patch
修补Ubuntu风格的Apache conf文件的示例
patch -d/ -p0 <<'EOF'
--- /etc/apache2/apache2.conf
+++ /etc/apache2/apache2.conf
@@ -54,6 +54,7 @@
# Global configuration
#
+ServerName your_hostname_goes_here
#
# ServerRoot: The top of the directory tree under which the server's
EOF
perl -pi -e 's%old_string%new_string%' filename