配置总览
我们将整个配置过程分为以下几个阶段:

-
第一阶段:基础准备与安全加固
- 重置实例密码并连接服务器
- 更新系统软件包
- 配置防火墙
- 创建新用户并设置
sudo权限 - 配置 SSH 密钥登录(强烈推荐)
- 禁用 root 远程登录
- 配置时区
- 定时任务与日志
-
第二阶段:常用服务部署
- 安装 Nginx
- 安装 MySQL (MariaDB)
- 安装 PHP (以 PHP-FPM 为例)
- 安装 Docker
-
第三阶段:生产环境优化
- 配置 Swap 交换分区
- 内核参数优化 (
sysctl.conf) - 安全组策略优化
第一阶段:基础准备与安全加固
这是最重要的一步,一个安全的服务器是所有应用稳定运行的基础。

重置实例密码并连接服务器
- 重置密码:
- 登录 阿里云ECS控制台。
- 找到你的 CentOS 实例,点击“更多” -> “密码/密钥” -> “重置实例密码”。
- 设置一个强密码并保存。
- 连接服务器:
- 使用 SSH 客户端(推荐,如 Xshell, PuTTY, MobaXterm, 或 Windows Terminal + OpenSSH)。
- 在客户端中,使用以下命令连接:
# <公网IP> 替换成你服务器的公网 IP 地址 ssh root@<你的公网IP>
- 首次连接会提示
The authenticity of host '...' can't be established...,输入yes。 - 然后输入你刚刚重置的
root用户密码。
更新系统软件包
保持系统软件包为最新版本,可以修复已知的安全漏洞和错误。
# 更新所有已安装的包 yum update -y # 清理缓存 yum clean all
配置防火墙
CentOS 7+ 使用 firewalld 作为默认防火墙,为了安全,我们应该只开放必要的端口(如 22, 80, 443)。
# 1. 启动 firewalld 并设置为开机自启 systemctl start firewalld systemctl enable firewalld # 2. 检查防火墙状态 firewall-cmd --state # 3. 开放常用端口 # 开放 SSH 端口 (22) firewall-cmd --permanent --add-service=ssh # 或者直接开放端口 firewall-cmd --permanent --add-port=22/tcp firewall-cmd --permanent --add-port=80/tcp # HTTP firewall-cmd --permanent --add-port=443/tcp # HTTPS # 4. 重新加载防火墙配置,使规则生效 firewall-cmd --reload # 5. 查看已开放的端口和服务 firewall-cmd --list-all
创建新用户并设置 sudo 权限
直接使用 root 用户操作风险很高,我们应该创建一个普通用户来日常使用。
# 1. 创建一个新用户,'ecsuser' adduser ecsuser # 2. 为新用户设置密码 passwd ecsuser # 3. 为新用户添加 sudo 权限 # CentOS/RHEL 默认使用 'wheel' 用户组 usermod -aG wheel ecsuser
你可以退出 root 会话,用 ecsuser 重新登录。

