centos8配置

好的!CentOS 8.4的具体配置路径和命令:

第一步:RLimit配置

在CentOS 8.4中,需要编辑虚拟主机配置:

 

 

 

bash

# 编辑主配置文件或虚拟主机配置
sudo vi /etc/httpd/conf/httpd.conf

# 或者创建专门的CGI配置文件
sudo vi /etc/httpd/conf.d/cgi-limits.conf

添加内容:

 

 

 

apache

<Directory "/var/www/cgi-bin">
Options +ExecCGI
SetHandler cgi-script
RLimitCPU 30 60
RLimitMEM 67108864 134217728
RLimitNPROC 5 10
RLimitNOFILE 100 200
</Directory>

第二步:Apache进程数限制

在CentOS 8.4中编辑MPM配置:

 

 

 

bash

# 编辑prefork模块配置
sudo vi /etc/httpd/conf.modules.d/00-mpm.conf

确保使用prefork模式:

 

 

 

apache

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

然后编辑主配置:

 

 

 

bash

sudo vi /etc/httpd/conf/httpd.conf

添加或修改:

 

 

 

apache

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 30 # 严格限制
ServerLimit 30
MaxConnectionsPerChild 100
</IfModule>

第三步:定时清理CGI(CentOS 8.4版本)

 

 

 

bash

# 编辑crontab
sudo crontab -e

# 添加定时任务(CentOS兼容版本)
*/5 * * * * /usr/bin/pgrep -f 'perl.*\.cgi' | while read pid; do ps -o etime= -p $pid | grep -q '0[5-9]:\|[1-9][0-9]:' && kill $pid; done

重启Apache服务:

 

 

 

bash

# CentOS 8.4的Apache服务名是httpd
sudo systemctl restart httpd
sudo systemctl enable httpd

# 检查配置是否正确
sudo httpd -t

# 查看Apache状态
sudo systemctl status httpd

CentOS 8.4特有的检查命令:

 

 

 

bash

# 查看当前Apache进程
ps aux | grep httpd | wc -l

# 查看CGI进程
ps aux | grep perl

# 查看Apache错误日志
sudo tail -f /var/log/httpd/error_log

# 查看访问日志
sudo tail -f /var/log/httpd/access_log

验证配置:

 

 

 

bash

# 检查MPM模式
httpd -V | grep -i mpm

# 查看加载的模块
httpd -M | grep mpm

防火墙确认(如果需要):

 

 

 

bash

# CentOS 8.4检查防火墙
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

监控脚本(CentOS 8.4优化版):

 

 

 

bash

# 创建监控脚本
sudo vi /usr/local/bin/cgi_monitor.sh

 

 

 

bash

#!/bin/bash
echo "=== $(date) ==="
echo "CGI进程数: $(pgrep -f 'perl.*\.cgi' | wc -l)"
echo "httpd进程数: $(pgrep httpd | wc -l)"
echo "内存使用: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo "负载: $(uptime | awk -F'load average:' '{print $2}')"

 

 

 

bash

# 设置执行权限
sudo chmod +x /usr/local/bin/cgi_monitor.sh

# 添加到crontab进行定期监控
*/2 * * * * /usr/local/bin/cgi_monitor.sh >> /var/log/cgi_monitor.log

CentOS 8.4的配置就是这样,重点是使用httpd而不是apache2作为服务名。配置完成后重启httpd服务即可生效。