每次在配置服务器的时候,对于配置站点都很烦躁,因为招数都一样,却不得不东改一下西改一下,所以就编写了这个脚本,下次部署网站的时候,直接执行就可以了。
一、切换内定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
#!/bin/bash #默认的web服务器名称 SERVER_NAME=Nginx #第一步,选择web服务器 doChooseServer(){ echo -n '请选择服务器 1.nginx 2.Apache :' 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/html/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.php?$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,这只是个人用来偷懒的一个小脚本,如有可以改进的地方,多多指教。