安基网 欢乐生肖 系统 网络学院 查看内容

使用shell脚本一键部署虚拟主机

2019-8-28 00:58| 投稿: |来自:


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 每次在配置服务器的时候,对于配置站点都很烦躁,因为招数都一样,却不得不东改一下西改一下,所以就编写了这个脚本,下次部署网站的时候,直接执行就可以了。一、切换内定Shell为 bash使用的ubuntu18.04 LTS 版本,默认的是dash使用 命令查看当前系统的内定Shell是bash还是dash —————————— ...

每次在配置服务器的时候,对于配置站点都很烦躁,因为招数都一样,却不得不东改一下西改一下,所以就编写了这个脚本,下次部署网站的时候,直接执行就可以了。

一、切换内定Shell为 bash

使用的ubuntu18。04 LTS 版本,默认的是dash

使用 命令查看当前系统的内定Shell是bash还是dash

————————————————

版权声明:本文为CSDN博主「Marhal」的原创文章,遵循CC 4。0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_38157006/article/details/94569440

ls -l /bin/sh

如果结果显示为 bash就跳过,如果是dash 则切换过来

sudo dpkg-reconfigure dash

二、编写shell脚本 create_hosts.sh

#!/bin/bash
#默认的web服务器名称
SERVER_NAME=nginx
#第一步,选择web服务器
doChooseServer(){
techo -n '请选择服务器 1.nginx 2.apache :'
tread SERVICE_CODE
t
tif [ $SERVICE_CODE == 1 ]
tthen
techo '你选择了nginx'
telif [ $SERVICE_CODE == 2 ]
tthen
techo '你选择了apache'
tSERVER_NAME=apache2
telse
techo 'default nginx'
tfi

}
#第二步,输入域名
doInputUrl(){
echo -e "请输入要添加的域名(不含http/https):"
read INPUT_URL

tif [[ -z $INPUT_URL ]]
then
echo -e "域名不可为空!n"
doInputUrl
tfi
}
#第三步,输入端口号 默认80
doInputPort(){
techo -e "请输入端口号(默认80):"
tread INPUT_PORT
tif [[ -z $INPUT_PORT ]]
tthen
ttecho '80'
ttINPUT_PORT=80
tfi
}
#第四步,输入项目根目录,不存在可以选择是否创建
doInputDir(){
techo -e "请输入网站根目录(如 /var/www/html/myproject):"
tread INPUT_DIR
tif [[ -z $INPUT_DIR ]]
tthen
ttecho -e "网站目录不可为空!n"
ttdoInputDir
tfi

tif [ ! -d $INPUT_DIR ]
tthen
ttecho '文件夹不存在,是否创建?(1.创建2.不创建)'
ttread IS_CREATE_DIR
ttif [[ $IS_CREATE_DIR == 1 || -z $IS_CREATE_DIR ]]
ttthen
tttmkdir -p $INPUT_DIR
tttif [[ $? -ne 0 ]]
tttthen
ttttecho '文件夹创建失败,稍后请手动创建';
tttfi
tttecho '文件夹创建成功'
ttelse
tttecho '稍后请手动创建项目根目录!'
ttfi
tfi

}


doChooseServer
doInputUrl
doInputPort
doInputDir
#项目配置文件位置
SERVER_CONF_DIR="/etc/$SERVER_NAME/sites-available"
SERVER_LN_CONF_DIR="/etc/$SERVER_NAME/sites-enabled/"
# 再次确认虚拟主机信息
echo -e "service: $SERVER_NAME n 网站根目录: $INPUT_DIR n 域名: $INPUT_URL:$INPUT_PORT n 确认添加虚拟主机?(yes/no)"

read IS_SURE

if [[ -z $IS_SURE ]]
then
texit 0
fi

if [ $IS_SURE == 'yes' ]
then
techo '操作进行中......'
techo -e "正在生成$INPUT_URL的配置文件...n"

t#-------------nginx 配置文件 START--------------#

tNGINX_LOCATION_STRING='
tlocation / {n
tttry_files $uri $uri/ /index.php?$query_string;n
t}'

tNGINX_PHP_LOCATION_STRING='
tlocation ~ .php$ {n
ttinclude snippets/fastcgi-php.conf;n
ttfastcgi_split_path_info ^(.+.php)(/.+)$;n
ttfastcgi_pass unix:/var/run/php/php7.2-fpm.sock;n
ttinclude fastcgi_params;n
t}'

