插件窝 干货文章 Linux+Nginx+Php如何架设高性能WEB服务器

Linux+Nginx+Php如何架设高性能WEB服务器

PHP Nginx opcache 339    来源:    2025-04-22

Linux + Nginx + PHP 高性能WEB服务器搭建指南

一、系统准备与优化

1. 操作系统选择与优化

  • 推荐使用最新稳定版的Linux发行版(如Ubuntu LTS或CentOS Stream)
  • 系统内核优化: bash # 编辑/etc/sysctl.conf net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_keepalive_time = 300 fs.file-max = 65535 执行 sysctl -p 使配置生效

2. 用户与权限设置

  • 创建专用用户和用户组: bash groupadd web useradd -g web -d /var/www -s /sbin/nologin webuser

二、Nginx安装与配置

1. 安装Nginx

# Ubuntu/Debian
sudo apt update
sudo apt install nginx

# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx

2. 高性能Nginx配置

编辑 /etc/nginx/nginx.conf

user webuser web;
worker_processes auto; # 自动根据CPU核心数设置
worker_rlimit_nofile 100000;

events {
    worker_connections 4096; # 每个worker进程的最大连接数
    multi_accept on;
    use epoll;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    server_tokens off;

    # 开启Gzip压缩
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 2;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    # 静态资源缓存
    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

3. 虚拟主机配置示例

创建 /etc/nginx/conf.d/example.com.conf

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.php index.html index.htm;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
        expires 365d;
        add_header Cache-Control "public, no-transform";
    }

    location ~ /\.ht {
        deny all;
    }
}

三、PHP安装与优化

1. 安装PHP-FPM

# Ubuntu/Debian (以PHP8.1为例)
sudo apt install php8.1-fpm php8.1-cli php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-opcache

# CentOS/RHEL
sudo yum install php-fpm php-cli php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-opcache

2. PHP-FPM优化配置

编辑 /etc/php/8.1/fpm/php-fpm.conf

[global]
pid = /run/php/php8.1-fpm.pid
error_log = /var/log/php8.1-fpm.log
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 10s

编辑 /etc/php/8.1/fpm/pool.d/www.conf

[www]
user = webuser
group = web
listen = /run/php/php8.1-fpm.sock
listen.owner = webuser
listen.group = web
listen.mode = 0660

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s
request_terminate_timeout = 30s

php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

3. PHP性能优化

编辑 /etc/php/8.1/fpm/php.ini

memory_limit = 128M
max_execution_time = 30
upload_max_filesize = 16M
post_max_size = 18M

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=0

四、安全加固

1. 防火墙设置

# 启用防火墙
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

2. 文件权限设置

sudo chown -R webuser:web /var/www
sudo find /var/www -type d -exec chmod 750 {} \;
sudo find /var/www -type f -exec chmod 640 {} \;

3. 禁用危险函数

/etc/php/8.1/fpm/php.ini 中添加:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

五、性能监控与维护

1. 安装监控工具

sudo apt install htop nmon sysstat

2. 日志轮转

编辑 /etc/logrotate.d/nginx

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        /usr/sbin/nginx -t && /usr/sbin/nginx -s reload
    endscript
}

3. 定期重启服务

创建 /etc/cron.d/nginx-restart

0 3 * * * root /usr/sbin/service nginx restart

六、后续优化建议

  1. 启用HTTP/2:在Nginx配置中添加 listen 443 ssl http2;
  2. 启用OPcache:确保PHP OPcache已正确配置并运行
  3. 使用CDN:为静态资源配置CDN加速
  4. 数据库优化:如果使用MySQL,考虑配置查询缓存和索引优化
  5. 考虑PHP JIT:PHP 8.0+版本可以启用JIT进一步提升性能

通过以上配置,您将获得一个高性能、安全的Linux+Nginx+PHP Web服务器环境。根据实际负载情况,可以进一步调整worker进程数、PHP-FPM进程数等参数以达到最佳性能。