有541人阅读过
在飞牛系统上一键部署网站
发布于2025/03/08 更新于2025/05/10
[ 教程仅保证更新时有效,请自行测试。]
发布于2025/03/08 更新于2025/05/10
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
不想用1panel部署网站,可以使用以下脚本手动部署网站。
部署后可通过ip:端口访问部署网站的目录,用于把本地文件变成网络可以读取的文件,
配置信息将保存在当前目录中,备忘。
例如:
目录中有一个文件sample.txt
服务器地址 192.168.1.88
设置端口 5454
部署后,局域网就可以通过 http://192.168.1.88:5454/sample.txt 访问到这个文件,可用于订阅等场景。
代码如下:
#!/bin/bash
# 脚本名称: nginx.sh
# 作者: Brian
# 版本: 1.2
# 描述: 此脚本用于在飞牛系统上快速配置Nginx网站服务,支持PHP和MySQL。
# 使用方法:将脚本文件放在网站根目录,运行bash nginx.sh,根据提示设置网站名称和端口即可
# 网站配置模块
configure_website() {
# 配置网站 #
WebLocal=$PWD # 网站根目录
# 请求用户输入
read -p "请输入网站名称(建议英文,例如:test):" WebName
while true; do
read -p "请输入网站端口(例如:8091):" Web_PORT
# 检查端口是否为数字
if ! [[ "$Web_PORT" =~ ^[0-9]+$ ]]; then
echo "错误:端口号必须为数字,请重新输入。"
continue
fi
# 检查端口范围
if [ "$Web_PORT" -lt 1 ] || [ "$Web_PORT" -gt 65535 ]; then
echo "错误:端口号必须在 1 到 65535 之间,请重新输入。"
continue
fi
# 检查端口是否被占用
if ss -tuln | grep -q ":$Web_PORT"; then
echo "错误:端口 $Web_PORT 已被占用,请选择其他端口。"
continue
fi
# 如果所有检查通过,退出循环
break
done
# 修改权限
sudo chown -R www-data:www-data $WebLocal
sudo chmod -R 755 $WebLocal
# 创建Nginx配置文件
cat > /etc/nginx/sites-available/$WebName <<EOF
server {
listen $Web_PORT default_server;
listen [::]:$Web_PORT default_server;
root $WebLocal;
index index.php index.html index.htm;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
# 配置 PHP 支持
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问 .htaccess 文件
location ~ /\.ht {
deny all;
}
}
EOF
# 创建符号链接
sudo rm -f /etc/nginx/sites-enabled/$WebName # 删除已存在的符号链接
sudo ln -s /etc/nginx/sites-available/$WebName /etc/nginx/sites-enabled/
# 检查Nginx配置
sudo nginx -t
if [ $? -ne 0 ]; then
echo "错误:Nginx 配置检查失败,请检查配置文件。"
exit 1
fi
# 重启Nginx
sudo systemctl restart nginx
# 创建网站信息文件
INFO_FILE="${WebLocal}/website_info"
echo "网站名称: $WebName" > "$INFO_FILE"
echo "网站端口: $Web_PORT" >> "$INFO_FILE"
echo "网站根目录: $WebLocal" >> "$INFO_FILE"
echo "创建时间: $(date)" >> "$INFO_FILE"
chmod 644 "$INFO_FILE"
echo "配置完成,网站已启动。"
echo "访问地址:http://<服务器IP>:$Web_PORT"
echo "网站信息已保存到: $INFO_FILE"
}
# 检查 Nginx 是否已经在运行
if systemctl is-active --quiet nginx; then
echo "Nginx 已经在运行,跳过更新和升级步骤,直接配置网站。"
configure_website
exit 0
else
echo "Nginx 未运行,开始检查和安装..."
# 更新系统包列表
echo "正在更新系统包列表..."
sudo apt update
# 升级已安装的包
echo "正在升级已安装的包..."
sudo apt upgrade -y
# 检查是否已安装 nginx
if ! command -v nginx &> /dev/null; then
echo "Nginx 未安装,正在安装 Nginx..."
while true; do
read -p "请输入 Nginx 监听端口(例如:8090):" Nginx_PORT
# 检查端口是否为数字
if ! [[ "$Nginx_PORT" =~ ^[0-9]+$ ]]; then
echo "错误:端口号必须为数字,请重新输入。"
continue
fi
# 检查端口范围
if [ "$Nginx_PORT" -lt 1 ] || [ "$Nginx_PORT" -gt 65535 ]; then
echo "错误:端口号必须在 1 到 65535 之间,请重新输入。"
continue
fi
# 检查端口是否被占用
if ss -tuln | grep -q ":$Nginx_PORT"; then
echo "错误:端口 $Nginx_PORT 已被占用,请选择其他端口。"
continue
fi
# 如果所有检查通过,退出循环
break
done
echo "端口 $Nginx_PORT 可用,继续配置 Nginx..."
sudo apt install nginx -y
# 修改 Nginx 配置文件监听端口
NGINX_CONF="/etc/nginx/sites-available/default"
if [ -f "$NGINX_CONF" ]; then
echo "修改 Nginx 配置文件以监听 $Nginx_PORT 端口..."
sudo sed -i "s/80 default_server/$Nginx_PORT default_server/g" "$NGINX_CONF"
else
echo "Nginx 配置文件 $NGINX_CONF 不存在,请检查路径。"
exit 1
fi
else
echo "Nginx 已安装,跳过安装。"
fi
# 检查是否已安装 php-fpm
if ! dpkg -l | grep -q php8.2-fpm; then
echo "php8.2-fpm 未安装,正在安装 php8.2-fpm..."
sudo apt install php8.2-fpm -y
else
echo "php8.2-fpm 已安装,跳过安装。"
fi
# 检查是否已安装 php-mysql
if ! dpkg -l | grep -q php-mysql; then
echo "php-mysql 未安装,正在安装 php-mysql..."
sudo apt install php-mysql -y
else
echo "php-mysql 已安装,跳过安装。"
fi
# 启动 Nginx 和 php8.2-fpm
sudo systemctl start nginx
sudo systemctl start php8.2-fpm
# 设置 Nginx 和 php8.2-fpm 开机自启
sudo systemctl enable nginx
sudo systemctl enable php8.2-fpm
# 查询 Nginx 和 php8.2-fpm 状态
echo "Nginx 状态:"
sudo systemctl status nginx --no-pager
echo "php8.2-fpm 状态:"
sudo systemctl status php8.2-fpm --no-pager
# 配置网站
configure_website
fi 文章对你有帮助吗?
- 一般[0]

- 很赞[0]

- 没用[0]

- 垃圾[0]

- 无语[0]


