
每次在配置服务器的时候,对于配置站点都很烦躁,因为招数都一样,却不得不东改一下西改一下,所以就编写了这个脚本,下次部署的时候,直接执行就可以了。
一、切换内定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=
#第一步,选择web服务器
doChooseServer(){
echo -n '请选择服务器 1.nginx 2. :'
read SERVICE_CODE
if [ $SERVICE_CODE == 1 ]
then
echo '你选择了nginx'
elif [ $SERVICE_CODE == 2 ]
then
echo '你选择了apache'
SERVER_NAME=apache2
else
echo 'default nginx'
fi
}
#第二步,输入域名
doInputUrl(){
echo -e "请输入要添加的域名(不含http/https):"
read INPUT_URL
if [[ -z $INPUT_URL ]]
then
echo -e "域名不可为空!n"
doInputUrl
fi
}
#第三步,输入端口号 默认80
doInputPort(){
echo -e "请输入端口号(默认80):"
read INPUT_PORT
if [[ -z $INPUT_PORT ]]
then
echo '80'
INPUT_PORT=80
fi
}
#第四步,输入项目根目录,不存在可以选择是否创建
doInputDir(){
echo -e "请输入网站根目录(如 /var/www//myproject):"
read INPUT_DIR
if [[ -z $INPUT_DIR ]]
then
echo -e "网站目录不可为空!n"
doInputDir
fi
if [ ! -d $INPUT_DIR ]
then
echo '文件夹不存在,是否创建?(1.创建2.不创建)'
read IS_CREATE_DIR
if [[ $IS_CREATE_DIR == 1 || -z $IS_CREATE_DIR ]]
then
mkdir -p $INPUT_DIR
if [[ $? -ne 0 ]]
then
echo '文件夹创建失败,稍后请手动创建';
fi
echo '文件夹创建成功'
else
echo '稍后请手动创建项目根目录!'
fi
fi
}
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
exit 0
fi
if [ $IS_SURE == 'yes' ]
then
echo '操作进行中......'
echo -e "正在生成$INPUT_URL的配置文件...n"
#-------------nginx 配置文件 START--------------#
NGINX_LOCATION_STRING='
location / {n
try_files $uri $uri/ /index.?$query_string;n
}'
NGINX_PHP_LOCATION_STRING='
location ~ .php$ {n
include snippets/fastcgi-php.conf;n
fastcgi_split_path_info ^(.+.php)(/.+)$;n
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;n
include fastcgi_params;n
}'
NGINX_KNOW_LOCATION_STRING='
location ~ /.(?!well-known).* {n
deny all;n
}'
NGINX_CONF_STRING="
server {n
listen $INPUT_PORT;n
listen [::]:$INPUT_PORT;n
root $INPUT_DIR;n
add_header X-Frame-Options "SAMEORIGIN";n
add_header X-XSS-Protection "1; mode=block";n
add_header X-Content-Type-Options "nosniff";n
index index.php index.html index.htm;n
charset utf-8;n
server_name $INPUT_URL;n
$NGINX_LOCATION_STRINGn
location = /favicon.ico { access_log off; log_not_found off; }n
location = /robots.txt { access_log off; log_not_found off; }n
error_page 404 /index.php;n
$NGINX_PHP_LOCATION_STRINGn
$NGINX_KNOW_LOCATION_STRINGn
}"
#-------------nginx 配置文件 END ---------------#
#-------------apache 配置文件 START--------------#
APACHE_ERROR_LOG_STR='Errorlog ${APACHE_LOG_DIR}/error.logn'
APACHE_CUSTON_LOG_STR='CustomLog ${APACHE_LOG_DIR}/access.log combinedn'
APACHE_CONF_STRING="<VirtualHost *:$INPUT_PORT>n
ServerName $INPUT_URLn
ServerAdmin webmaster@localhostn
DocumentRoot $INPUT_DIRn
$APACHE_ERROR_LOG_STRn
$APACHE_CUSTON_LOG_STRn
</VirtualHost>"
#-------------apache 配置文件 END ---------------#
#写入配置文件
if [ $SERVICE_CODE == 2 ]
then
CONF_PATH="$SERVER_CONF_DIR/$INPUT_URL.conf"
CONF_LN_PATH="$SERVER_LN_CONF_DIR/$INPUT_URL.conf"
echo -e $APACHE_CONF_STRING > $CONF_PATH
else
CONF_PATH=$SERVER_CONF_DIR/$INPUT_URL
CONF_LN_PATH="$SERVER_LN_CONF_DIR/$INPUT_URL.conf"
echo -e $NGINX_CONF_STRING > $CONF_PATH
fi
if [[ $? -ne 0 ]]
then
echo '配置文件写入失败'
exit 0
fi
#创建软链接
if [[ -L $CONF_LN_PATH ]]
then
echo '软链接已经存在,跳过此步骤';
else
ln -s $CONF_PATH $SERVER_LN_CONF_DIR
if [[ $? -ne 0 ]]
then
echo '软链接创建失败';
fi
fi
#更新hosts文件
echo -e "正在更新hosts文件n"
echo "127.0.0.1 $INPUT_URL" >> /etc/hosts
if [[ $? -ne 0 ]]
then
echo 'hosts文件更新失败'
exit 0
fi
echo 'hosts文件更新成功'
echo -e "正在重启$SERVER_NAME服务器n"
service $SERVER_NAME restart
if [[ $? -ne 0 ]]
then
echo "$SERVER_NAME重启失败"
exit 0
fi
echo -e "重启成功,网站配置完成"
else
exit 0
fi
三、配置权限
sudo chmod +x create_hosts.sh
四、开始执行
sudo sh create_hosts.sh
然后根据提示输入相应的信息即可,亲测可用。
五、缺陷。
1.没有检测站点是否已经存在,存在的话会覆盖掉原有的配置
2.hosts文件会无限追加
3.没有正则判断输入的格式
so,这只是个人用来偷懒的一个小脚本,如有可以改进的地方,多多指教。
胜象大百科









