繁体   English   中英

在 Mac OSX 10.6 中将新行附加到 etc/hosts 和 Apache httpd-vhosts.conf 的 Shell 脚本

[英]Shell script to append new lines to etc/hosts and Apache httpd-vhosts.conf in Mac OSX 10.6

我正在使用 Mac OSX 10.6 并在其上进行 Web 开发。 我知道一些关于编写 shell 脚本的知识,但我还没有真正精通它们。

我想要做的是编写一个 shell 脚本,它只会要求本地站点别名和文档目录,然后它将新别名附加到主机上,在新行上添加类似“127.0.0.1 mysite.local”的内容在 etc/hosts 的底部。

然后脚本将附加 Apache 的 httpd-vhosts.conf 文件,如下所示:

<VirtualHost *:80>
    DocumentRoot "/Repositories/myproject/mysite.com/trunk/htdocs"
    ServerName mysite.local
    ServerAlias mysite.localhost
</VirtualHost>

然后它最终会运行命令来重新启动我的 Apache 服务器。 现在我知道了重启 Apache 的终端命令,这很简单。 我还知道如何从运行脚本的用户那里读取站点名称和路径。 如下图:

#!/bin/bash
read -p "New local site name: " site
read -p "Site path (ex:/Repositories/myproject/mysite.com/trunk/htdocs): " sitepath

我不知道该怎么做是从终端将文本附加到文件中。

任何想法或有用的想法?

谢谢,帕特里克

未经测试,但它应该工作:

#!/bin/bash
read -p "New local site name: " SITE
read -p "Site path (ex:/Repositories/myproject/mysite.com/trunk/htdocs): " SITEPATH

#/etc/hosts
cp /etc/hosts /etc/hosts.original
echo -e "127.0.0.1\t${SITE}.local" >> /etc/hosts

#httpd-vhosts.conf
VHOSTSFILE="/etc/apache2/httpd-vhosts.conf"
cp $VHOSTSFILE ${VHOSTSFILE}.original
echo "<VirtualHost *:80>" >> $VHOSTSFILE
echo -e "\tDocumentRoot \"${SITEPATH}\"" >> $VHOSTSFILE
echo -e "\tServerName ${SITE}.local" >> $VHOSTSFILE
echo -e "\tServerAlias ${SITE}.localhost" >> $VHOSTSFILE
echo '</VirtualHost>' >> $VHOSTSFILE

#restart apache

>>将输出重定向到给定的文件,将内容附加到文件中。 我还使用-e来允许\\t扩展为制表符。

请注意,您需要使用sudo运行此脚本。 我还包含了在修改原始文件之前备份原始文件的命令,以防万一。

我在上面的答案中做了一些调整并做了一些额外的事情,因为这对我不起作用,但它帮助我想出了另一个解决方案。 此答案仅适用于Mac用户。

首先进入你的/etc/apache2/httpd.conf并取消注释虚拟主机引用,这是这一行Include /private/etc/apache2/extra/httpd-vhosts.conf

现在创建一个 bash 文件,我在我用户的家中创建了一个名为imran ,您需要将其替换为您的username

我将它放在名为create_new_site.sh /Users/imran 我给了它可执行的权限,所以它可以很容易地使用chmod +x create_new_site.sh执行

脚本代码如下:

#!/bin/bash
read -p "New local site name (prefix to .local): " SITE
SITEPATH=$SITE

sudo chmod -R a+w /Users/imran/Sites/web

SITEPATH="/Users/imran/Sites/web/${SITEPATH}"

mkdir -p $SITEPATH

#/etc/hosts
cp /etc/hosts /etc/hosts.original
echo -e "127.0.0.1\t${SITE}.local" >> /etc/hosts

#httpd-vhosts.conf
VHOSTSFILE="/etc/apache2/extra/httpd-vhosts.conf"
cp $VHOSTSFILE ${VHOSTSFILE}.original
echo "<VirtualHost *:80>" >> $VHOSTSFILE
echo -e "\tDocumentRoot \"${SITEPATH}\"" >> $VHOSTSFILE
echo -e "\tServerName ${SITE}.local" >> $VHOSTSFILE
echo '</VirtualHost>' >> $VHOSTSFILE

echo '<?php phpinfo();' > "${SITEPATH}/phpinfo.php"

sudo chmod -R a+w $SITEPATH

#restart apache
sudo apachectl restart

echo "All done! visit, let's visit http://${SITE}.local/phpinfo.php"

完成后,您可以开始使用sudo ./create_new_site.sh创建新站点。 请记住,您需要位于您的主目录中,您可以通过cd ~命令进入该目录。 现在让我们假设您创建了一个名为test的站点。 您应该能够访问http://test.local/phpinfo.php以查看您的vhost正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM