在linux上使用Bash脚本更改Apache端口号

在linux上使用Bash脚本更改Apache端口号,bash,shell,Bash,Shell,各位专家好 我在我的RaspPi上运行一个web服务器,我希望能够从Bash脚本更改Apache使用的http端口号 新的端口号来自一个文本文件,其中包含我也使用的一系列其他设置 它的格式是这样的 服务器\u端口=8080 我知道它需要在Apache安装目录中的两个位置进行更改,但我很难用bash文件自动完成更改,因为我对bash脚本非常陌生 举一个例子来说明它是如何完成的,并对它的工作原理做一个很好的解释,这将是非常棒的 高级感谢:-您可以使用: 例如,如果您的ports.conf文件如下所示

各位专家好

我在我的RaspPi上运行一个web服务器,我希望能够从Bash脚本更改Apache使用的http端口号

新的端口号来自一个文本文件,其中包含我也使用的一系列其他设置

它的格式是这样的 服务器\u端口=8080

我知道它需要在Apache安装目录中的两个位置进行更改,但我很难用bash文件自动完成更改,因为我对bash脚本非常陌生

举一个例子来说明它是如何完成的,并对它的工作原理做一个很好的解释,这将是非常棒的

高级感谢:-

您可以使用:

例如,如果您的ports.conf文件如下所示:

Listen 80
<IfModule ssl_module>
    Listen 443
</IfModule>
<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
#!/bin/bash
sudo sed 's/80/8080/' /etc/apache2/ports.conf
sudo sed 's/80/8080/' /etc/apache2/sites-enabled/000-default.conf #for your examples sake
sudo service apache2 restart

HTH

我想做类似的事情,只是我的文件有点不同。您可以查看此脚本并更新/添加其他文件位置

希望这有助于:

#!/bin/bash
confFile=app.conf
#httpd_conf_file=/etc/apache2/ports.conf. #pi - debian
httpd_conf=/etc/httpd/conf/httpd.conf
newport=8080
# Obtain from file if present:
if [ -e $confFile ]; then
  echo "checking configuration file..."
  newport=$(grep server_port $confFile | awk -F= '{print $2}')
fi
echo "Switching to port $newport"

if [ ! -e ${httpd_conf}.orig ]; then
   sudo cp -p $httpd_conf ${httpd_conf}.orig
fi
sudo sed -i 's/Listen 80$/Listen 8080/' $httpd_conf

在Apache安装目录中的两个位置,哪两个位置。我只需要更改一个,但可能远远不止两个,具体取决于您的设置方式。根据此链接>>您需要在/etc/apache2/ports.conf&/etc/apache2/sites enabled/000 default中设置新端口。这将用808080替换8080。此外,它不会更改文件的位置。右边应该是sed-i的/Listen 80[[:space:][]*$/Listen 8080/'../ports.conf../sites enabled/000-default.conf需要向sed添加-i标志来更改文件-sudo sed-i的/80/5000/'/etc/apache2/ports.conf