chore: 精简 VPS 管理工具箱
- 移除旧有的 LDNMP、面板、Docker 应用、甲骨文云和幻兽帕鲁功能 - 删除不再使用的部署脚本及相关配置文件 - 保留系统、Docker、网络、安全、监控、工作区和集群管理等核心功能 - 更新项目介绍并新增详细功能说明
This commit is contained in:
@@ -1,67 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 设置变量
|
||||
EMAIL="AAAA"
|
||||
API_KEY="BBBB"
|
||||
ZONE_ID="CCCC"
|
||||
LOAD_THRESHOLD=5.0 # 设置高负载阈值
|
||||
|
||||
TELEGRAM_BOT_TOKEN="输入TG机器人API"
|
||||
CHAT_ID="输入TG用户ID"
|
||||
|
||||
|
||||
# 获取当前系统负载
|
||||
CURRENT_LOAD=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d, -f1 | awk '{print $1}')
|
||||
|
||||
echo "当前系统负载: $CURRENT_LOAD"
|
||||
|
||||
|
||||
send_tg_notification() {
|
||||
local MESSAGE=$1
|
||||
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text=$MESSAGE"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 获取当前的“Under Attack”模式状态
|
||||
STATUS=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/security_level" \
|
||||
-H "X-Auth-Email: $EMAIL" \
|
||||
-H "X-Auth-Key: $API_KEY" \
|
||||
-H "Content-Type: application/json" | jq -r '.result.value')
|
||||
|
||||
echo "当前的Under Attack模式状态: $STATUS"
|
||||
|
||||
# 检查系统负载是否高于阈值
|
||||
if (( $(echo "$CURRENT_LOAD > $LOAD_THRESHOLD" | bc -l) )); then
|
||||
if [ "$STATUS" != "under_attack" ]; then
|
||||
echo "系统负载高于阈值,开启Under Attack模式"
|
||||
# send_tg_notification "系统负载高于阈值,开启Under Attack模式"
|
||||
NEW_STATUS="under_attack"
|
||||
else
|
||||
echo "系统负载高,但Under Attack模式已经开启"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
if [ "$STATUS" == "under_attack" ]; then
|
||||
echo "系统负载低于阈值,关闭Under Attack模式"
|
||||
# send_tg_notification "系统负载低于阈值,关闭Under Attack模式"
|
||||
NEW_STATUS="high"
|
||||
else
|
||||
echo "系统负载低,Under Attack模式已经关闭"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# 更新“Under Attack”模式状态
|
||||
RESPONSE=$(curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/security_level" \
|
||||
-H "X-Auth-Email: $EMAIL" \
|
||||
-H "X-Auth-Key: $API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"value\":\"$NEW_STATUS\"}")
|
||||
|
||||
if [[ $(echo $RESPONSE | jq -r '.success') == "true" ]]; then
|
||||
echo "成功更新Under Attack模式状态为: $NEW_STATUS"
|
||||
else
|
||||
echo "更新Under Attack模式状态失败"
|
||||
echo "响应: $RESPONSE"
|
||||
fi
|
||||
@@ -1,7 +1,7 @@
|
||||
# 科技lion一键脚本工具
|
||||
|
||||
## 介绍
|
||||
科技Lion 的 Shell 脚本工具是一款全能脚本工具箱,专为 VPS 监控、测试和管理而设计。无论您是初学者还是经验丰富的用户,该工具都能为您提供便捷的解决方案。集成了独创的 Docker 管理功能,让您轻松管理容器化应用;LNMP建站解决方案 能帮助您快速搭建网站,站点优化,防御,备份还原迁移一应俱全;并且整合了各类系统工具面板的安装及使用,使系统维护变得更加简单。我们的目标是成为全网最优秀的 VPS 一键脚本工具,为用户提供高效、便捷的科技支持。
|
||||
科技Lion 的 Shell 脚本工具是一款面向 Linux VPS 的交互式管理工具箱,聚焦系统信息与维护、Docker 基础管理、网络测试与调优、SSH 安全防护、Telegram 监控通知、tmux 后台工作区和 VPS 集群批量运维。无论您是初学者还是经验丰富的用户,都可以通过菜单快速执行常见服务器管理任务。
|
||||
[视频介绍](https://www.youtube.com/watch?v=0o7oH3Dit70&t=211s)
|
||||
***
|
||||
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
本项目是一套面向 **Linux VPS 的交互式服务器管理脚本工具箱**,核心程序是 `kejilion.sh`。当前功能聚焦于系统管理、Docker 基础管理、网络测试与调优、安全防护、监控通知、后台工作区和 VPS 集群运维。
|
||||
|
||||
## 1. VPS 系统管理
|
||||
|
||||
- 查看 CPU、内存、Swap、磁盘、流量和系统负载
|
||||
- 查看操作系统、内核、主机名、IP、运营商和地理位置
|
||||
- 查看 TCP 拥塞算法、系统时间及运行时长
|
||||
- 更新系统、清理系统垃圾
|
||||
- 修改主机名、时区、DNS、登录密码和 SSH 端口
|
||||
- 管理 Swap、用户、sudo 权限和 Root 登录方式
|
||||
- IPv4/IPv6 优先级切换
|
||||
- 查看端口占用
|
||||
- 管理 `/etc/hosts`
|
||||
- 管理 Crontab 定时任务
|
||||
- 重启服务器
|
||||
|
||||
## 2. Docker 基础管理
|
||||
|
||||
- 安装、更新或卸载 Docker
|
||||
- 查看 Docker、Compose 版本和资源占用
|
||||
- 创建、启动、停止、重启和删除容器
|
||||
- 批量管理全部容器
|
||||
- 进入容器终端、查看日志和容器网络
|
||||
- 拉取、更新及删除镜像
|
||||
- 创建和管理 Docker 网络
|
||||
- 创建和删除数据卷
|
||||
- 清理无用容器、镜像、网络和数据卷
|
||||
- 更换 Docker 软件源
|
||||
- 编辑 `daemon.json`
|
||||
- 开启或关闭 Docker IPv6
|
||||
|
||||
## 3. 网络与 VPS 测试
|
||||
|
||||
- WARP 管理
|
||||
- ChatGPT 解锁测试
|
||||
- 流媒体解锁检测
|
||||
- IP 质量检测
|
||||
- 三网回程路由测试
|
||||
- MTR 线路测试
|
||||
- NextTrace 路由测试
|
||||
- SuperSpeed 和多功能测速
|
||||
- YABS 性能测试
|
||||
- Geekbench 5 CPU 测试
|
||||
- Bench 综合测试
|
||||
- 融合怪综合测评
|
||||
|
||||
## 4. 网络加速与系统调优
|
||||
|
||||
- 开启或关闭 BBR
|
||||
- BBRv3/XanMod 内核管理
|
||||
- 设置 Swap
|
||||
- 配置国内或国外 DNS
|
||||
- 优化 SSH、时区和系统软件
|
||||
- 一键完成系统更新、清理、Docker 安装及常用配置
|
||||
|
||||
## 5. 安全防护
|
||||
|
||||
### SSH Fail2Ban
|
||||
|
||||
- SSH 防暴力破解
|
||||
- 查看 SSH 封禁状态和拦截记录
|
||||
- 实时查看 Fail2Ban 日志
|
||||
- 安装或卸载 SSH 防护
|
||||
|
||||
相关配置文件:`sshd.local`
|
||||
|
||||
### iptables 与账户安全
|
||||
|
||||
- iptables 端口开放和关闭
|
||||
- IP 黑名单和白名单
|
||||
- 禁用 Root 并创建管理员用户
|
||||
- Root 密码或私钥登录管理
|
||||
- SSH 端口调整
|
||||
- OpenSSH 风险版本检测与升级
|
||||
|
||||
相关脚本:`upgrade_openssh9.8p1.sh`
|
||||
|
||||
## 6. 服务器监控与通知
|
||||
|
||||
通过 Telegram Bot 发送:
|
||||
|
||||
- CPU 使用率告警
|
||||
- 内存使用率告警
|
||||
- 磁盘使用率告警
|
||||
- 入站和出站流量告警
|
||||
- SSH 登录用户、来源 IP、地区和时间通知
|
||||
|
||||
相关文件:
|
||||
|
||||
- `TG-check-notify.sh`
|
||||
- `TG-SSH-check-notify.sh`
|
||||
|
||||
## 7. 流量限额自动关机
|
||||
|
||||
- 设置每月流量额度
|
||||
- 定期统计接收和发送流量
|
||||
- 达到阈值后自动关机
|
||||
- 每月重新开始统计
|
||||
- 支持启用和停用
|
||||
|
||||
相关文件:`Limiting_Shut_down.sh`
|
||||
|
||||
## 8. 常用工具与后台工作区
|
||||
|
||||
可安装或管理:
|
||||
|
||||
- curl、wget、sudo、socat
|
||||
- htop、iftop、btop
|
||||
- unzip、tar
|
||||
- tmux
|
||||
- ffmpeg
|
||||
- ranger、gdu、fzf
|
||||
- 一些终端小游戏
|
||||
|
||||
同时基于 tmux 提供:
|
||||
|
||||
- 多个持久化后台工作区
|
||||
- 自定义工作区
|
||||
- 查看和删除工作区
|
||||
- SSH 断开后继续运行任务
|
||||
|
||||
## 9. VPS 集群批量管理
|
||||
|
||||
可以维护多台服务器列表,并批量执行:
|
||||
|
||||
- 安装本项目脚本
|
||||
- 更新或清理系统
|
||||
- 安装 Docker
|
||||
- 安装 BBR3
|
||||
- 设置 Swap 和时区
|
||||
- 开放端口
|
||||
- 执行自定义命令
|
||||
- 导入或导出服务器列表
|
||||
|
||||
---
|
||||
|
||||
总体而言,这个项目可以概括为:
|
||||
|
||||
> **VPS 系统管理 + Docker 基础管理 + 网络测试与调优 + SSH 安全防护 + 监控通知 + tmux 工作区 + 集群运维。**
|
||||
|
||||
部分功能会在运行时从 GitHub、Docker Hub 或第三方站点下载脚本、配置和镜像,因此实际可用性取决于外部资源和目标 Linux 发行版。
|
||||
@@ -1,66 +0,0 @@
|
||||
# 定义证书存储目录
|
||||
certs_directory="/etc/letsencrypt/live/"
|
||||
|
||||
days_before_expiry=5 # 设置在证书到期前几天触发续签
|
||||
|
||||
# 遍历所有证书文件
|
||||
for cert_dir in $certs_directory*; do
|
||||
# 获取域名
|
||||
domain=$(basename "$cert_dir")
|
||||
|
||||
# 忽略 README 目录
|
||||
if [ "$domain" = "README" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# 输出正在检查的证书信息
|
||||
echo "检查证书过期日期: ${domain}"
|
||||
|
||||
# 获取fullchain.pem文件路径
|
||||
cert_file="${cert_dir}/fullchain.pem"
|
||||
|
||||
# 获取证书过期日期
|
||||
expiration_date=$(openssl x509 -enddate -noout -in "${cert_file}" | cut -d "=" -f 2-)
|
||||
|
||||
# 输出证书过期日期
|
||||
echo "过期日期: ${expiration_date}"
|
||||
|
||||
# 将日期转换为时间戳
|
||||
expiration_timestamp=$(date -d "${expiration_date}" +%s)
|
||||
current_timestamp=$(date +%s)
|
||||
|
||||
# 计算距离过期还有几天
|
||||
days_until_expiry=$(( ($expiration_timestamp - $current_timestamp) / 86400 ))
|
||||
|
||||
# 检查是否需要续签(在满足续签条件的情况下)
|
||||
if [ $days_until_expiry -le $days_before_expiry ]; then
|
||||
echo "证书将在${days_before_expiry}天内过期,正在进行自动续签。"
|
||||
|
||||
# 停止 Nginx
|
||||
docker stop nginx
|
||||
|
||||
iptables -P INPUT ACCEPT
|
||||
iptables -P FORWARD ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
iptables -F
|
||||
|
||||
ip6tables -P INPUT ACCEPT
|
||||
ip6tables -P FORWARD ACCEPT
|
||||
ip6tables -P OUTPUT ACCEPT
|
||||
ip6tables -F
|
||||
|
||||
# 续签证书
|
||||
certbot certonly --standalone -d $domain --email your@email.com --agree-tos --no-eff-email --force-renewal
|
||||
|
||||
# 启动 Nginx
|
||||
docker start nginx
|
||||
|
||||
echo "证书已成功续签。"
|
||||
else
|
||||
# 若未满足续签条件,则输出证书仍然有效
|
||||
echo "证书仍然有效,距离过期还有 ${days_until_expiry} 天。"
|
||||
fi
|
||||
|
||||
# 输出分隔线
|
||||
echo "--------------------------"
|
||||
done
|
||||
@@ -1,62 +0,0 @@
|
||||
# 定义证书存储目录
|
||||
certs_directory="/home/web/certs/"
|
||||
days_before_expiry=5 # 设置在证书到期前几天触发续签
|
||||
|
||||
# 遍历所有证书文件
|
||||
for cert_file in $certs_directory*_cert.pem; do
|
||||
# 获取域名
|
||||
domain=$(basename "$cert_file" "_cert.pem")
|
||||
|
||||
# 输出正在检查的证书信息
|
||||
echo "检查证书过期日期: ${domain}"
|
||||
|
||||
# 获取证书过期日期
|
||||
expiration_date=$(openssl x509 -enddate -noout -in "${certs_directory}${domain}_cert.pem" | cut -d "=" -f 2-)
|
||||
|
||||
# 输出证书过期日期
|
||||
echo "过期日期: ${expiration_date}"
|
||||
|
||||
# 将日期转换为时间戳
|
||||
expiration_timestamp=$(date -d "${expiration_date}" +%s)
|
||||
current_timestamp=$(date +%s)
|
||||
|
||||
# 计算距离过期还有几天
|
||||
days_until_expiry=$(( ($expiration_timestamp - $current_timestamp) / 86400 ))
|
||||
|
||||
# 检查是否需要续签(在满足续签条件的情况下)
|
||||
if [ $days_until_expiry -le $days_before_expiry ]; then
|
||||
echo "证书将在${days_before_expiry}天内过期,正在进行自动续签。"
|
||||
|
||||
# 停止 Nginx
|
||||
docker stop nginx
|
||||
|
||||
iptables -P INPUT ACCEPT
|
||||
iptables -P FORWARD ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
iptables -F
|
||||
|
||||
ip6tables -P INPUT ACCEPT
|
||||
ip6tables -P FORWARD ACCEPT
|
||||
ip6tables -P OUTPUT ACCEPT
|
||||
ip6tables -F
|
||||
|
||||
# 续签证书
|
||||
# certbot certonly --standalone -d $domain --email your@email.com --agree-tos --no-eff-email --force-renewal
|
||||
certbot certonly --standalone -d $domain --email your@email.com --agree-tos --no-eff-email --force-renewal --key-type ecdsa
|
||||
|
||||
# 复制续签后的证书和私钥
|
||||
cp /etc/letsencrypt/live/$domain/fullchain.pem ${certs_directory}${domain}_cert.pem
|
||||
cp /etc/letsencrypt/live/$domain/privkey.pem ${certs_directory}${domain}_key.pem
|
||||
|
||||
# 启动 Nginx
|
||||
docker start nginx
|
||||
|
||||
echo "证书已成功续签。"
|
||||
else
|
||||
# 若未满足续签条件,则输出证书仍然有效
|
||||
echo "证书仍然有效,距离过期还有 ${days_until_expiry} 天。"
|
||||
fi
|
||||
|
||||
# 输出分隔线
|
||||
echo "--------------------------"
|
||||
done
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Create a tar archive of the web directory
|
||||
cd /home/ && tar czvf web_$(date +"%Y%m%d%H%M%S").tar.gz web
|
||||
|
||||
# Transfer the tar archive to another VPS
|
||||
cd /home/ && ls -t /home/*.tar.gz | head -1 | xargs -I {} sshpass -p 123456 scp -o StrictHostKeyChecking=no -P 22 {} root@0.0.0.0:/home/
|
||||
|
||||
# Keep only 5 tar archives and delete the rest
|
||||
cd /home/ && ls -t /home/*.tar.gz | tail -n +4 | xargs -I {} rm {}
|
||||
@@ -1,88 +0,0 @@
|
||||
#
|
||||
# Author: Mike Rushton
|
||||
#
|
||||
# IMPORTANT
|
||||
#
|
||||
# Please set jail.local's permission to 640 because it contains your CF API key.
|
||||
#
|
||||
# This action depends on curl (and optionally jq).
|
||||
# Referenced from http://www.normyee.net/blog/2012/02/02/adding-cloudflare-support-to-fail2ban by NORM YEE
|
||||
#
|
||||
# To get your CloudFlare API Key: https://www.cloudflare.com/a/account/my-account
|
||||
#
|
||||
# CloudFlare API error codes: https://www.cloudflare.com/docs/host-api.html#s4.2
|
||||
|
||||
[Definition]
|
||||
|
||||
# Option: actionstart
|
||||
# Notes.: command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false).
|
||||
# Values: CMD
|
||||
#
|
||||
actionstart =
|
||||
|
||||
# Option: actionstop
|
||||
# Notes.: command executed at the stop of jail (or at the end of Fail2Ban)
|
||||
# Values: CMD
|
||||
#
|
||||
actionstop =
|
||||
|
||||
# Option: actioncheck
|
||||
# Notes.: command executed once before each actionban command
|
||||
# Values: CMD
|
||||
#
|
||||
actioncheck =
|
||||
|
||||
# Option: actionban
|
||||
# Notes.: command executed when banning an IP. Take care that the
|
||||
# command is executed with Fail2Ban user rights.
|
||||
# Tags: <ip> IP address
|
||||
# <failures> number of failures
|
||||
# <time> unix timestamp of the ban time
|
||||
# Values: CMD
|
||||
#
|
||||
# API v1
|
||||
#actionban = curl -s -o /dev/null https://www.cloudflare.com/api_json.html -d 'a=ban' -d 'tkn=<cftoken>' -d 'email=<cfuser>' -d 'key=<ip>'
|
||||
# API v4
|
||||
actionban = curl -s -o /dev/null -X POST <_cf_api_prms> \
|
||||
-d '{"mode":"block","configuration":{"target":"<cftarget>","value":"<ip>"},"notes":"Fail2Ban <name>"}' \
|
||||
<_cf_api_url>
|
||||
|
||||
# Option: actionunban
|
||||
# Notes.: command executed when unbanning an IP. Take care that the
|
||||
# command is executed with Fail2Ban user rights.
|
||||
# Tags: <ip> IP address
|
||||
# <failures> number of failures
|
||||
# <time> unix timestamp of the ban time
|
||||
# Values: CMD
|
||||
#
|
||||
# API v1
|
||||
#actionunban = curl -s -o /dev/null https://www.cloudflare.com/api_json.html -d 'a=nul' -d 'tkn=<cftoken>' -d 'email=<cfuser>' -d 'key=<ip>'
|
||||
# API v4
|
||||
actionunban = id=$(curl -s -X GET <_cf_api_prms> \
|
||||
"<_cf_api_url>?mode=block&configuration_target=<cftarget>&configuration_value=<ip>&page=1&per_page=1¬es=Fail2Ban%%20<name>" \
|
||||
| { jq -r '.result[0].id' 2>/dev/null || tr -d '\n' | sed -nE 's/^.*"result"\s*:\s*\[\s*\{\s*"id"\s*:\s*"([^"]+)".*$/\1/p'; })
|
||||
if [ -z "$id" ]; then echo "<name>: id for <ip> cannot be found"; exit 0; fi;
|
||||
curl -s -o /dev/null -X DELETE <_cf_api_prms> "<_cf_api_url>/$id"
|
||||
|
||||
_cf_api_url = https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules
|
||||
_cf_api_prms = -H 'X-Auth-Email: <cfuser>' -H 'X-Auth-Key: <cftoken>' -H 'Content-Type: application/json'
|
||||
|
||||
[Init]
|
||||
|
||||
# If you like to use this action with mailing whois lines, you could use the composite action
|
||||
# action_cf_mwl predefined in jail.conf, just define in your jail:
|
||||
#
|
||||
# action = %(action_cf_mwl)s
|
||||
# # Your CF account e-mail
|
||||
# cfemail =
|
||||
# # Your CF API Key
|
||||
# cfapikey =
|
||||
|
||||
cftoken = APIKEY00000
|
||||
|
||||
cfuser = kejilion@outlook.com
|
||||
|
||||
cftarget = ip
|
||||
|
||||
[Init?family=inet6]
|
||||
cftarget = ip6
|
||||
+1
-2926
File diff suppressed because it is too large
Load Diff
@@ -1,36 +0,0 @@
|
||||
[mysqld]
|
||||
|
||||
# 连接和线程管理
|
||||
max_connections = 2048
|
||||
thread_cache_size = 512
|
||||
interactive_timeout = 30
|
||||
wait_timeout = 30
|
||||
|
||||
# InnoDB设置
|
||||
innodb_buffer_pool_size = 2048M
|
||||
innodb_buffer_pool_instances = 2
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_log_file_size = 64M
|
||||
innodb_lock_wait_timeout = 30
|
||||
innodb_file_per_table = 1
|
||||
innodb_flush_log_at_trx_commit = 1
|
||||
innodb_io_capacity = 1000
|
||||
innodb_io_capacity_max = 2000
|
||||
|
||||
# 缓存和限制
|
||||
table_open_cache = 2000
|
||||
open_files_limit = 4000
|
||||
tmp_table_size = 16M
|
||||
max_heap_table_size = 16M
|
||||
max_allowed_packet = 16M
|
||||
|
||||
# 缓冲区大小
|
||||
sort_buffer_size = 4M
|
||||
read_buffer_size = 2M
|
||||
join_buffer_size = 2M
|
||||
|
||||
# --------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[Definition]
|
||||
# failregex = ^<HOST> .* "(GET|POST|HEAD).*HTTP.*" (404|503) .*$
|
||||
# failregex = ^<HOST> .* "(GET|POST|HEAD).*HTTP.*" (404|503|444) .*
|
||||
failregex = ^<HOST> .* "(GET|POST|HEAD).*HTTP.*" ([45]\d\d) .*
|
||||
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)
|
||||
+1
-2930
File diff suppressed because it is too large
Load Diff
@@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 获取用户输入,用于替换 docker-compose.yml 文件中的占位符
|
||||
read -p "请输入 数据库ROOT密码:" dbrootpasswd
|
||||
read -p "请输入 数据库用户名:" dbuse
|
||||
read -p "请输入 数据库用户密码:" dbusepasswd
|
||||
|
||||
|
||||
# 更新并安装必要的软件包
|
||||
DEBIAN_FRONTEND=noninteractive apt update -y
|
||||
DEBIAN_FRONTEND=noninteractive apt full-upgrade -y
|
||||
apt install -y curl wget sudo socat unzip tar htop
|
||||
|
||||
# 安装 Docker
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# 安装 Docker Compose
|
||||
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
|
||||
|
||||
# 创建必要的目录和文件
|
||||
cd /home && mkdir -p web/html web/mysql web/certs web/conf.d web/redis && touch web/docker-compose.yml
|
||||
|
||||
# 下载 docker-compose.yml 文件并进行替换
|
||||
wget -O /home/web/docker-compose.yml https://raw.githubusercontent.com/kejilion/docker/main/LNMP-docker-compose-4.yml
|
||||
|
||||
|
||||
# 在 docker-compose.yml 文件中进行替换
|
||||
sed -i "s/webroot/$dbrootpasswd/g" /home/web/docker-compose.yml
|
||||
sed -i "s/kejilionYYDS/$dbusepasswd/g" /home/web/docker-compose.yml
|
||||
sed -i "s/kejilion/$dbuse/g" /home/web/docker-compose.yml
|
||||
|
||||
iptables -P INPUT ACCEPT
|
||||
iptables -P FORWARD ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
iptables -F
|
||||
|
||||
cd /home/web && docker-compose up -d
|
||||
|
||||
docker exec php apt update &&
|
||||
docker exec php apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick &&
|
||||
docker exec php docker-php-ext-install mysqli pdo_mysql zip exif gd intl bcmath opcache &&
|
||||
docker exec php pecl install imagick &&
|
||||
docker exec php sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini' &&
|
||||
docker exec php pecl install redis &&
|
||||
docker exec php sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini' &&
|
||||
docker exec php sh -c 'echo "upload_max_filesize=50M \n post_max_size=50M" > /usr/local/etc/php/conf.d/uploads.ini' &&
|
||||
docker exec php sh -c 'echo "memory_limit=256M" > /usr/local/etc/php/conf.d/memory.ini'
|
||||
|
||||
|
||||
docker exec php74 apt update &&
|
||||
docker exec php74 apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick &&
|
||||
docker exec php74 docker-php-ext-install mysqli pdo_mysql zip gd intl bcmath opcache &&
|
||||
docker exec php74 pecl install imagick &&
|
||||
docker exec php74 sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini' &&
|
||||
docker exec php74 pecl install redis &&
|
||||
docker exec php74 sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini' &&
|
||||
docker exec php74 sh -c 'echo "upload_max_filesize=50M \n post_max_size=50M" > /usr/local/etc/php/conf.d/uploads.ini' &&
|
||||
docker exec php74 sh -c 'echo "memory_limit=256M" > /usr/local/etc/php/conf.d/memory.ini'
|
||||
|
||||
-62
@@ -1,62 +0,0 @@
|
||||
[fail2ban-nginx-cc]
|
||||
|
||||
enabled = true
|
||||
filter = fail2ban-nginx-cc
|
||||
chain = DOCKER-USER
|
||||
port = http,https
|
||||
action = cloudflare
|
||||
logpath = /home/web/log/nginx/access.log
|
||||
maxretry = 3
|
||||
bantime = 3600
|
||||
findtime = 3600
|
||||
ignoreip = 192.168.0.1/24
|
||||
|
||||
|
||||
|
||||
[nginx-http-auth]
|
||||
|
||||
enabled = true
|
||||
chain = DOCKER-USER
|
||||
mode = fallback
|
||||
port = http,https
|
||||
logpath = /home/web/log/nginx/error.log
|
||||
|
||||
|
||||
|
||||
[nginx-limit-req]
|
||||
|
||||
enabled = true
|
||||
chain = DOCKER-USER
|
||||
port = http,https
|
||||
action = cloudflare
|
||||
logpath = /home/web/log/nginx/error.log
|
||||
|
||||
|
||||
|
||||
[nginx-botsearch]
|
||||
|
||||
enabled = true
|
||||
chain = DOCKER-USER
|
||||
port = http,https
|
||||
action = cloudflare
|
||||
logpath = /home/web/log/nginx/error.log
|
||||
|
||||
|
||||
|
||||
[nginx-bad-request]
|
||||
|
||||
enabled = true
|
||||
chain = DOCKER-USER
|
||||
port = http,https
|
||||
action = cloudflare
|
||||
logpath = /home/web/log/nginx/access.log
|
||||
|
||||
|
||||
|
||||
[php-url-fopen]
|
||||
|
||||
enabled = true
|
||||
chain = DOCKER-USER
|
||||
port = http,https
|
||||
action = cloudflare
|
||||
logpath = /home/web/log/nginx/access.log
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
clear
|
||||
mkdir -p /home/game
|
||||
docker cp steamcmd:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/ /home/game/palworld/
|
||||
cd /home/game && tar czvf palworld_$(date +"%Y%m%d%H%M%S").tar.gz palworld
|
||||
rm -rf /home/game/palworld/
|
||||
echo -e "\033[0;32m游戏存档已导出存放在: /home/game/\033[0m"
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
clear
|
||||
echo "脚本更新日志"
|
||||
echo "------------------------"
|
||||
echo "2024-2-1 v1.0"
|
||||
echo "风靡全球的幻兽帕鲁服务端管理面板上线!"
|
||||
echo "------------------------"
|
||||
echo "2024-2-2 v1.0.1"
|
||||
echo "增加了游戏存档定时备份,可选每周,每天,每小时"
|
||||
echo "主菜单增加了游戏服务安装状态以及开服情况的智能显示"
|
||||
echo "主菜单增加k选项与科技lion官方脚本工具联动。"
|
||||
echo "主菜单增加游戏配置修改功能"
|
||||
echo "对脚本细节调优,体验更好"
|
||||
echo "------------------------"
|
||||
-445
@@ -1,445 +0,0 @@
|
||||
#!/bin/bash
|
||||
ln -sf ~/palworld.sh /usr/local/bin/p
|
||||
|
||||
ip_address() {
|
||||
ipv4_address=$(curl -s ipv4.ip.sb)
|
||||
ipv6_address=$(curl -s --max-time 1 ipv6.ip.sb)
|
||||
}
|
||||
|
||||
|
||||
install() {
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "未提供软件包参数!"
|
||||
return 1
|
||||
fi
|
||||
|
||||
for package in "$@"; do
|
||||
if ! command -v "$package" &>/dev/null; then
|
||||
if command -v apt &>/dev/null; then
|
||||
apt update -y && apt install -y "$package"
|
||||
elif command -v yum &>/dev/null; then
|
||||
yum -y update && yum -y install "$package"
|
||||
elif command -v apk &>/dev/null; then
|
||||
apk update && apk add "$package"
|
||||
else
|
||||
echo "未知的包管理器!"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
remove() {
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "未提供软件包参数!"
|
||||
return 1
|
||||
fi
|
||||
|
||||
for package in "$@"; do
|
||||
if command -v apt &>/dev/null; then
|
||||
apt purge -y "$package"
|
||||
elif command -v yum &>/dev/null; then
|
||||
yum remove -y "$package"
|
||||
elif command -v apk &>/dev/null; then
|
||||
apk del "$package"
|
||||
else
|
||||
echo "未知的包管理器!"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
break_end() {
|
||||
echo -e "\033[0;32m操作完成\033[0m"
|
||||
echo "按任意键继续..."
|
||||
read -n 1 -s -r -p ""
|
||||
echo ""
|
||||
clear
|
||||
}
|
||||
|
||||
palworld() {
|
||||
p
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
install_add_docker() {
|
||||
if [ -f "/etc/alpine-release" ]; then
|
||||
apk update
|
||||
apk add docker docker-compose
|
||||
rc-update add docker default
|
||||
service docker start
|
||||
else
|
||||
curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
fi
|
||||
}
|
||||
|
||||
install_docker() {
|
||||
if ! command -v docker &>/dev/null; then
|
||||
install_add_docker
|
||||
else
|
||||
echo "Docker 已经安装"
|
||||
fi
|
||||
}
|
||||
|
||||
pal_start() {
|
||||
ip_address
|
||||
tmux new -d -s my1 "docker exec -it steamcmd bash -c '/home/steam/Steam/steamapps/common/PalServer/PalServer.sh'"
|
||||
echo -e "\033[0;32m幻兽帕鲁服务启动啦!\033[0m"
|
||||
echo -e "\033[0;32m游戏下载地址: https://store.steampowered.com/app/1623730\033[0m"
|
||||
echo -e "\033[0;32m进入游戏连接:\033[93m $ipv4_address:8255 \033[0;32m开始冒险吧!\033[0m"
|
||||
|
||||
}
|
||||
|
||||
pal_backup() {
|
||||
cd ~
|
||||
curl -sS -O https://kejilion.pro/pal_backup.sh && chmod +x pal_backup.sh
|
||||
}
|
||||
|
||||
pal_install_status() {
|
||||
CONTAINER_NAME="steamcmd"
|
||||
|
||||
# 检查容器是否已安装
|
||||
if [ "$(docker ps -a -q -f name=$CONTAINER_NAME 2>/dev/null)" ]; then
|
||||
container_status="\e[32m幻兽帕鲁服务已安装\e[0m" # 绿色
|
||||
else
|
||||
container_status="\e[90m幻兽帕鲁服务未安装\e[0m" # 灰色
|
||||
fi
|
||||
|
||||
SESSION_NAME="my1"
|
||||
|
||||
ip_address
|
||||
# 检查 tmux 中是否存在指定的工作区
|
||||
if tmux has-session -t $SESSION_NAME 2>/dev/null; then
|
||||
tmux_status="\e[32m已开服:\033[93m $ipv4_address:8255\e[0m" # 绿色
|
||||
else
|
||||
tmux_status="\e[90m未开服\e[0m" # 灰色
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
while true; do
|
||||
clear
|
||||
pal_install_status
|
||||
echo -e "\033[93m . . ."
|
||||
echo "._ _.|. , _ ._.| _|"
|
||||
echo "[_)(_]| \/\/ (_)[ |(_]"
|
||||
echo "| "
|
||||
echo -e "\033[96m幻兽帕鲁开服一键脚本工具v1.0.2 by KEJILION\033[0m"
|
||||
echo -e "\033[96m-输入\033[93mp\033[96m可快速启动此脚本-\033[0m"
|
||||
echo -e "$container_status $tmux_status"
|
||||
echo "------------------------"
|
||||
echo "1. 安装幻兽帕鲁服务"
|
||||
echo "2. 开启幻兽帕鲁服务"
|
||||
echo "3. 关闭幻兽帕鲁服务"
|
||||
echo "4. 重启幻兽帕鲁服务"
|
||||
echo "------------------------"
|
||||
echo "5. 查看服务器状态"
|
||||
echo "6. 设置虚拟内存"
|
||||
echo "------------------------"
|
||||
echo "7. 导出游戏存档"
|
||||
echo "8. 导入游戏存档"
|
||||
echo "9. 定时备份游戏存档"
|
||||
echo "------------------------"
|
||||
echo "10. 修改游戏配置"
|
||||
echo "------------------------"
|
||||
echo "11. 更新幻兽帕鲁服务"
|
||||
echo "12. 卸载幻兽帕鲁服务"
|
||||
echo "------------------------"
|
||||
echo "k. 科技lion脚本工具箱"
|
||||
echo "------------------------"
|
||||
echo "00. 脚本更新"
|
||||
echo "------------------------"
|
||||
echo "0. 退出脚本"
|
||||
echo "------------------------"
|
||||
read -p "请输入你的选择: " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
clear
|
||||
install_docker
|
||||
install tmux
|
||||
docker run -dit --name steamcmd -p 8255:8211/udp --restart=always cm2network/steamcmd
|
||||
docker exec -it steamcmd bash -c "/home/steam/steamcmd/steamcmd.sh +login anonymous +app_update 2394010 validate +quit"
|
||||
clear
|
||||
pal_start
|
||||
;;
|
||||
|
||||
2)
|
||||
clear
|
||||
docker start steamcmd > /dev/null 2>&1
|
||||
pal_start
|
||||
;;
|
||||
|
||||
3)
|
||||
clear
|
||||
tmux kill-session -t my1
|
||||
docker stop steamcmd > /dev/null 2>&1
|
||||
echo -e "\033[0;32m幻兽帕鲁服务已关闭\033[0m"
|
||||
;;
|
||||
|
||||
4)
|
||||
clear
|
||||
tmux kill-session -t my1
|
||||
docker restart steamcmd > /dev/null 2>&1
|
||||
pal_start
|
||||
;;
|
||||
|
||||
5)
|
||||
clear
|
||||
install btop
|
||||
clear
|
||||
btop
|
||||
;;
|
||||
|
||||
6)
|
||||
clear
|
||||
swap_used=$(free -m | awk 'NR==3{print $3}')
|
||||
swap_total=$(free -m | awk 'NR==3{print $2}')
|
||||
|
||||
if [ "$swap_total" -eq 0 ]; then
|
||||
swap_percentage=0
|
||||
else
|
||||
swap_percentage=$((swap_used * 100 / swap_total))
|
||||
fi
|
||||
|
||||
swap_info="${swap_used}MB/${swap_total}MB (${swap_percentage}%)"
|
||||
|
||||
echo "当前虚拟内存: $swap_info"
|
||||
|
||||
read -p "是否调整大小?(Y/N): " choice
|
||||
|
||||
case "$choice" in
|
||||
[Yy])
|
||||
# 输入新的虚拟内存大小
|
||||
read -p "请输入虚拟内存大小MB: " new_swap
|
||||
|
||||
# 获取当前系统中所有的 swap 分区
|
||||
swap_partitions=$(grep -E '^/dev/' /proc/swaps | awk '{print $1}')
|
||||
|
||||
# 遍历并删除所有的 swap 分区
|
||||
for partition in $swap_partitions; do
|
||||
swapoff "$partition"
|
||||
wipefs -a "$partition" # 清除文件系统标识符
|
||||
mkswap -f "$partition"
|
||||
echo "已删除并重新创建 swap 分区: $partition"
|
||||
done
|
||||
|
||||
# 确保 /swapfile 不再被使用
|
||||
swapoff /swapfile
|
||||
|
||||
# 删除旧的 /swapfile
|
||||
rm -f /swapfile
|
||||
|
||||
# 创建新的 swap 分区
|
||||
dd if=/dev/zero of=/swapfile bs=1M count=$new_swap
|
||||
chmod 600 /swapfile
|
||||
mkswap /swapfile
|
||||
swapon /swapfile
|
||||
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
|
||||
echo "nohup swapon /swapfile" >> /etc/local.d/swap.start
|
||||
chmod +x /etc/local.d/swap.start
|
||||
rc-update add local
|
||||
else
|
||||
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
echo "虚拟内存大小已调整为${new_swap}MB"
|
||||
;;
|
||||
[Nn])
|
||||
echo "已取消"
|
||||
;;
|
||||
*)
|
||||
echo "无效的选择,请输入 Y 或 N。"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
7)
|
||||
clear
|
||||
mkdir -p /home/game
|
||||
docker cp steamcmd:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/ /home/game/palworld/ > /dev/null 2>&1
|
||||
cd /home/game && tar czvf palworld_$(date +"%Y%m%d%H%M%S").tar.gz palworld > /dev/null 2>&1
|
||||
rm -rf /home/game/palworld/
|
||||
echo -e "\033[0;32m游戏存档已导出存放在: /home/game/\033[0m"
|
||||
;;
|
||||
8)
|
||||
clear
|
||||
tmux kill-session -t my1
|
||||
docker exec -it steamcmd bash -c "rm -rf /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/*"
|
||||
cd /home/game/ && ls -t /home/game/*.tar.gz | head -1 | xargs -I {} tar -xzf {}
|
||||
docker cp /home/game/palworld/Config steamcmd:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config > /dev/null 2>&1
|
||||
docker cp /home/game/palworld/ImGui steamcmd:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/ImGui > /dev/null 2>&1
|
||||
docker cp /home/game/palworld/SaveGames steamcmd:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames > /dev/null 2>&1
|
||||
docker exec -it -u root steamcmd bash -c "chmod -R 777 /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/"
|
||||
rm -rf /home/game/palworld/
|
||||
echo -e "\033[0;32m游戏存档已导入\033[0m"
|
||||
docker restart steamcmd > /dev/null 2>&1
|
||||
pal_start
|
||||
;;
|
||||
|
||||
9)
|
||||
clear
|
||||
echo "幻兽帕鲁游戏存档定时备份"
|
||||
echo "------------------------"
|
||||
echo "1. 每周备份 2. 每天备份 3. 每小时备份"
|
||||
echo "------------------------"
|
||||
read -p "请输入你的选择: " dingshi
|
||||
case $dingshi in
|
||||
1)
|
||||
pal_backup
|
||||
(crontab -l ; echo "0 0 * * 1 ./pal_backup.sh") | crontab - > /dev/null 2>&1
|
||||
echo "每周一备份,已设置"
|
||||
|
||||
;;
|
||||
2)
|
||||
pal_backup
|
||||
(crontab -l ; echo "0 3 * * * ./pal_backup.sh") | crontab - > /dev/null 2>&1
|
||||
echo "每天凌晨3点备份,已设置"
|
||||
|
||||
;;
|
||||
3)
|
||||
pal_backup
|
||||
(crontab -l ; echo "0 * * * * ./pal_backup.sh") | crontab - > /dev/null 2>&1
|
||||
echo "每小时整点备份,已设置"
|
||||
|
||||
;;
|
||||
*)
|
||||
echo "已取消"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
10)
|
||||
clear
|
||||
tmux kill-session -t my1
|
||||
cd ~ && curl -sS -O https://kejilion.pro/PalWorldSettings.ini
|
||||
|
||||
echo "配置游戏参数"
|
||||
echo "------------------------"
|
||||
read -p "设置加入的密码(回车默认无密码): " server_password
|
||||
read -p "设置游戏难度: (1. 简单 2. 普通 3. 困难):" Difficulty
|
||||
case $Difficulty in
|
||||
1)
|
||||
Difficulty=1
|
||||
;;
|
||||
|
||||
2)
|
||||
Difficulty=2
|
||||
;;
|
||||
3)
|
||||
Difficulty=3
|
||||
;;
|
||||
*)
|
||||
echo "-默认设置为普通难度"
|
||||
Difficulty=2
|
||||
;;
|
||||
esac
|
||||
|
||||
read -p "经验值倍率: (回车默认1倍):" exp_rate
|
||||
ExpRate=${exp_rate:-1}
|
||||
read -p "死亡后掉落设置: (1. 掉落 2. 不掉落):" DeathPenalty
|
||||
case $DeathPenalty in
|
||||
1)
|
||||
DeathPenalty=All
|
||||
;;
|
||||
|
||||
2)
|
||||
DeathPenalty=None
|
||||
;;
|
||||
*)
|
||||
DeathPenalty=All
|
||||
echo "-默认设置为掉落"
|
||||
;;
|
||||
esac
|
||||
|
||||
read -p "设置pvp模式: (1. 开启 2. 关闭):" pal_pvp
|
||||
|
||||
case $pal_pvp in
|
||||
1)
|
||||
pal_pvp=True
|
||||
;;
|
||||
2)
|
||||
pal_pvp=False
|
||||
;;
|
||||
*)
|
||||
pal_pvp=False
|
||||
echo "-默认关闭pvp模式"
|
||||
;;
|
||||
esac
|
||||
|
||||
# 更新配置文件
|
||||
sed -i "s/ServerPassword=\"\"/ServerPassword=\"$server_password\"/" ~/PalWorldSettings.ini
|
||||
sed -i "s/Difficulty=2/Difficulty=$Difficulty/" ~/PalWorldSettings.ini
|
||||
sed -i "s/ExpRate=1.000000/ExpRate=$ExpRate/" ~/PalWorldSettings.ini
|
||||
sed -i "s/DeathPenalty=All/DeathPenalty=$DeathPenalty/" ~/PalWorldSettings.ini
|
||||
sed -i "s/bEnablePlayerToPlayerDamage=False/bEnablePlayerToPlayerDamage=$pal_pvp/" ~/PalWorldSettings.ini
|
||||
sed -i "s/bIsPvP=False/bIsPvP=$pal_pvp/" ~/PalWorldSettings.ini
|
||||
echo "------------------------"
|
||||
echo "配置文件已更新"
|
||||
|
||||
docker exec -it steamcmd bash -c "rm -f /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini"
|
||||
docker cp ~/PalWorldSettings.ini steamcmd:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/ > /dev/null 2>&1
|
||||
docker exec -it -u root steamcmd bash -c "chmod -R 777 /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/"
|
||||
rm -f ~/PalWorldSettings.ini
|
||||
echo -e "\033[0;32m游戏配置已导入\033[0m"
|
||||
docker restart steamcmd > /dev/null 2>&1
|
||||
pal_start
|
||||
;;
|
||||
|
||||
|
||||
11)
|
||||
clear
|
||||
tmux kill-session -t my1
|
||||
docker restart steamcmd > /dev/null 2>&1
|
||||
docker exec -it steamcmd bash -c "/home/steam/steamcmd/steamcmd.sh +login anonymous +app_update 2394010 validate +quit"
|
||||
clear
|
||||
echo -e "\033[0;32m幻兽帕鲁已更新\033[0m"
|
||||
pal_start
|
||||
;;
|
||||
|
||||
12)
|
||||
clear
|
||||
docker rm -f steamcmd
|
||||
docker rmi -f cm2network/steamcmd
|
||||
;;
|
||||
|
||||
k)
|
||||
cd ~
|
||||
curl -sS -O https://kejilion.pro/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh
|
||||
exit
|
||||
;;
|
||||
|
||||
00)
|
||||
cd ~
|
||||
curl -sS -O https://kejilion.pro/pal_log.sh && chmod +x pal_log.sh && ./pal_log.sh
|
||||
rm pal_log.sh
|
||||
echo ""
|
||||
curl -sS -O https://kejilion.pro/palworld.sh && chmod +x palworld.sh
|
||||
echo "脚本已更新到最新版本!"
|
||||
break_end
|
||||
palworld
|
||||
;;
|
||||
|
||||
|
||||
0)
|
||||
clear
|
||||
exit
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "无效的输入!"
|
||||
;;
|
||||
esac
|
||||
break_end
|
||||
done
|
||||
-490
@@ -1,490 +0,0 @@
|
||||
; Start a new pool named 'www'.
|
||||
; the variable $pool can be used in any directive and will be replaced by the
|
||||
; pool name ('www' here)
|
||||
[www]
|
||||
|
||||
; Per pool prefix
|
||||
; It only applies on the following directives:
|
||||
; - 'access.log'
|
||||
; - 'slowlog'
|
||||
; - 'listen' (unixsocket)
|
||||
; - 'chroot'
|
||||
; - 'chdir'
|
||||
; - 'php_values'
|
||||
; - 'php_admin_values'
|
||||
; When not set, the global prefix (or NONE) applies instead.
|
||||
; Note: This directive can also be relative to the global prefix.
|
||||
; Default Value: none
|
||||
;prefix = /path/to/pools/$pool
|
||||
|
||||
; Unix user/group of the child processes. This can be used only if the master
|
||||
; process running user is root. It is set after the child process is created.
|
||||
; The user and group can be specified either by their name or by their numeric
|
||||
; IDs.
|
||||
; Note: If the user is root, the executable needs to be started with
|
||||
; --allow-to-run-as-root option to work.
|
||||
; Default Values: The user is set to master process running user by default.
|
||||
; If the group is not set, the user's group is used.
|
||||
user = www-data
|
||||
group = www-data
|
||||
|
||||
; The address on which to accept FastCGI requests.
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses
|
||||
; (IPv6 and IPv4-mapped) on a specific port;
|
||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||
; Note: This value is mandatory.
|
||||
listen = 127.0.0.1:9000
|
||||
|
||||
; Set listen(2) backlog.
|
||||
; Default Value: 511 (-1 on Linux, FreeBSD and OpenBSD)
|
||||
;listen.backlog = 511
|
||||
|
||||
; Set permissions for unix socket, if one is used. In Linux, read/write
|
||||
; permissions must be set in order to allow connections from a web server. Many
|
||||
; BSD-derived systems allow connections regardless of permissions. The owner
|
||||
; and group can be specified either by name or by their numeric IDs.
|
||||
; Default Values: Owner is set to the master process running user. If the group
|
||||
; is not set, the owner's group is used. Mode is set to 0660.
|
||||
;listen.owner = www-data
|
||||
;listen.group = www-data
|
||||
;listen.mode = 0660
|
||||
|
||||
; When POSIX Access Control Lists are supported you can set them using
|
||||
; these options, value is a comma separated list of user/group names.
|
||||
; When set, listen.owner and listen.group are ignored
|
||||
;listen.acl_users =
|
||||
;listen.acl_groups =
|
||||
|
||||
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
|
||||
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
||||
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
||||
; must be separated by a comma. If this value is left blank, connections will be
|
||||
; accepted from any ip address.
|
||||
; Default Value: any
|
||||
;listen.allowed_clients = 127.0.0.1
|
||||
|
||||
; Set the associated the route table (FIB). FreeBSD only
|
||||
; Default Value: -1
|
||||
;listen.setfib = 1
|
||||
|
||||
; Specify the nice(2) priority to apply to the pool processes (only if set)
|
||||
; The value can vary from -19 (highest priority) to 20 (lower priority)
|
||||
; Note: - It will only work if the FPM master process is launched as root
|
||||
; - The pool processes will inherit the master process priority
|
||||
; unless it specified otherwise
|
||||
; Default Value: no set
|
||||
; process.priority = -19
|
||||
|
||||
; Set the process dumpable flag (PR_SET_DUMPABLE prctl for Linux or
|
||||
; PROC_TRACE_CTL procctl for FreeBSD) even if the process user
|
||||
; or group is different than the master process user. It allows to create process
|
||||
; core dump and ptrace the process for the pool user.
|
||||
; Default Value: no
|
||||
; process.dumpable = yes
|
||||
|
||||
; Choose how the process manager will control the number of child processes.
|
||||
; Possible Values:
|
||||
; static - a fixed number (pm.max_children) of child processes;
|
||||
; dynamic - the number of child processes are set dynamically based on the
|
||||
; following directives. With this process management, there will be
|
||||
; always at least 1 children.
|
||||
; pm.max_children - the maximum number of children that can
|
||||
; be alive at the same time.
|
||||
; pm.start_servers - the number of children created on startup.
|
||||
; pm.min_spare_servers - the minimum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is less than this
|
||||
; number then some children will be created.
|
||||
; pm.max_spare_servers - the maximum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is greater than this
|
||||
; number then some children will be killed.
|
||||
; pm.max_spawn_rate - the maximum number of rate to spawn child
|
||||
; processes at once.
|
||||
; ondemand - no children are created at startup. Children will be forked when
|
||||
; new requests will connect. The following parameter are used:
|
||||
; pm.max_children - the maximum number of children that
|
||||
; can be alive at the same time.
|
||||
; pm.process_idle_timeout - The number of seconds after which
|
||||
; an idle process will be killed.
|
||||
; Note: This value is mandatory.
|
||||
pm = dynamic
|
||||
|
||||
; The number of child processes to be created when pm is set to 'static' and the
|
||||
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
|
||||
; This value sets the limit on the number of simultaneous requests that will be
|
||||
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
|
||||
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
|
||||
; CGI. The below defaults are based on a server without much resources. Don't
|
||||
; forget to tweak pm.* to fit your needs.
|
||||
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
|
||||
; Note: This value is mandatory.
|
||||
pm.max_children = 10
|
||||
|
||||
; The number of child processes created on startup.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Default Value: (min_spare_servers + max_spare_servers) / 2
|
||||
pm.start_servers = 3
|
||||
|
||||
; The desired minimum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.min_spare_servers = 3
|
||||
|
||||
; The desired maximum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.max_spare_servers = 5
|
||||
|
||||
; The number of rate to spawn child processes at once.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
; Default Value: 32
|
||||
;pm.max_spawn_rate = 32
|
||||
|
||||
; The number of seconds after which an idle process will be killed.
|
||||
; Note: Used only when pm is set to 'ondemand'
|
||||
; Default Value: 10s
|
||||
pm.process_idle_timeout = 20s;
|
||||
|
||||
; The number of requests each child process should execute before respawning.
|
||||
; This can be useful to work around memory leaks in 3rd party libraries. For
|
||||
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
|
||||
; Default Value: 0
|
||||
;pm.max_requests = 500
|
||||
|
||||
; The URI to view the FPM status page. If this value is not set, no URI will be
|
||||
; recognized as a status page. It shows the following information:
|
||||
; pool - the name of the pool;
|
||||
; process manager - static, dynamic or ondemand;
|
||||
; start time - the date and time FPM has started;
|
||||
; start since - number of seconds since FPM has started;
|
||||
; accepted conn - the number of request accepted by the pool;
|
||||
; listen queue - the number of request in the queue of pending
|
||||
; connections (see backlog in listen(2));
|
||||
; max listen queue - the maximum number of requests in the queue
|
||||
; of pending connections since FPM has started;
|
||||
; listen queue len - the size of the socket queue of pending connections;
|
||||
; idle processes - the number of idle processes;
|
||||
; active processes - the number of active processes;
|
||||
; total processes - the number of idle + active processes;
|
||||
; max active processes - the maximum number of active processes since FPM
|
||||
; has started;
|
||||
; max children reached - number of times, the process limit has been reached,
|
||||
; when pm tries to start more children (works only for
|
||||
; pm 'dynamic' and 'ondemand');
|
||||
; Value are updated in real time.
|
||||
; Example output:
|
||||
; pool: www
|
||||
; process manager: static
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 62636
|
||||
; accepted conn: 190460
|
||||
; listen queue: 0
|
||||
; max listen queue: 1
|
||||
; listen queue len: 42
|
||||
; idle processes: 4
|
||||
; active processes: 11
|
||||
; total processes: 15
|
||||
; max active processes: 12
|
||||
; max children reached: 0
|
||||
;
|
||||
; By default the status page output is formatted as text/plain. Passing either
|
||||
; 'html', 'xml' or 'json' in the query string will return the corresponding
|
||||
; output syntax. Example:
|
||||
; http://www.foo.bar/status
|
||||
; http://www.foo.bar/status?json
|
||||
; http://www.foo.bar/status?html
|
||||
; http://www.foo.bar/status?xml
|
||||
;
|
||||
; By default the status page only outputs short status. Passing 'full' in the
|
||||
; query string will also return status for each pool process.
|
||||
; Example:
|
||||
; http://www.foo.bar/status?full
|
||||
; http://www.foo.bar/status?json&full
|
||||
; http://www.foo.bar/status?html&full
|
||||
; http://www.foo.bar/status?xml&full
|
||||
; The Full status returns for each process:
|
||||
; pid - the PID of the process;
|
||||
; state - the state of the process (Idle, Running, ...);
|
||||
; start time - the date and time the process has started;
|
||||
; start since - the number of seconds since the process has started;
|
||||
; requests - the number of requests the process has served;
|
||||
; request duration - the duration in µs of the requests;
|
||||
; request method - the request method (GET, POST, ...);
|
||||
; request URI - the request URI with the query string;
|
||||
; content length - the content length of the request (only with POST);
|
||||
; user - the user (PHP_AUTH_USER) (or '-' if not set);
|
||||
; script - the main script called (or '-' if not set);
|
||||
; last request cpu - the %cpu the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because CPU calculation is done when the request
|
||||
; processing has terminated;
|
||||
; last request memory - the max amount of memory the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because memory calculation is done when the request
|
||||
; processing has terminated;
|
||||
; If the process is in Idle state, then informations are related to the
|
||||
; last request the process has served. Otherwise informations are related to
|
||||
; the current request being served.
|
||||
; Example output:
|
||||
; ************************
|
||||
; pid: 31330
|
||||
; state: Running
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 63087
|
||||
; requests: 12808
|
||||
; request duration: 1250261
|
||||
; request method: GET
|
||||
; request URI: /test_mem.php?N=10000
|
||||
; content length: 0
|
||||
; user: -
|
||||
; script: /home/fat/web/docs/php/test_mem.php
|
||||
; last request cpu: 0.00
|
||||
; last request memory: 0
|
||||
;
|
||||
; Note: There is a real-time FPM status monitoring sample web page available
|
||||
; It's available in: /usr/local/share/php/fpm/status.html
|
||||
;
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;pm.status_path = /status
|
||||
|
||||
; The address on which to accept FastCGI status request. This creates a new
|
||||
; invisible pool that can handle requests independently. This is useful
|
||||
; if the main pool is busy with long running requests because it is still possible
|
||||
; to get the status before finishing the long running requests.
|
||||
;
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses
|
||||
; (IPv6 and IPv4-mapped) on a specific port;
|
||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||
; Default Value: value of the listen option
|
||||
;pm.status_listen = 127.0.0.1:9001
|
||||
|
||||
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
||||
; URI will be recognized as a ping page. This could be used to test from outside
|
||||
; that FPM is alive and responding, or to
|
||||
; - create a graph of FPM availability (rrd or such);
|
||||
; - remove a server from a group if it is not responding (load balancing);
|
||||
; - trigger alerts for the operating team (24/7).
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;ping.path = /ping
|
||||
|
||||
; This directive may be used to customize the response of a ping request. The
|
||||
; response is formatted as text/plain with a 200 response code.
|
||||
; Default Value: pong
|
||||
;ping.response = pong
|
||||
|
||||
; The access log file
|
||||
; Default: not set
|
||||
;access.log = log/$pool.access.log
|
||||
|
||||
; The access log format.
|
||||
; The following syntax is allowed
|
||||
; %%: the '%' character
|
||||
; %C: %CPU used by the request
|
||||
; it can accept the following format:
|
||||
; - %{user}C for user CPU only
|
||||
; - %{system}C for system CPU only
|
||||
; - %{total}C for user + system CPU (default)
|
||||
; %d: time taken to serve the request
|
||||
; it can accept the following format:
|
||||
; - %{seconds}d (default)
|
||||
; - %{milliseconds}d
|
||||
; - %{milli}d
|
||||
; - %{microseconds}d
|
||||
; - %{micro}d
|
||||
; %e: an environment variable (same as $_ENV or $_SERVER)
|
||||
; it must be associated with embraces to specify the name of the env
|
||||
; variable. Some examples:
|
||||
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
|
||||
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
|
||||
; %f: script filename
|
||||
; %l: content-length of the request (for POST request only)
|
||||
; %m: request method
|
||||
; %M: peak of memory allocated by PHP
|
||||
; it can accept the following format:
|
||||
; - %{bytes}M (default)
|
||||
; - %{kilobytes}M
|
||||
; - %{kilo}M
|
||||
; - %{megabytes}M
|
||||
; - %{mega}M
|
||||
; %n: pool name
|
||||
; %o: output header
|
||||
; it must be associated with embraces to specify the name of the header:
|
||||
; - %{Content-Type}o
|
||||
; - %{X-Powered-By}o
|
||||
; - %{Transfert-Encoding}o
|
||||
; - ....
|
||||
; %p: PID of the child that serviced the request
|
||||
; %P: PID of the parent of the child that serviced the request
|
||||
; %q: the query string
|
||||
; %Q: the '?' character if query string exists
|
||||
; %r: the request URI (without the query string, see %q and %Q)
|
||||
; %R: remote IP address
|
||||
; %s: status (response code)
|
||||
; %t: server time the request was received
|
||||
; it can accept a strftime(3) format:
|
||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||
; The strftime(3) format must be encapsulated in a %{<strftime_format>}t tag
|
||||
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
|
||||
; %T: time the log has been written (the request has finished)
|
||||
; it can accept a strftime(3) format:
|
||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||
; The strftime(3) format must be encapsulated in a %{<strftime_format>}t tag
|
||||
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
|
||||
; %u: remote user
|
||||
;
|
||||
; Default: "%R - %u %t \"%m %r\" %s"
|
||||
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"
|
||||
|
||||
; A list of request_uri values which should be filtered from the access log.
|
||||
;
|
||||
; As a security precuation, this setting will be ignored if:
|
||||
; - the request method is not GET or HEAD; or
|
||||
; - there is a request body; or
|
||||
; - there are query parameters; or
|
||||
; - the response code is outwith the successful range of 200 to 299
|
||||
;
|
||||
; Note: The paths are matched against the output of the access.format tag "%r".
|
||||
; On common configurations, this may look more like SCRIPT_NAME than the
|
||||
; expected pre-rewrite URI.
|
||||
;
|
||||
; Default Value: not set
|
||||
;access.suppress_path[] = /ping
|
||||
;access.suppress_path[] = /health_check.php
|
||||
|
||||
; The log file for slow requests
|
||||
; Default Value: not set
|
||||
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
||||
;slowlog = log/$pool.log.slow
|
||||
|
||||
; The timeout for serving a single request after which a PHP backtrace will be
|
||||
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_slowlog_timeout = 0
|
||||
|
||||
; Depth of slow log stack trace.
|
||||
; Default Value: 20
|
||||
;request_slowlog_trace_depth = 20
|
||||
|
||||
; The timeout for serving a single request after which the worker process will
|
||||
; be killed. This option should be used when the 'max_execution_time' ini option
|
||||
; does not stop script execution for some reason. A value of '0' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_terminate_timeout = 0
|
||||
|
||||
; The timeout set by 'request_terminate_timeout' ini option is not engaged after
|
||||
; application calls 'fastcgi_finish_request' or when application has finished and
|
||||
; shutdown functions are being called (registered via register_shutdown_function).
|
||||
; This option will enable timeout limit to be applied unconditionally
|
||||
; even in such cases.
|
||||
; Default Value: no
|
||||
;request_terminate_timeout_track_finished = no
|
||||
|
||||
; Set open file descriptor rlimit.
|
||||
; Default Value: system defined value
|
||||
;rlimit_files = 1024
|
||||
|
||||
; Set max core size rlimit.
|
||||
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
||||
; Default Value: system defined value
|
||||
;rlimit_core = 0
|
||||
|
||||
; Chroot to this directory at the start. This value must be defined as an
|
||||
; absolute path. When this value is not set, chroot is not used.
|
||||
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
||||
; of its subdirectories. If the pool prefix is not set, the global prefix
|
||||
; will be used instead.
|
||||
; Note: chrooting is a great security feature and should be used whenever
|
||||
; possible. However, all PHP paths will be relative to the chroot
|
||||
; (error_log, sessions.save_path, ...).
|
||||
; Default Value: not set
|
||||
;chroot =
|
||||
|
||||
; Chdir to this directory at the start.
|
||||
; Note: relative path can be used.
|
||||
; Default Value: current directory or / when chroot
|
||||
;chdir = /var/www
|
||||
|
||||
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
||||
; stderr will be redirected to /dev/null according to FastCGI specs.
|
||||
; Note: on highloaded environment, this can cause some delay in the page
|
||||
; process time (several ms).
|
||||
; Default Value: no
|
||||
;catch_workers_output = yes
|
||||
|
||||
; Decorate worker output with prefix and suffix containing information about
|
||||
; the child that writes to the log and if stdout or stderr is used as well as
|
||||
; log level and time. This options is used only if catch_workers_output is yes.
|
||||
; Settings to "no" will output data as written to the stdout or stderr.
|
||||
; Default value: yes
|
||||
;decorate_workers_output = no
|
||||
|
||||
; Clear environment in FPM workers
|
||||
; Prevents arbitrary environment variables from reaching FPM worker processes
|
||||
; by clearing the environment in workers before env vars specified in this
|
||||
; pool configuration are added.
|
||||
; Setting to "no" will make all environment variables available to PHP code
|
||||
; via getenv(), $_ENV and $_SERVER.
|
||||
; Default Value: yes
|
||||
;clear_env = no
|
||||
|
||||
; Limits the extensions of the main script FPM will allow to parse. This can
|
||||
; prevent configuration mistakes on the web server side. You should only limit
|
||||
; FPM to .php extensions to prevent malicious users to use other extensions to
|
||||
; execute php code.
|
||||
; Note: set an empty value to allow all extensions.
|
||||
; Default Value: .php
|
||||
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
||||
|
||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||
; the current environment.
|
||||
; Default Value: clean env
|
||||
;env[HOSTNAME] = $HOSTNAME
|
||||
;env[PATH] = /usr/local/bin:/usr/bin:/bin
|
||||
;env[TMP] = /tmp
|
||||
;env[TMPDIR] = /tmp
|
||||
;env[TEMP] = /tmp
|
||||
|
||||
; Additional php.ini defines, specific to this pool of workers. These settings
|
||||
; overwrite the values previously defined in the php.ini. The directives are the
|
||||
; same as the PHP SAPI:
|
||||
; php_value/php_flag - you can set classic ini defines which can
|
||||
; be overwritten from PHP call 'ini_set'.
|
||||
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
||||
; PHP call 'ini_set'
|
||||
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
||||
|
||||
; Defining 'extension' will load the corresponding shared extension from
|
||||
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
|
||||
; overwrite previously defined php.ini values, but will append the new value
|
||||
; instead.
|
||||
|
||||
; Note: path INI options can be relative and will be expanded with the prefix
|
||||
; (pool, global or /usr/local)
|
||||
|
||||
; Default Value: nothing is defined by default except the values in php.ini and
|
||||
; specified at startup with the -d argument
|
||||
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
|
||||
php_flag[display_errors] = off
|
||||
php_admin_value[error_log] = /var/log/fpm-php.www.log
|
||||
php_admin_flag[log_errors] = on
|
||||
;php_admin_value[memory_limit] = 32M
|
||||
@@ -1,490 +0,0 @@
|
||||
; Start a new pool named 'www'.
|
||||
; the variable $pool can be used in any directive and will be replaced by the
|
||||
; pool name ('www' here)
|
||||
[www]
|
||||
|
||||
; Per pool prefix
|
||||
; It only applies on the following directives:
|
||||
; - 'access.log'
|
||||
; - 'slowlog'
|
||||
; - 'listen' (unixsocket)
|
||||
; - 'chroot'
|
||||
; - 'chdir'
|
||||
; - 'php_values'
|
||||
; - 'php_admin_values'
|
||||
; When not set, the global prefix (or NONE) applies instead.
|
||||
; Note: This directive can also be relative to the global prefix.
|
||||
; Default Value: none
|
||||
;prefix = /path/to/pools/$pool
|
||||
|
||||
; Unix user/group of the child processes. This can be used only if the master
|
||||
; process running user is root. It is set after the child process is created.
|
||||
; The user and group can be specified either by their name or by their numeric
|
||||
; IDs.
|
||||
; Note: If the user is root, the executable needs to be started with
|
||||
; --allow-to-run-as-root option to work.
|
||||
; Default Values: The user is set to master process running user by default.
|
||||
; If the group is not set, the user's group is used.
|
||||
user = www-data
|
||||
group = www-data
|
||||
|
||||
; The address on which to accept FastCGI requests.
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses
|
||||
; (IPv6 and IPv4-mapped) on a specific port;
|
||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||
; Note: This value is mandatory.
|
||||
listen = 127.0.0.1:9000
|
||||
|
||||
; Set listen(2) backlog.
|
||||
; Default Value: 511 (-1 on Linux, FreeBSD and OpenBSD)
|
||||
;listen.backlog = 511
|
||||
|
||||
; Set permissions for unix socket, if one is used. In Linux, read/write
|
||||
; permissions must be set in order to allow connections from a web server. Many
|
||||
; BSD-derived systems allow connections regardless of permissions. The owner
|
||||
; and group can be specified either by name or by their numeric IDs.
|
||||
; Default Values: Owner is set to the master process running user. If the group
|
||||
; is not set, the owner's group is used. Mode is set to 0660.
|
||||
;listen.owner = www-data
|
||||
;listen.group = www-data
|
||||
;listen.mode = 0660
|
||||
|
||||
; When POSIX Access Control Lists are supported you can set them using
|
||||
; these options, value is a comma separated list of user/group names.
|
||||
; When set, listen.owner and listen.group are ignored
|
||||
;listen.acl_users =
|
||||
;listen.acl_groups =
|
||||
|
||||
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
|
||||
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
||||
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
||||
; must be separated by a comma. If this value is left blank, connections will be
|
||||
; accepted from any ip address.
|
||||
; Default Value: any
|
||||
;listen.allowed_clients = 127.0.0.1
|
||||
|
||||
; Set the associated the route table (FIB). FreeBSD only
|
||||
; Default Value: -1
|
||||
;listen.setfib = 1
|
||||
|
||||
; Specify the nice(2) priority to apply to the pool processes (only if set)
|
||||
; The value can vary from -19 (highest priority) to 20 (lower priority)
|
||||
; Note: - It will only work if the FPM master process is launched as root
|
||||
; - The pool processes will inherit the master process priority
|
||||
; unless it specified otherwise
|
||||
; Default Value: no set
|
||||
; process.priority = -19
|
||||
|
||||
; Set the process dumpable flag (PR_SET_DUMPABLE prctl for Linux or
|
||||
; PROC_TRACE_CTL procctl for FreeBSD) even if the process user
|
||||
; or group is different than the master process user. It allows to create process
|
||||
; core dump and ptrace the process for the pool user.
|
||||
; Default Value: no
|
||||
; process.dumpable = yes
|
||||
|
||||
; Choose how the process manager will control the number of child processes.
|
||||
; Possible Values:
|
||||
; static - a fixed number (pm.max_children) of child processes;
|
||||
; dynamic - the number of child processes are set dynamically based on the
|
||||
; following directives. With this process management, there will be
|
||||
; always at least 1 children.
|
||||
; pm.max_children - the maximum number of children that can
|
||||
; be alive at the same time.
|
||||
; pm.start_servers - the number of children created on startup.
|
||||
; pm.min_spare_servers - the minimum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is less than this
|
||||
; number then some children will be created.
|
||||
; pm.max_spare_servers - the maximum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is greater than this
|
||||
; number then some children will be killed.
|
||||
; pm.max_spawn_rate - the maximum number of rate to spawn child
|
||||
; processes at once.
|
||||
; ondemand - no children are created at startup. Children will be forked when
|
||||
; new requests will connect. The following parameter are used:
|
||||
; pm.max_children - the maximum number of children that
|
||||
; can be alive at the same time.
|
||||
; pm.process_idle_timeout - The number of seconds after which
|
||||
; an idle process will be killed.
|
||||
; Note: This value is mandatory.
|
||||
pm = dynamic
|
||||
|
||||
; The number of child processes to be created when pm is set to 'static' and the
|
||||
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
|
||||
; This value sets the limit on the number of simultaneous requests that will be
|
||||
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
|
||||
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
|
||||
; CGI. The below defaults are based on a server without much resources. Don't
|
||||
; forget to tweak pm.* to fit your needs.
|
||||
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
|
||||
; Note: This value is mandatory.
|
||||
pm.max_children = 50
|
||||
|
||||
; The number of child processes created on startup.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Default Value: (min_spare_servers + max_spare_servers) / 2
|
||||
pm.start_servers = 5
|
||||
|
||||
; The desired minimum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.min_spare_servers = 5
|
||||
|
||||
; The desired maximum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.max_spare_servers = 10
|
||||
|
||||
; The number of rate to spawn child processes at once.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
; Default Value: 32
|
||||
;pm.max_spawn_rate = 32
|
||||
|
||||
; The number of seconds after which an idle process will be killed.
|
||||
; Note: Used only when pm is set to 'ondemand'
|
||||
; Default Value: 10s
|
||||
pm.process_idle_timeout = 20s;
|
||||
|
||||
; The number of requests each child process should execute before respawning.
|
||||
; This can be useful to work around memory leaks in 3rd party libraries. For
|
||||
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
|
||||
; Default Value: 0
|
||||
;pm.max_requests = 500
|
||||
|
||||
; The URI to view the FPM status page. If this value is not set, no URI will be
|
||||
; recognized as a status page. It shows the following information:
|
||||
; pool - the name of the pool;
|
||||
; process manager - static, dynamic or ondemand;
|
||||
; start time - the date and time FPM has started;
|
||||
; start since - number of seconds since FPM has started;
|
||||
; accepted conn - the number of request accepted by the pool;
|
||||
; listen queue - the number of request in the queue of pending
|
||||
; connections (see backlog in listen(2));
|
||||
; max listen queue - the maximum number of requests in the queue
|
||||
; of pending connections since FPM has started;
|
||||
; listen queue len - the size of the socket queue of pending connections;
|
||||
; idle processes - the number of idle processes;
|
||||
; active processes - the number of active processes;
|
||||
; total processes - the number of idle + active processes;
|
||||
; max active processes - the maximum number of active processes since FPM
|
||||
; has started;
|
||||
; max children reached - number of times, the process limit has been reached,
|
||||
; when pm tries to start more children (works only for
|
||||
; pm 'dynamic' and 'ondemand');
|
||||
; Value are updated in real time.
|
||||
; Example output:
|
||||
; pool: www
|
||||
; process manager: static
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 62636
|
||||
; accepted conn: 190460
|
||||
; listen queue: 0
|
||||
; max listen queue: 1
|
||||
; listen queue len: 42
|
||||
; idle processes: 4
|
||||
; active processes: 11
|
||||
; total processes: 15
|
||||
; max active processes: 12
|
||||
; max children reached: 0
|
||||
;
|
||||
; By default the status page output is formatted as text/plain. Passing either
|
||||
; 'html', 'xml' or 'json' in the query string will return the corresponding
|
||||
; output syntax. Example:
|
||||
; http://www.foo.bar/status
|
||||
; http://www.foo.bar/status?json
|
||||
; http://www.foo.bar/status?html
|
||||
; http://www.foo.bar/status?xml
|
||||
;
|
||||
; By default the status page only outputs short status. Passing 'full' in the
|
||||
; query string will also return status for each pool process.
|
||||
; Example:
|
||||
; http://www.foo.bar/status?full
|
||||
; http://www.foo.bar/status?json&full
|
||||
; http://www.foo.bar/status?html&full
|
||||
; http://www.foo.bar/status?xml&full
|
||||
; The Full status returns for each process:
|
||||
; pid - the PID of the process;
|
||||
; state - the state of the process (Idle, Running, ...);
|
||||
; start time - the date and time the process has started;
|
||||
; start since - the number of seconds since the process has started;
|
||||
; requests - the number of requests the process has served;
|
||||
; request duration - the duration in µs of the requests;
|
||||
; request method - the request method (GET, POST, ...);
|
||||
; request URI - the request URI with the query string;
|
||||
; content length - the content length of the request (only with POST);
|
||||
; user - the user (PHP_AUTH_USER) (or '-' if not set);
|
||||
; script - the main script called (or '-' if not set);
|
||||
; last request cpu - the %cpu the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because CPU calculation is done when the request
|
||||
; processing has terminated;
|
||||
; last request memory - the max amount of memory the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because memory calculation is done when the request
|
||||
; processing has terminated;
|
||||
; If the process is in Idle state, then informations are related to the
|
||||
; last request the process has served. Otherwise informations are related to
|
||||
; the current request being served.
|
||||
; Example output:
|
||||
; ************************
|
||||
; pid: 31330
|
||||
; state: Running
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 63087
|
||||
; requests: 12808
|
||||
; request duration: 1250261
|
||||
; request method: GET
|
||||
; request URI: /test_mem.php?N=10000
|
||||
; content length: 0
|
||||
; user: -
|
||||
; script: /home/fat/web/docs/php/test_mem.php
|
||||
; last request cpu: 0.00
|
||||
; last request memory: 0
|
||||
;
|
||||
; Note: There is a real-time FPM status monitoring sample web page available
|
||||
; It's available in: /usr/local/share/php/fpm/status.html
|
||||
;
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;pm.status_path = /status
|
||||
|
||||
; The address on which to accept FastCGI status request. This creates a new
|
||||
; invisible pool that can handle requests independently. This is useful
|
||||
; if the main pool is busy with long running requests because it is still possible
|
||||
; to get the status before finishing the long running requests.
|
||||
;
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses
|
||||
; (IPv6 and IPv4-mapped) on a specific port;
|
||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||
; Default Value: value of the listen option
|
||||
;pm.status_listen = 127.0.0.1:9001
|
||||
|
||||
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
||||
; URI will be recognized as a ping page. This could be used to test from outside
|
||||
; that FPM is alive and responding, or to
|
||||
; - create a graph of FPM availability (rrd or such);
|
||||
; - remove a server from a group if it is not responding (load balancing);
|
||||
; - trigger alerts for the operating team (24/7).
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;ping.path = /ping
|
||||
|
||||
; This directive may be used to customize the response of a ping request. The
|
||||
; response is formatted as text/plain with a 200 response code.
|
||||
; Default Value: pong
|
||||
;ping.response = pong
|
||||
|
||||
; The access log file
|
||||
; Default: not set
|
||||
;access.log = log/$pool.access.log
|
||||
|
||||
; The access log format.
|
||||
; The following syntax is allowed
|
||||
; %%: the '%' character
|
||||
; %C: %CPU used by the request
|
||||
; it can accept the following format:
|
||||
; - %{user}C for user CPU only
|
||||
; - %{system}C for system CPU only
|
||||
; - %{total}C for user + system CPU (default)
|
||||
; %d: time taken to serve the request
|
||||
; it can accept the following format:
|
||||
; - %{seconds}d (default)
|
||||
; - %{milliseconds}d
|
||||
; - %{milli}d
|
||||
; - %{microseconds}d
|
||||
; - %{micro}d
|
||||
; %e: an environment variable (same as $_ENV or $_SERVER)
|
||||
; it must be associated with embraces to specify the name of the env
|
||||
; variable. Some examples:
|
||||
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
|
||||
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
|
||||
; %f: script filename
|
||||
; %l: content-length of the request (for POST request only)
|
||||
; %m: request method
|
||||
; %M: peak of memory allocated by PHP
|
||||
; it can accept the following format:
|
||||
; - %{bytes}M (default)
|
||||
; - %{kilobytes}M
|
||||
; - %{kilo}M
|
||||
; - %{megabytes}M
|
||||
; - %{mega}M
|
||||
; %n: pool name
|
||||
; %o: output header
|
||||
; it must be associated with embraces to specify the name of the header:
|
||||
; - %{Content-Type}o
|
||||
; - %{X-Powered-By}o
|
||||
; - %{Transfert-Encoding}o
|
||||
; - ....
|
||||
; %p: PID of the child that serviced the request
|
||||
; %P: PID of the parent of the child that serviced the request
|
||||
; %q: the query string
|
||||
; %Q: the '?' character if query string exists
|
||||
; %r: the request URI (without the query string, see %q and %Q)
|
||||
; %R: remote IP address
|
||||
; %s: status (response code)
|
||||
; %t: server time the request was received
|
||||
; it can accept a strftime(3) format:
|
||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||
; The strftime(3) format must be encapsulated in a %{<strftime_format>}t tag
|
||||
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
|
||||
; %T: time the log has been written (the request has finished)
|
||||
; it can accept a strftime(3) format:
|
||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||
; The strftime(3) format must be encapsulated in a %{<strftime_format>}t tag
|
||||
; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t
|
||||
; %u: remote user
|
||||
;
|
||||
; Default: "%R - %u %t \"%m %r\" %s"
|
||||
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{milli}d %{kilo}M %C%%"
|
||||
|
||||
; A list of request_uri values which should be filtered from the access log.
|
||||
;
|
||||
; As a security precuation, this setting will be ignored if:
|
||||
; - the request method is not GET or HEAD; or
|
||||
; - there is a request body; or
|
||||
; - there are query parameters; or
|
||||
; - the response code is outwith the successful range of 200 to 299
|
||||
;
|
||||
; Note: The paths are matched against the output of the access.format tag "%r".
|
||||
; On common configurations, this may look more like SCRIPT_NAME than the
|
||||
; expected pre-rewrite URI.
|
||||
;
|
||||
; Default Value: not set
|
||||
;access.suppress_path[] = /ping
|
||||
;access.suppress_path[] = /health_check.php
|
||||
|
||||
; The log file for slow requests
|
||||
; Default Value: not set
|
||||
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
||||
;slowlog = log/$pool.log.slow
|
||||
|
||||
; The timeout for serving a single request after which a PHP backtrace will be
|
||||
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_slowlog_timeout = 0
|
||||
|
||||
; Depth of slow log stack trace.
|
||||
; Default Value: 20
|
||||
;request_slowlog_trace_depth = 20
|
||||
|
||||
; The timeout for serving a single request after which the worker process will
|
||||
; be killed. This option should be used when the 'max_execution_time' ini option
|
||||
; does not stop script execution for some reason. A value of '0' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_terminate_timeout = 0
|
||||
|
||||
; The timeout set by 'request_terminate_timeout' ini option is not engaged after
|
||||
; application calls 'fastcgi_finish_request' or when application has finished and
|
||||
; shutdown functions are being called (registered via register_shutdown_function).
|
||||
; This option will enable timeout limit to be applied unconditionally
|
||||
; even in such cases.
|
||||
; Default Value: no
|
||||
;request_terminate_timeout_track_finished = no
|
||||
|
||||
; Set open file descriptor rlimit.
|
||||
; Default Value: system defined value
|
||||
;rlimit_files = 1024
|
||||
|
||||
; Set max core size rlimit.
|
||||
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
||||
; Default Value: system defined value
|
||||
;rlimit_core = 0
|
||||
|
||||
; Chroot to this directory at the start. This value must be defined as an
|
||||
; absolute path. When this value is not set, chroot is not used.
|
||||
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
||||
; of its subdirectories. If the pool prefix is not set, the global prefix
|
||||
; will be used instead.
|
||||
; Note: chrooting is a great security feature and should be used whenever
|
||||
; possible. However, all PHP paths will be relative to the chroot
|
||||
; (error_log, sessions.save_path, ...).
|
||||
; Default Value: not set
|
||||
;chroot =
|
||||
|
||||
; Chdir to this directory at the start.
|
||||
; Note: relative path can be used.
|
||||
; Default Value: current directory or / when chroot
|
||||
;chdir = /var/www
|
||||
|
||||
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
||||
; stderr will be redirected to /dev/null according to FastCGI specs.
|
||||
; Note: on highloaded environment, this can cause some delay in the page
|
||||
; process time (several ms).
|
||||
; Default Value: no
|
||||
;catch_workers_output = yes
|
||||
|
||||
; Decorate worker output with prefix and suffix containing information about
|
||||
; the child that writes to the log and if stdout or stderr is used as well as
|
||||
; log level and time. This options is used only if catch_workers_output is yes.
|
||||
; Settings to "no" will output data as written to the stdout or stderr.
|
||||
; Default value: yes
|
||||
;decorate_workers_output = no
|
||||
|
||||
; Clear environment in FPM workers
|
||||
; Prevents arbitrary environment variables from reaching FPM worker processes
|
||||
; by clearing the environment in workers before env vars specified in this
|
||||
; pool configuration are added.
|
||||
; Setting to "no" will make all environment variables available to PHP code
|
||||
; via getenv(), $_ENV and $_SERVER.
|
||||
; Default Value: yes
|
||||
;clear_env = no
|
||||
|
||||
; Limits the extensions of the main script FPM will allow to parse. This can
|
||||
; prevent configuration mistakes on the web server side. You should only limit
|
||||
; FPM to .php extensions to prevent malicious users to use other extensions to
|
||||
; execute php code.
|
||||
; Note: set an empty value to allow all extensions.
|
||||
; Default Value: .php
|
||||
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
||||
|
||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||
; the current environment.
|
||||
; Default Value: clean env
|
||||
;env[HOSTNAME] = $HOSTNAME
|
||||
;env[PATH] = /usr/local/bin:/usr/bin:/bin
|
||||
;env[TMP] = /tmp
|
||||
;env[TMPDIR] = /tmp
|
||||
;env[TEMP] = /tmp
|
||||
|
||||
; Additional php.ini defines, specific to this pool of workers. These settings
|
||||
; overwrite the values previously defined in the php.ini. The directives are the
|
||||
; same as the PHP SAPI:
|
||||
; php_value/php_flag - you can set classic ini defines which can
|
||||
; be overwritten from PHP call 'ini_set'.
|
||||
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
||||
; PHP call 'ini_set'
|
||||
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
||||
|
||||
; Defining 'extension' will load the corresponding shared extension from
|
||||
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
|
||||
; overwrite previously defined php.ini values, but will append the new value
|
||||
; instead.
|
||||
|
||||
; Note: path INI options can be relative and will be expanded with the prefix
|
||||
; (pool, global or /usr/local)
|
||||
|
||||
; Default Value: nothing is defined by default except the values in php.ini and
|
||||
; specified at startup with the -d argument
|
||||
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
|
||||
php_flag[display_errors] = off
|
||||
php_admin_value[error_log] = /var/log/fpm-php.www.log
|
||||
php_admin_flag[log_errors] = on
|
||||
;php_admin_value[memory_limit] = 32M
|
||||
Reference in New Issue
Block a user