exit ssh ecsuser@<你的公网IP>
配置 SSH 密钥登录(强烈推荐)
使用 SSH 密钥比密码更安全,可以有效防止暴力破解。
-
在你的本地电脑上生成密钥对(如果没有的话):
# 一路回车即可,使用默认路径和空密码 ssh-keygen -t rsa -b 4096
-
将公钥上传到服务器:
# <你的公网IP> 替换成你的服务器IP # ~/.ssh/authorized_keys 是默认的公钥存储位置 ssh-copy-id -i ~/.ssh/id_rsa.pub ecsuser@<你的公网IP>
这个命令会自动将你的公钥追加到服务器上
ecsuser的authorized_keys文件中。 -
服务器端 SSH 配置优化: 用
ecsuser登录后,编辑 SSH 配置文件:sudo vim /etc/ssh/sshd_config
找到并修改以下几行:
# 禁用 root 用户登录 PermitRootLogin no # 只允许密钥登录,禁止密码登录(配置完密钥后再做此步) PasswordAuthentication no # 确保端口 22 是开放的(如果修改了端口) # Port 22保存文件后,重启 SSH 服务使配置生效:
sudo systemctl restart sshd
注意:在
PasswordAuthentication no之前,请确保你已经成功通过密钥登录,否则可能会被锁在服务器外面!
配置时区
将服务器时区设置为中国/上海。
# 查看当前时区 timedatectl status # 设置时区 sudo timedatectl set-timezone Asia/Shanghai # 再次确认 timedatectl status
定时任务与日志
-
配置定时任务:用于定期执行备份、清理等操作。
# 编辑 crontab crontab -e
添加一个示例,每天凌晨 2 点执行
yum update:0 2 * * * /usr/bin/yum -y update -
配置日志轮转:防止日志文件过大。 CentOS 自带了
logrotate,/etc/logrotate.conf是主配置文件,大多数应用(如 Nginx, MySQL)的日志轮转配置都放在/etc/logrotate.d/目录下,检查并确保它们配置正确。
第二阶段:常用服务部署
这里以经典的 LNMP (Linux + Nginx + MySQL + PHP) 环境为例。
安装 Nginx
# 1. 安装 EPEL 仓库 (如果未安装) sudo yum install -y epel-release # 2. 安装 Nginx sudo yum install -y nginx # 3. 启动 Nginx 并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 4. 检查 Nginx 状态 sudo systemctl status nginx # 5. 在浏览器中访问你的公网IP,如果看到 "Welcome to nginx!" 页面,说明安装成功。
安装 MySQL (MariaDB)
阿里云 CentOS 默认使用 MariaDB,它是 MySQL 的一个分支,完全兼容。
# 1. 安装 MariaDB 服务器和客户端 sudo yum install -y mariadb-server mariadb # 2. 启动 MariaDB 并设置开机自启 sudo systemctl start mariadb sudo systemctl enable mariadb # 3. 运行安全脚本 # 这个脚本会帮你设置 root 密码、移除匿名用户、禁止 root 远程登录等 sudo mysql_secure_installation
根据提示操作:
- Enter current password for root (enter for none): 直接回车
- Set root password? [Y/n]: Y (设置一个强密码)
- Remove anonymous users? [Y/n]: Y
- Disallow root login remotely? [Y/n]: Y
- Remove test database and access to it? [Y/n]: Y
- Reload privilege tables now? [Y/n]: Y
安装 PHP (以 PHP-FPM 为例)
# 1. 安装 PHP-FPM 和常用扩展 # 你可以根据项目需要安装不同的扩展,如 php-mysqlnd, php-gd, php-fpm 等 sudo yum install -y php php-fpm php-mysqlnd php-gd php-mbstring # 2. 启动 PHP-FPM 并设置开机自启 sudo systemctl start php-fpm sudo systemctl enable php-fpm # 3. 检查 PHP-FPM 状态 sudo systemctl status php-fpm
安装 Docker
# 1. 安装 yum-utils 提供的 yum-config-manager 实用程序 sudo yum install -y yum-utils # 2. 添加 Docker 官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 3. 安装 Docker Engine sudo yum install -y docker-ce docker-ce-cli containerd.io # 4. 启动 Docker 并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 5. 验证 Docker 是否安装成功 sudo docker run hello-world
第三阶段:生产环境优化
这部分需要根据服务器的实际负载和应用场景进行调整。
配置 Swap 交换分区
如果你的服务器内存较小(如 1GB 或 2GB),配置 Swap 可以防止内存耗尽导致系统崩溃。
# 1. 创建一个 2G 的 swap 文件 sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 # 2. 设置正确的权限 sudo chmod 600 /swapfile # 3. 格式化为 swap 文件 sudo mkswap /swapfile # 4. 启用 swap 文件 sudo swapon /swapfile # 5. 使其永久生效,编辑 /etc/fstab echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 6. 验证 swap 是否生效 free -h
内核参数优化 (sysctl.conf)
优化网络和系统内核参数,可以提高服务器性能和稳定性。
# 编辑 sysctl.conf 文件 sudo vim /etc/sysctl.conf
在文件末尾添加或修改以下内容:
# 网络相关优化 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65535 # 系统相关优化 fs.file-max = 655350 vm.swappiness = 10
保存后,执行以下命令使配置立即生效:
sudo sysctl -p
安全组策略优化
在阿里云ECS控制台,为你的实例配置安全组,这是服务器的最后一道防线。
- 进入 ECS控制台 -> “网络与安全” -> “安全组”。
- 找到对应实例的安全组,点击“配置规则”。
- 入方向:
- 只开放必要的端口:Web 服务器只需要开放
80(HTTP),443(HTTPS),22(SSH)。 - 限制来源IP:对于
22(SSH) 端口,强烈建议只允许你自己的公网IP访问,而不是0.0.0/0。 - 删除默认的开放所有端口 (0.0.0.0/0) 的规则。
- 只开放必要的端口:Web 服务器只需要开放
- 出方向:通常允许所有
0.0.0/0即可,因为服务器需要访问外网。
恭喜!现在你的阿里云 CentOS 服务器已经完成了从基础安全配置到常用服务部署,再到生产环境优化的全过程,你的服务器现在具备了:
- 高安全性:非 root 用户、密钥登录、防火墙、安全组。
- 高性能基础:LNMP/Docker 环境就绪,内核参数已优化。
- 高可用性:关键服务已设置为开机自启。
你就可以基于这个稳定的环境部署你的 Web 应用、数据库或其他服务了,服务器维护是一个持续的过程,请定期检查日志、更新系统和应用。
