1.
购买实例与基础准备
- 登录阿里云控制台 → 轻量应用服务器(Lightweight) → 选择地域:香港(HK)
- 选择镜像:建议 Ubuntu 20.04 LTS;规格按访问量选择(最小1核1G仅做测试)
- 配置网络:建议购买并绑定弹性公网IP(EIP)以保证公网访问不变;默认安装公钥登录或启用密码登录(推荐公钥)。
2.
安全组与防火墙策略
- 在实例管理或网络设置中配置安全组,开启80(TCP)、443(TCP)、22(SSH)端口,若需数据库远程访问可限制到特定IP并仅开启3306端口。
- 建议安全组只对必要端口开放,生产环境把22限制为运维IP。
3.
首次登录与系统更新
- 通过SSH登录:ssh -i /path/to/key.pem ubuntu@
或 ssh ubuntu@(若用密码)
- 更新系统并安装基础工具:sudo apt update && sudo apt upgrade -y;sudo apt install -y curl git unzip ufw
4.
设置非root用户与SSH安全
- 新建用户并赋sudo:sudo adduser deploy; sudo usermod -aG sudo deploy
- 禁用root远程登录:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,重启服务 sudo systemctl restart sshd
- 配置UFW防火墙:sudo ufw allow OpenSSH; sudo ufw allow 80; sudo ufw allow 443; sudo ufw enable
5.
绑定弹性公网IP(EIP)与域名解析
- 控制台购买/绑定EIP到实例。确认外网IP在实例网络信息中显示。
- 在域名服务商处新增A记录:@ 指向 EIP;www 指向 EIP。生效后可通过域名访问。
6.
安装Nginx并配置站点
- 安装:sudo apt install -y nginx
- 示例site配置 /etc/nginx/sites-available/example.conf:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example;
index index.php index.html index.htm;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; }
}
- 创建站点目录并赋权:sudo mkdir -p /var/www/example; sudo chown -R deploy:www-data /var/www/example
- 启用站点并重载:sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/; sudo nginx -t; sudo systemctl reload nginx
7.
安装PHP与MySQL(若用PHP应用)
- 安装PHP与常用扩展:sudo apt install -y php-fpm php-mysql php-xml php-mbstring
- 安装MySQL:sudo apt install -y mysql-server;初始化安全配置 sudo mysql_secure_installation
- 创建数据库与用户:
sudo mysql -e "CREATE DATABASE site_db DEFAULT CHARACTER SET utf8mb4;"
sudo mysql -e "CREATE USER 'siteuser'@'localhost' IDENTIFIED BY '强密码'; GRANT ALL ON site_db.* TO 'siteuser'@'localhost'; FLUSH PRIVILEGES;"
8.
部署代码与权限管理
- 使用git拉取:cd /var/www/example && sudo git clone . 或使用rsync上传代码。
- 设置文件权限:sudo chown -R deploy:www-data /var/www/example; sudo find /var/www/example -type d -exec chmod 755 {} \;; sudo find /var/www/example -type f -exec chmod 644 {} \;
9.
配置SSL:Let's Encrypt与Certbot
- 安装certbot:sudo apt install -y certbot python3-certbot-nginx
- 自动申请并配置Nginx:sudo certbot --nginx -d example.com -d www.example.com(按提示输入邮箱并同意)
- 验证证书自动续期:sudo certbot renew --dry-run;并在crontab里添加自动续期(certbot 默认已安装定时任务)。
10.
性能与缓存优化
- 在Nginx启用Gzip与缓存头:在 http 段开启 gzip on; gzip_types ...,并为静态资源设置 expires 30d;
- 安装Redis作为缓存:sudo apt install -y redis-server,修改应用缓存配置。对PHP可用phpredis扩展。
11.
安全加固与入侵防御
- 安装fail2ban:sudo apt install -y fail2ban 并启用SSH监控;
- 定期更新系统并使用最小权限账号;关闭不必要服务;启用UFW并仅开放必要端口。
12.
备份与快照策略
- 使用阿里云控制台创建快照(Snapshot)或在实例上写脚本定期备份数据库与网站文件到对象存储(OSS)。示例mysqldump脚本:mysqldump -u siteuser -p'密码' site_db > /root/backup/site_db_$(date +%F).sql
- 将备份上传至OSS:ossutil cp oss://bucket/path/。
13.
监控与日志管理
- 启用阿里云云监控,对CPU、内存、流量设置告警;
- 集中管理日志:使用logrotate配置Nginx/应用日志轮转,或将日志发到外部ELK/阿里云日志服务。
14.
自动化部署与CI/CD建议
- 推荐使用GitHub Actions/GitLab CI或Jenkins做自动化构建与部署:在构建后通过rsync或ssh执行上线脚本(先备份再替换)。
- 上线脚本包含:拉代码、composer/npm install、权限调整、清缓存、重启服务。
15.
常见故障排查要点
- 80/443无法访问:检查安全组、实例防火墙(UFW)、Nginx是否在监听;sudo ss -tlnp | grep nginx
- SSL失败:检查域名是否解析到EIP并已在证书申请时生效; certbot 日志在 /var/log/letsencrypt/。
16.
问:轻量服务器适合流量多的网站吗?答:
适合小到中等访问量与低成本部署。若流量持续增长或有高并发需求,建议按需升级规格或使用负载均衡+多实例架构,并结合CDN。
17.
问:如何保证证书自动续期不出问题?答:
使用certbot的--nginx插件并测试续期 sudo certbot renew --dry-run。确保证书续期时域名解析与80/443可达,且cron/systemd定时任务存在。
18.
问:数据与站点如何做灾备?答:
采用定期快照+异地备份策略:阿里云快照结合对象存储(OSS)备份数据库dump与源码,定期演练恢复流程,并配置监控告警。
来源:阿里云轻量级香港服务器部署建站的最佳实践指南