tNGINX_KNOW_LOCATION_STRING='
tlocation ~ /.(?!well-known).* {n
ttdeny all;n
t}'

tNGINX_CONF_STRING="
tserver {n
ttlisten $INPUT_PORT;n
ttlisten [::]:$INPUT_PORT;n
ttroot $INPUT_DIR;n
ttadd_header X-Frame-Options "SAMEORIGIN";n
ttadd_header X-XSS-Protection "1; mode=block";n
ttadd_header X-Content-Type-Options "nosniff";n
ttindex index.php index.html index.htm;n
ttcharset utf-8;n
ttserver_name $INPUT_URL;n
tt$NGINX_LOCATION_STRINGn
ttlocation = /favicon.ico { access_log off; log_not_found off; }n
ttlocation = /robots.txt { access_log off; log_not_found off; }n
tterror_page 404 /index.php;n
tt$NGINX_PHP_LOCATION_STRINGn
tt$NGINX_KNOW_LOCATION_STRINGn
t}"
t#-------------nginx 配置文件 END ---------------#

t#-------------apache 配置文件 START--------------#

tAPACHE_ERROR_LOG_STR='Errorlog ${APACHE_LOG_DIR}/error.logn'
tAPACHE_CUSTON_LOG_STR='CustomLog ${APACHE_LOG_DIR}/access.log combinedn'

tAPACHE_CONF_STRING="n
ttServerName $INPUT_URLn
ttServerAdmin webmaster@localhostn
ttDocumentRoot $INPUT_DIRn
tt$APACHE_ERROR_LOG_STRn
tt$APACHE_CUSTON_LOG_STRn
t
"
t#-------------apache 配置文件 END ---------------#t
#写入配置文件
tif [ $SERVICE_CODE == 2 ]
tthen
ttCONF_PATH="$SERVER_CONF_DIR/$INPUT_URL.conf"
CONF_LN_PATH="$SERVER_LN_CONF_DIR/$INPUT_URL.conf"
ttecho -e $APACHE_CONF_STRING > $CONF_PATH
telse
ttCONF_PATH=$SERVER_CONF_DIR/$INPUT_URL
CONF_LN_PATH="$SERVER_LN_CONF_DIR/$INPUT_URL.conf"
ttecho -e $NGINX_CONF_STRING > $CONF_PATH
tfi


tif [[ $? -ne 0 ]]
tthen
ttecho '配置文件写入失败'
ttexit 0
tfi

t#创建软链接
tif [[ -L $CONF_LN_PATH ]]
tthen
ttecho '软链接已经存在,跳过此步骤';
telse
ttln -s $CONF_PATH $SERVER_LN_CONF_DIR

ttif [[ $? -ne 0 ]]
ttthen
tttecho '软链接创建失败';
ttfi
tfi

#更新hosts文件

techo -e "正在更新hosts文件n"
techo "127.0.0.1 $INPUT_URL" >> /etc/hosts
tif [[ $? -ne 0 ]]
tthen
ttecho 'hosts文件更新失败'
ttexit 0
tfi
techo 'hosts文件更新成功'

techo -e "正在重启$SERVER_NAME服务器n"
tservice $SERVER_NAME restart

tif [[ $? -ne 0 ]]
tthen
ttecho "$SERVER_NAME重启失败"
ttexit 0
tfi

techo -e "重启成功,网站配置完成"
else
texit 0
fi

三、配置权限

sudo chmod +x create_hosts.sh

四、开始执行

sudo sh create_hosts.sh

然后根据提示输入相应的信息即可,亲测可用。

五、缺陷。

1.没有检测站点是否已经存在,存在的话会覆盖掉原有的配置

2.hosts文件会无限追加

3.没有正则判断输入的格式

so,这只是个人用来偷懒的一个小脚本,如有可以改进的地方,多多指教。



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6729800180368933389/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

刚表态过的朋友 (1 人)

相关阅读

最新评论

 最新
返回顶部
上海11选5计划 极速11选5 欢乐生肖 欢乐生肖 澳洲幸运10开奖结果 幸运赛车 三分时时彩 幸运飞艇官网 韩国1.5分彩 极速时时彩