低配服务器优化使用:2C2G Debian12.6 安装 aaPanel 免费版 + Nginx1.19 + PHP8.2/7.4 + Redis7.2 + MySQL8.0 一条龙优化教程(含 memcached) - 技术宅银魂 - 科技改变生活 - 万事屋 | 生活·动漫·娱乐综合社区-银魂同好聚集地

低配服务器优化使用:2C2G Debian12.6 安装 aaPanel 免费版 + Nginx1.19 + PHP8.2/7.4 + Redis7.2 + MySQL8.0 一条龙优化教程(含 memcached)

本教程面向低配 VPS(2核2G),手把手带你把aaPanel 海外版Nginx1.19PHP8.2/7.4Redis7.2MySQL8.0memcached 全部装完,并给出内存极限压榨的终极配置。跟着做,日跑 5000 IP 不卡!

  1. 准备工作
  2. 一键安装 aaPanel 海外版
  3. 环境安装 & 版本选择
  4. 内存极限优化(全部配置代码)
  5. 常见问题 & 彩蛋

1. 准备工作

# 更新系统 & 装常用工具
apt update -y
apt install -y curl wget socat htop vim

# 开 BBR
wget -N --no-check-certificate https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh && bash tcp.sh
# 选 4 启用 BBR,重启生效

2. 一键安装 aaPanel 海外版

wget -O install.sh https://www.aapanel.com/script/install_7.0_en.sh && bash install.sh aapanel

安装完会提示外网地址、账号、密码,保存到记事本!


3. 环境安装 & 版本选择

  • Nginx 1.19(兼容 aaPanel 免费 WAF)
  • PHP 8.2 + 7.4(新项目用 8.2,老项目 7.4)
  • MySQL 8.0
  • Redis 7.2
  • Memcached 1.6

4. 内存极限优化(全部配置代码)

4.1 Nginx 1.19 优化配置

# /www/server/nginx/conf/nginx.conf
user  www www;
worker_processes 2;
worker_cpu_affinity 01 10;
pid /www/server/nginx/logs/nginx.pid;
error_log /www/wwwlogs/nginx_error.log warn;
worker_rlimit_nofile 65535;

events {
    use epoll;
    multi_accept on;
    worker_connections 2048;
    accept_mutex on;
}

