每次在配置服務器的時候,對于配置站點都很煩躁,因為招數都一樣,卻不得不東改一下西改一下,所以就編寫了這個腳本,下次部署網站的時候,直接執行就可以了。
一、切換內定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(){ 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,這只是個人用來偷懶的一個小腳本,如有可以改進的地方,多多指教。