#!/bin/bash
# 此处是lnmp环境的配置教程,搭建 lnmp 请参考:Linux centos下编译安装Lnmp shell脚本 完整版
# nginx服务器部署多个网站,共用一个80端口。
#首先备份配置文件:
#------------------------------- 备份所有 .pid 的文件为 .pid.backup --------------------------------#
pidback=(`find / -name "*.pid"`) # 定义一个小括号数组变量pidback 为 反引号里面的命令执行结果
for i in ${pidback[*]} # for循环变量 i 是 数组变量里所有的元素,[*] 所有, [0] 第一个元素,默认从0 开始
do # do 开始执行循环
if [ ! -e $i.backup ] # 判断参考:Shell if 条件判断文件或目录;字符串长度或为空,逻辑运算
then # 判断成立的情况执行
echo "备份文件: $i 为: $i.backup"
cp $i $i.backup
else # 其他情况执行
echo "已经存在备份文件: $i.backup"
fi # 结束判断
done # 结束循环
#------------------------------------ 在配置文件里绑定域名和目录 ------------------------------------ #
nginxconf="/www/server/nginx/18" # nginx 所在目录
www="/www/wwwroot" # web 网站所在路径
echo "
如果您的nginx 安装目录 不是 /www/server/nginx/18 请修改变量nginxconf 的值
如果您的web目录 不是 /www/wwwroot 请修改变量 www 的值
"
read -p "请输入域名:" address
read -p "请输入网站路径:$www/" catalogue
echo $address $www/$catalogue
mkdir $nginxconf/vhost # 在nginx目录下 创建一个”vhost” 域名解析配置文件目录
touch $nginxconf/vhost/$address.conf
# 创建反向解析配置文件,多个网站需要创建多个配置文件,然后用cat 写入
echo $nginxconf/vhost/$address.conf
echo "
server
{
listen 80; #监听端口设为 80。
server_name $address; #绑定多个域名 空格隔开。
index index.php index.htm index.html; #指定默认文件。
root $www/$catalogue; #指定网站根目录。
# location /a 其中 /a 是为了区分名字
location /$catalogue {
root $www/$catalogue ;
index index.php index.html index.htm;
}
location ~ .php\$ {
root $www/$catalogue;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
" > $nginxconf/vhost/$address.conf
mkdir $www/$catalogue # 创建站点根目录
echo " # 写入php测试文件aaaaaaaaaaaaaa
######## eisc.cn 小绿叶技术博客脚本开发商 【nginx 多网站域名绑定】,测试php功能 #########
## BUG 未添加反向解析的域名都默认绑定再第一个web 网站
<?php
phpinfo()
?>
######## eisc.cn 小绿叶技术博客脚本开发商 【nginx 多网站域名绑定】,测试php功能 #########
## BUG 未添加反向解析的域名都默认绑定再第一个web 网站
" > $www/$catalogue/eisc.cn.php
curl $address/eisc.cn.php
#------------------------------------ nginx 主配置文件 -------------------------------------------------
#cat /dev/null > $nginxconf/conf/nginx.conf
# 前面已经备份了配置文件,清空nginx配置文件内容,重新写入
echo "
worker_processes 1;
pid /usr/bin/nginx.pid;
#注意:nginx 的 pid 目录
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include $nginxconf/vhost/*.conf;
# 注意,inclde 引入 反向解析配置文件路径
#此处一般为localhost 不启默认路径网站
server {
listen 80;
server_name 127.0.0.1;
location / {
root $www;
#注意:web网站所在目录
index index.php index.html index.htm;
}
location ~ .php\$ {
root $www;
#注意:php解析目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
" > $nginxconf/conf/nginx.conf
nginx -s reload
echo "如果多个解析conf配置文件 绑定同一个网站,会提示 冲突,但是不影响正常使用"