发表于: 2017-12-14 21:19:48
1 667
今天完成的事情:基本完成了 配置nginx文件的脚本 脚本如下
#!/bin/bash
cd /data/deploy/conf/
read -p"请输入前台域名(请向施星大佬申请):" var0
read -p"请输入后台域名(请向施星大佬申请):" var1
read -p"请输入项目名 统一使用小写:" var2
read -p"请输入组名 统一使用小写 :" var3
read -p"请输入前台端口:" var4
read -p"请输入后台端口:" var5
read -p"请输入前端前台代码路径:" var6
read -p"请输入前端后台代码路径:" var7
echo 你的域名是 $var0 $var1
echo 你的项目名是 $var2
echo 你的组名是 $var3
echo 你的前台端口是 $var4
echo 你的后台端口是 $var5
echo 你的前台代码路径是 $var6
echo 你的后台代码路径是 $var7
cd /data/deploy/conf/
sed -i '$ a\# '$var2''$var3' 前台 \
server {\
listen 80; \
server_name '$var0';\
chunked_transfer_encoding on;\
proxy_http_version 1.1;\
proxy_set_header Connection "";\
proxy_set_header Host $host;\
proxy_set_header X-Real-IP $remote_addr;\
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\
include location_'$var2'_'$var3'_home.conf;\
}' servers.conf
sleep 1
sed -i '$ a\# '$var2''$var3' 后台 \
server {\
listen 80; \
server_name '$var1';\
chunked_transfer_encoding on;\
proxy_http_version 1.1;\
proxy_set_header Connection "";\
proxy_set_header Host $host;\
proxy_set_header X-Real-IP $remote_addr;\
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\
include location_'$var2'_'$var3'_admin.conf;\
}' servers.conf
echo 新增servers.conf完成
cd /data/deploy/conf/
sed -i '$ a\#'$var2'-'$var3'组 前台 \
upstream '$var2'_'$var3'_home_web{ \
server 127.0.0.1:'$var4';\
keepalive 32;\
}' upstreams.conf
sed -i '$ a\#'$var2'-'$var3'组 \
upstream '$var2'_'$var3'_admin_web{ \
server 127.0.0.1:'$var5';\
keepalive 32;\
}' upstreams.conf
echo 新增upstreams.conf完成
cd /data/deploy/conf/
touch location_"$var2"_"$var3"_home.conf
echo "location /{
root $var6;
index index.html index.htm app.js;
allow all;
}
location ~ /js/.*.(js|css)$ {
root $var6;
}
location ~ /css/.*.(png|css|jpg)$ {
root $var6;
}">> location_"$var2"_"$var3"_home.conf
sed -i '$ a\location /a {\
proxy_pass http://'$var2'_'$var3'_home_web;\
proxy_set_header Host $host; }' location_"$var2"_"$var3"_home.conf
touch location_"$var2"_"$var3"_admin.conf
echo "location /{
root $var7;
index index.html index.htm app.js;
allow all;
}
location ~ /js/.*.(js|css)$ {
root $var7;
}
location ~ /css/.*.(png|css|jpg)$ {
root $var7;
}">> location_"$var2"_"$var3"_admin.conf
sed -i '$ a\location /a {\
proxy_pass http://'$var2'_'$var3'_admin_web;\
proxy_set_header Host $host; }' location_"$var2"_"$var3"_admin.conf
明天计划的事情: 安心写接口 不玩服务器了
遇到的问题:各种错误 主要是由于引入变量 特殊字符是否要转义 引起的
中英文切换错误 就更恐怖了 千万注意
sed: -e expression #1, char 29: extra characters after command
sed可以认为是个根据行来编辑的 如果新建一个空文件 他就不好使 就得改用echo
收获:read -p"XXXX:" var0 输入内容 赋值给局部变量var0 一般引用这个变量 用”var0“
echo 后面可以直接跟var0 不用引号 用应该也行
sed命令 在文件最后新增 使用如下 sed -i '$ a\# '$var2''$var3' 前台 \
-i代表直接修改文件内容 不显示出来 $ 是匹配最后一行 a\代表
注意1 换行需要在每行最后使用\ 千万别用/
注意2 在sed中引用变量 众说纷纭 能够正常使用的是sed ’ ‘ 中间变量使用’$var0‘引入
注意3 莫名其妙}报错 sed unexpected `}' 注意4 其中""$ 都不需要转义正则另算
echo 命令
在脚本中 echo ”“ 中间用变量直接$var3 如果用$要转义 正则另算
/t 代表制表符 其实和tab键一致 他代表多少 需要下面三个东西
单词的长度用 wordLength 表示 制表符的宽度用 tabSize 表示,制表符所代表的空白字符的个数用 tabAppearSpaceLength 表示,这三者满足两个条件
tabAppearSpaceLength >=1 && tabAppearSpaceLength <= tabSize
(wordLength + tabAppearSpaceLength) % tabSize == 0
单词长度是他本身 制表符代表的空白字符 可能是4 也可能是8
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
$( )中放的是命令,相当于` `,例如todaydate=$(date +%Y%m%d)意思是执行date命令,返回执行结果给变量todaydate,也可以写为todaydate=`date +%Y%m%d`;
${ }中放的是变量,例如echo ${PATH}取PATH变量的值并打印,也可以不加括号比如$PATH 可以${ $()}
评论