http {
    include mime.types;
    default_type application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 8k;
    large_client_header_buffers 2 16k;
    client_max_body_size 20m;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 30s;
    keepalive_requests 100;

    fastcgi_connect_timeout 3s;
    fastcgi_send_timeout 30s;
    fastcgi_read_timeout 30s;
    fastcgi_buffer_size 8k;
    fastcgi_buffers 4 8k;
    fastcgi_busy_buffers_size 16k;
    fastcgi_temp_file_write_size 32k;
    fastcgi_intercept_errors on;

    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_comp_level 2;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml+rss image/svg+xml;
    gzip_disable "msie6";

    limit_conn_zone $binary_remote_addr zone=perip:2m;
    limit_conn perip 30;
    limit_req_zone $binary_remote_addr zone=req:2m rate=10r/s;
    limit_req zone=req burst=20 nodelay;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$gzip_ratio"';
    access_log off;
    server_tokens off;

    server {
        listen 888 default_server;
        server_name _;
        root /www/server/phpmyadmin;
        index index.php;
        location ~* \.(gif|jpg|jpeg|png|ico|svg|woff|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; }
        location ~* \.(css|js)$ { expires 7d; add_header Cache-Control "public"; }
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
        location ~ /\. { deny all; }
    }

    include /www/server/panel/vhost/nginx/*.conf;
}

4.2 PHP-FPM 8.2 / 7.4 优化配置

# /etc/php/8.2/fpm/pool.d/www.conf
[www]
listen = /tmp/php-cgi-82.sock
listen.backlog = 1024
listen.owner = www
listen.group = www
listen.mode = 0660
user = www
group = www

pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 10s
pm.max_requests = 500

request_terminate_timeout = 30s
request_slowlog_timeout = 2s
slowlog = /www/server/php/82/var/log/slow.log

4.3 PHP 8.2 / 7.4 ini 优化

# /etc/php/8.2/fpm/php.ini  (7.4 同理)
memory_limit = 128M
max_execution_time = 30
max_input_time = 30
post_max_size = 50M
upload_max_filesize = 50M
expose_php = Off
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
extension = mysqli
extension = pdo_mysql
extension = redis
extension = opcache
extension = memcached

4.4 MySQL 8.0 优化配置(关闭 binlog)

# /etc/mysql/mysql.conf.d/mysqld.cnf
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /www/server/data

# 基础
default_storage_engine = InnoDB
lower_case_table_names = 1
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
skip_name_resolve = 1

# 连接
max_connections = 200
max_connect_errors = 1000
open_files_limit = 65535
thread_cache_size = 16
max_allowed_packet = 64M

# 会话缓冲区
sort_buffer_size = 256K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
join_buffer_size = 256K
tmp_table_size = 32M
max_heap_table_size = 32M

# InnoDB
innodb_buffer_pool_size = 512M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_lock_wait_timeout = 50
innodb_data_file_path = ibdata1:10M:autoextend

# 关闭 binlog
skip-log-bin

# 慢日志
slow_query_log = 1
slow_query_log_file = /www/server/data/mysql-slow.log
long_query_time = 2

# 性能监控关闭
performance_schema = OFF

4.5 Redis 7.2 优化配置

# /www/server/redis/redis.conf
bind 127.0.0.1
port 6379
tcp-backlog 1024
timeout 0
tcp-keepalive 300
maxclients 4096

daemonize yes
supervised no
pidfile /www/server/redis/redis.pid
loglevel warning
logfile /www/server/redis/redis.log
databases 8

maxmemory 268435456
maxmemory-policy allkeys-lru
maxmemory-samples 5

save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /www/server/redis/
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
appendonly no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

slowlog-log-slower-than 10000
slowlog-max-len 128
hz 10
dynamic-hz yes

hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes

4.6 memcached 1.6 优化脚本

# /etc/init.d/memcached
#!/bin/bash
IP=127.0.0.1
PORT=11211
USER=memcached
MAXCONN=512
CACHESIZE=128
OPTIONS="-t 2"

RETVAL=0
prog="memcached"

start() {
    echo -n $"Starting $prog: "
    /usr/local/memcached/bin/memcached -d -l $IP -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS
    [ "$?" != 0 ] && echo " failed" && exit 1 || { touch /var/lock/subsys/memcached; echo $(pgrep -f memcached) > /var/run/memcached.pid; echo " done"; }
}
stop() {
    echo -n $"Stopping $prog: "
    [ -e /var/run/memcached.pid ] || { echo "$prog not running"; exit 1; }
    kill $(cat /var/run/memcached.pid) && rm -f /var/lock/subsys/memcached /var/run/memcached.pid
    echo " done"
}
restart() { $0 stop; sleep 2; $0 start; }

case "$1" in
    start|stop|restart|reload) $1 ;;
    *) echo "Usage: $0 {start|stop|restart|reload}"; exit 1 ;;
esac

5. 常见问题 & 彩蛋

  • 端口放行:aaPanel 默认 7800|888|80|443|20|21 记得在防火墙放行。
  • 忘记密码:SSH 执行 bt → 选项 5 改面板密码。
  • 中文界面
    wget -O aapanel_chinese.zip https://github.com/gacjie/aapanel_chinese/releases/download/6.8.27/aapanel_simplified_chinese_6827.zip
    unzip -o aapanel_chinese.zip -d /www/server/ && /etc/init.d/bt restart
  • 彩蛋:把 /www/server/panel/plugin/static_cdn 删掉,面板秒开!

2C2G 也能跑得飞起,日 5000 IP 毫无压力!

请登录后发表评论

    没有回复内容

万事屋新帖