目录
一.前提介绍
二.环境介绍
三.自述(脚本)
四.关于Nginx多项目部署
一.前提介绍
在我之前的博客里详细介绍了上述项目的部署,那么如何使用简单脚本自动部署和使用Nginx多项目部署是本文来介绍的基础篇章。
二.环境介绍
CentOS Linux release 7.9.2009 (Core)
nginx version: nginx/1.24.0
5.5.68-MariaDB
PHP 7.1.33
三.自述(脚本)
在无影响版本条件限制下本脚本都会运行成功,各版本会略有不同,原理都是相通的。
首先准备一个虚拟机,要求开启网卡,并可以ping通外网,例如可以ping通百度等。
脚本运行中,会提示让你输入你的静态ip,这里不明白的可以看下文,这里你使用远程工具链接的虚拟机最好输入当前ip作为静态ip的选择,避免执行时,断开连接,所以先记下自己的ip在后续中输入。若不配固定IP可在配固定ip那整快注释掉。
Vm ware虚拟机设置静态IP的方法_vmware虚拟机如何设置静态ip-CSDN博客
代码如下:
#!/bin/bash
# **********************************************************
# * Filename : install.sh
# * Author : Elk
# * Email : zzdict@gmail / elk_deer@foxmail.com
# * Create time : 2024-04-18 10:30
# * Description : 选择一个初始话的虚拟机,启动网卡有网即可。
# **********************************************************
start_time=$(date +%s)
echo "1.开始配置YUM源并安装基础包"
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache > /dev/null 2>&1
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
yum install -y ntpdate vim lresz net-tools wegt tree psmisc bash-completion unzip epel-release > /dev/null 2>&1
ntpdate time.windows.com
echo "2.开始你的配置静态IP"
sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/' /etc/sysconfig/network-scripts/ifcfg-ens33
read -p "***请输入你的想设置的静态IP: " ip
read -p "***请输入你的子网掩码 : " ym
read -p "***请输入你的网关 : " wg
read -p "***请输入你的DNS1 : " dns1
cat >>/etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
IPADDR=$ip
PREFIX=$ym
GATEWAY=$wg
DNS1=$dns1
EOF
systemctl restart network
ifup ens33
echo "3.在安装新版Nginx"
yum install yum-plugin-priorities -y > /dev/null 2>&1
cat >/etc/yum.repos.d/nginx.repo <<'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
priority=1
EOF
echo "3.1检查是否正确"
cat /etc/yum.repos.d/nginx.repo
yum install nginx -y > /dev/null 2>&1
echo "4.使用我提供的php包安装php与相关插件"
rpm -e $(rpm -qa|grep php)
unzip -o php*.zip > /dev/null 2>&1
yum localinstall *.rpm -y > /dev/null
systemctl start php-fpm
systemctl enable php-fpm
echo "4.1开始检查当前PHP服务用户默认配置情况"
grep "apache" /etc/php-fpm.d/www.conf
sed -i 's#apache#nginx#g' /etc/php-fpm.d/www.conf
echo "4.2检查修改后情况如下:"
grep "nginx" /etc/php-fpm.d/www.conf
echo "5.安装数据库并进行配置"
yum install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
mysql -u root -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234');"
mysql -u root -p1234 -e "CREATE DATABASE IF NOT EXISTS wordpress;"
echo "6.1开始部署小霸王游戏"
unzip -o html.zip -d /usr/share/nginx/ > /dev/null 2>&1
systemctl start nginx
systemctl enable nginx
echo "6.2解决游戏站点不能访问问题"
cat >/etc/nginx/conf.d/01_game.etiantian.org.conf<<'EOF'
server {
server_name game.etiantian.org;
listen 80;
root /usr/share/nginx/html;
index index.html;
}
EOF
systemctl restart nginx
echo "7.1开始部署网盘"
cat >/etc/nginx/conf.d/pan.etiantian.org.conf<<'EOF'
server {
server_name pan.etiantian.org; ## 临时域名。正式搭建需要购买域名。
listen 80; ## 网页服务端口。
root /data/pan; ## 程序存放目录。
index index.php index.html; ## 首页,网页总入口。
##符合php扩展名结尾抛给PHP服务处理
location ~ \.php$ { ## 以.php结尾的程序发给PHP服务(9000)处理。
fastcgi_pass 127.0.0.1:9000; ##发给PHP服务处理。
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
cat /etc/nginx/conf.d/pan.etiantian.org.conf
echo "7.2检查语法,正确标志是syntax is ok"
nginx -t
systemctl restart nginx
echo "7.3创建网盘站点目录"
mkdir /data/pan -p
unzip -o k*.zip -d /data/pan > /dev/null 2>&1
echo "7.4授权【nginx用户】访问网盘/data/pan目录"
chown -R nginx /data/pan;chmod -R 777 /data/pan/
echo "8.1开始部署博客"
cat >/etc/nginx/conf.d/03_blog.etiantian.org.conf<<'EOF'
server {
server_name blog.etiantian.org; ## 博客域名配置。
listen 80; ## 网站的端口。
root /data/blog; ## 程序目录。
index index.php index.html; ## 首页文件。
location ~ \.php$ { ## 以.php结尾的所有文件都发给PHP服务(9000)处理。
fastcgi_pass 127.0.0.1:9000; ##把PHP程序抛给PHP服务处理。
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
cat /etc/nginx/conf.d/03_blog.etiantian.org.conf
echo "8.2检查nginx配置语法,并重启nginx"
nginx -t
echo "成功标志 结尾successful"
systemctl restart nginx
echo "8.3创建博客目录并解压"
mkdir -p /data/blog
unzip -o wordpress*.zip -d /data/blog > /dev/null 2>&1
echo "8.4授权nginx服务和PHP服务得对应nginx用户管理博客目录/data/blog"
mv /data/blog/wordpress/* /data/blog/
chown -R nginx /data/blog/;chmod -R 777 /data/blog/
echo "9.1开始部署博客新增主题"
unzip -o zhutibao.zip > /dev/null 2>&1
cd wordpress主题
unzip -o kratos-main.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
unzip -o lolimeow-master.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
unzip -o L-Talk-master.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
unzip -o origami-master.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
unzip -o sakura-3.x.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
unzip -o Sakurairo.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
unzip -o Sakurairo-main.zip -d /data/blog/wp-content/themes/ > /dev/null 2>&1
cd
end_time=$(date +%s)
execution_time=$((end_time - start_time))
clear
cat <<EOF
执行耗时:$execution_time 秒
,----,
,----, ,----, ,/ .\`|
.' .\`| .' .\`| ,---, ,---, ,----.. ,\` .' :
.' .' ; .' .' ; .' .' \`\ ,\`--.' | / / \ ; ; /
,---, ' .',---, ' .',---.' \ | : :| : :.'___,/ ,'
| : ./ | : ./ | | .\`\\ |: | '. | ;. /| : |
; | .' / ; | .' / : : | ' || : |. ; /--\` ; |.'; ;
\`---' / ; \`---' / ; | ' ' ; :' ' ;; | ; \`----' | |
/ ; / / ; / ' | ; . || | || : | ' : ;
; / /--, ; / /--, | | : | '' : ;. | '___ | | '
/ / / .\`| / / / .\`| ' : | / ; | | '' ; : .'| ' : |
./__; :./__; : | | '\` ,/ ' : |' | '/ : ; |.'
| : .' | : .' ; : .' ; |.' | : / '---'
; | .' ; | .' | ,.' '---' \ \ .'
\`---' \`---' '---' \`---\`
EOF
cat <<EOF
===========================================================================================
Successful!
数据库用户名:root
数据库密码:1234
请在你的Windows中用记事本管理员身份打开去编辑C:\Windows\System32\drivers\etc\hosts
这个路径文件新增如下内容,本机进行域名解析后再访问下述域名
$(hostname -I | awk '{print $1}') game.etiantian.org pan.etiantian.org blog.etiantian.org
EOF
注:在这里复制的去配置域名解析的要把 $(hostname -I | awk '{print $1}')替换成你的IP,这段在liunx中执行后就是显示的你的IP
脚本链接:https://pan.baidu.com/s/1U0MRxGmV_m3KrH-JiOJQEg?pwd=ewgb
提取码:ewgb
四.关于Nginx多项目部署
我这个项目中是把游戏的html替换到nginx的html目录里,然后把博客和网盘的页面挂载到/data里,在data文件夹里分别放着博客的程序和网盘的程序。
在这之上,需要在/etc/nginx/conf.d目录(没有则新建)里挂载着三个项目的server如下图:
这是一个 Nginx 的服务器配置文件片段,它定义了一个服务器块(server block),用于处理来自于 blog.etiantian.org 域名的 HTTP 请求。
同理,在部署多项目时进行相同的原理,做一些引用路径的修改即可。 确保你的文件以 .conf
结尾,并且在修改后检查 Nginx 的配置文件以确保没有语法错误。完成后,重新加载 Nginx 配置使修改生效。
至此就结束啦。