阿里云ECS企业网站从零到上线完整落地教程:LNMP环境搭建+域名解析+SSL部署+自动备份全套脚本
一、引言:企业网站为何选择阿里云ECS
在数字化转型的浪潮中,企业官网早已从可有可无的"网络名片"升级为品牌展示、客户触达与业务转化的重要阵地。对于绝大多数中小企业而言,在有限预算内搭建一个稳定、安全、可扩展的官方网站,是一项需要认真对待的技术决策。
阿里云ECS(Elastic Compute Service)云服务器凭借灵活的资源配置、稳定的基础设施和丰富的生态工具,已成为企业建站的首选平台之一。与虚拟主机的性能瓶颈和模板建站的功能受限不同,ECS赋予用户完整的操作系统权限——你可以自主选择Linux发行版、自由配置Web运行环境、独立管理所有数据,真正实现"我的网站我做主"。
本文将从零开始,系统讲解在阿里云ECS上搭建企业网站的完整技术流程,涵盖ECS选购与初始化、安全组配置、LNMP环境搭建、网站源码部署、域名解析绑定、SSL证书与HTTPS加密配置,以及自动化备份脚本的编写与部署。全文以实战为导向,提供可直接复用的代码示例与命令行指令。
二、ECS实例选购与初始化配置
2.1 实例规格的选择策略
服务器配置直接决定网站的访问速度与并发承载能力,但盲目追求高规格只会造成资源浪费。根据网站类型与预期访问量,可参考以下配置建议:
- 企业展示型官网(日均访问量数百至数千):推荐2核2GB内存 + 40GB ESSD系统盘,搭配1-3Mbps固定带宽。此类网站以图文展示为主,交互功能较少,基础配置即可流畅运行。
- 动态交互型官网(含会员系统、在线表单、资讯发布等):建议2核4GB内存 + 60GB及以上系统盘,带宽3-5Mbps。更高的内存配置可保证PHP-FPM进程与MySQL查询缓存有充足的运行空间。
- 高并发或电商类网站:需根据业务量选择4核8GB或更高配置,并可考虑使用负载均衡SLB进行流量分发。
操作系统方面,强烈推荐选择Linux系列——Alibaba Cloud Linux、Ubuntu LTS或CentOS。这类系统兼容性强、配套教程丰富、故障排查便捷。其中Alibaba Cloud Linux是阿里云官方优化版,在云上生态中具有最佳的兼容性与长期支持。
2.2 地域选择与网络配置
地域选择直接影响网站的访问延迟与合规要求:
- 目标用户在国内:优先选择华北2(北京)、华东2(上海)、华南1(深圳)等内地节点,延迟最低,访问体验最好。但前提是必须完成ICP备案,备案期间域名无法绑定访问。
- 目标用户主要在海外:可选择香港、新加坡等海外节点,无需ICP备案即可快速上线。
购买ECS实例时,需勾选分配公网IPv4地址,确保服务器具备公网访问能力。网络选择默认VPC即可,带宽建议1-3M起步,后续可按需升级。
2.3 安全组规则配置
安全组是云服务器的虚拟防火墙,控制着进出实例的网络流量。创建实例后,必须在安全组入方向规则中放行以下端口:
- 22端口:SSH远程连接
- 80端口:HTTP网站访问
- 443端口:HTTPS加密访问
- 3306端口:MySQL远程访问(如需要)
可在创建实例时直接勾选放行这些端口,也可在实例创建后通过ECS控制台的安全组规则手动添加。
2.4 远程连接ECS实例
实例运行后,使用本地终端通过SSH命令登录:
ssh root@你的公网IP地址首次登录会提示指纹确认,输入yes后输入密码即可完成连接。为便于后续操作,推荐安装screen或tmux,防止执行长时间任务时网络断开:
yum install -y screen需要先登录阿里云控制台,点击:阿里云控制台
三、LNMP运行环境搭建
LNMP是Linux + Nginx + MySQL + PHP的缩写,是目前最主流的PHP网站运行架构。阿里云ECS部署LNMP环境主要有两种方式:一键自动化部署与手动深度定制。前者适合追求效率的新手,后者适合需要对配置进行精细定制的生产环境。
3.1 方式一:扩展程序一键部署LNMP
阿里云系统运维管理(OOS)提供了便捷的扩展程序功能,可一键完成LNMP环境的自动化安装,无需手动配置每个组件。
操作步骤:
- 登录ECS控制台,点击目标ECS实例的ID进入详情页面。
- 在实例详情页面,选择"定时与自动化任务" > "安装/卸载扩展程序" > "安装扩展程序"。
- 在安装扩展程序对话框中,选择"公共扩展程序",在下拉搜索框中找到并选择"LNMP一键安装"。
- 单击下一步,按照界面提示完成操作。
当任务状态显示为"已完成"时,说明LNMP环境已部署成功。MySQL的root用户密码可在扩展程序的任务详情中查看。这种方式无需了解安装细节,系统运维管理会自动完成全部安装过程。
3.2 方式二:手动部署LNMP环境
手动部署适合需要对各组件版本、编译参数和配置文件进行精确控制的生产场景。以下以Alibaba Cloud Linux 3 / CentOS 8系统为例,逐步讲解手动安装过程。
3.2.1 安装Nginx
首先添加Nginx官方源以获取较新版本:
sudo tee /etc/yum.repos.d/nginx.repo <<-'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF然后安装Nginx并设置开机自启:
sudo dnf -y install nginx
sudo systemctl start nginx
sudo systemctl enable nginx安装完成后,访问服务器公网IP,应能看到Nginx欢迎页面。如果无法访问,请检查安全组是否放行了80端口。
3.2.2 安装MySQL数据库
添加MySQL官方源并安装:
sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el8-1.noarch.rpm
sudo dnf install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld查看MySQL自动生成的root临时密码:
sudo grep 'temporary password' /var/log/mysqld.log使用临时密码登录并修改root密码:
sudo mysql_secure_installation密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,且总长度至少为8个字符。
生产环境下,更推荐使用阿里云RDS MySQL版,可获得自动备份、读写分离、故障切换等能力。RDS的内网地址可在同地域ECS上实现低延迟、免流量访问。
3.2.3 安装PHP及扩展
添加Remi源并安装PHP 8.4:
sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-8.rpm --nodeps
sudo sed -i "s/\$releasever/8/g" /etc/yum.repos.d/remi-modular.repo
sudo dnf module enable php:remi-8.4 -y
sudo dnf install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-curl php-zip php-opcache启动PHP-FPM并设置开机自启:
sudo systemctl start php-fpm
sudo systemctl enable php-fpm3.2.4 配置Nginx与PHP-FPM协同工作
创建Nginx站点配置文件:
sudo vi /etc/nginx/conf.d/your-domain.conf写入以下基本配置:
server {
listen 80;
server_name your-domain.com www.your-domain.com;
root /var/www/your-domain;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}测试Nginx配置并重载服务:
sudo nginx -t
sudo systemctl reload nginx四、网站源码部署
LNMP环境搭建完成后,即可将网站源码部署到服务器。以WordPress为例:
- 创建网站根目录:
sudo mkdir -p /var/www/your-domain - 下载并解压WordPress:
cd /var/www/your-domain sudo wget https://wordpress.org/latest.tar.gz sudo tar -xzf latest.tar.gz --strip-components=1 - 设置目录权限:
sudo chown -R nginx:nginx /var/www/your-domain sudo chmod -R 755 /var/www/your-domain - 在MySQL中创建网站数据库与用户:
mysql -u root -p CREATE DATABASE your_database; CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
完成上述步骤后,通过浏览器访问服务器公网IP或已解析的域名,即可进入WordPress安装向导,完成后续的网站配置。
五、域名注册、备案与DNS解析
5.1 域名注册与实名认证
网站要面向公网用户访问,必须绑定专属域名。域名需单独注册,且必须完成独立实名认证——即便阿里云账号已完成实名,新注册域名仍需单独提交资料审核。
注册域名时,优先选择.com、.cn等主流后缀,确保域名简短易记。注册完成后,进入域名控制台提交实名认证:个人用户上传身份证正反面照片,企业用户上传营业执照、法人信息等资质材料。
5.2 ICP备案(仅限国内节点)
部署在国内地域节点的ECS服务器,必须完成ICP备案才能对外开放访问。这是国内互联网建站的法定合规要求,未备案站点会被系统拦截。备案审核周期通常为7至20个工作日。建议在等待备案审核期间,同步完成服务器环境搭建与网站源码部署,以缩短整体上线周期。
5.3 配置DNS域名解析
域名实名认证通过后,需将域名解析到ECS服务器的公网IP地址。操作步骤如下:
- 登录阿里云控制台,进入"云解析DNS" > "公网权威解析"。
- 在域名列表中找到目标域名,单击操作列的"解析设置"。
- 单击"添加记录",添加以下解析记录:
- A记录:主机记录填写"@"(代表主域名),记录值填写ECS公网IP地址
- A记录:主机记录填写"www",记录值填写ECS公网IP地址(用于www子域名)
配置完成后,域名解析通常在几分钟至几小时内生效。
六、SSL证书申请与HTTPS加密配置
6.1 SSL/TLS证书基础概念
SSL(Secure Sockets Layer)及其后继者TLS(Transport Layer Security)是一种加密协议,用于在客户端与服务器之间建立安全的通信通道。SSL证书由CA(证书颁发机构)签发,包含网站的公钥、域名信息、颁发机构及有效期等数据。为Web服务器配置HTTPS证书,不仅能够加密数据传输、保障用户隐私安全,还能提升网站的专业形象和SEO权重。
6.2 阿里云SSL证书类型
阿里云数字证书管理服务提供多种类型的SSL证书:
- 个人测试证书(免费版):由DigiCert颁发,DV(域名验证型)单域名证书。每个阿里云账号在一个自然年内可免费领取20张,有效期90天。适合个人博客、开发测试环境等非生产场景。
- 个人测试证书(Pro):付费版本,有效期12个月,提供更长的证书周期和更多的技术支撑。
- 正式证书:包括DV、OV(组织验证型)、EV(扩展验证型)等多种级别,支持单域名、多域名和通配符域名,有效期通常为1年。适用于企业官网、电商平台、金融系统等对安全要求较高的生产环境。
对于大多数个人站长和中小企业,个人测试证书(免费版)已能满足基本的HTTPS加密需求。
6.3 申请个人测试证书(免费版)
步骤一:准备工作
- 已完成阿里云账号的实名认证
- 拥有一个已备案的域名(如服务器位于中国内地)
- 域名已添加DNS解析记录,指向ECS实例的公网IP地址
- 已在ECS安全组中放行443端口
步骤二:领取免费证书
- 登录阿里云控制台,在顶部搜索框输入"SSL证书",进入数字证书管理服务控制台。
- 在左侧导航栏选择"证书管理" > "SSL证书管理"。
- 点击"个人测试证书(原免费证书)"页签,然后点击"立即购买"。
- 在购买面板中保持默认选项,勾选服务协议后完成0元支付。
步骤三:提交证书申请
- 在"个人测试证书"页签点击"创建证书"。
- 填写域名名称(如example.com),系统会自动包含www.example.com的SAN扩展。
- 域名验证方式选择"自动DNS验证"。如果域名的DNS云解析服务在当前阿里云账号下,系统会自动完成DNS验证。
- 确认信息无误后,单击提交审核,等待证书签发(通常1~15分钟)。
6.4 在Nginx中部署SSL证书
步骤一:下载证书
证书签发后,在数字证书管理服务控制台找到对应证书,点击"下载",选择服务器类型为Nginx,下载证书文件(通常包含.pem证书文件和.key私钥文件)。
步骤二:上传证书到ECS
将下载的证书文件上传到ECS服务器,建议存放于统一目录:
sudo mkdir -p /etc/nginx/ssl
sudo cp your-domain.pem /etc/nginx/ssl/
sudo cp your-domain.key /etc/nginx/ssl/步骤三:配置Nginx启用HTTPS
修改Nginx站点配置文件,添加443端口的HTTPS配置:
server {
listen 443 ssl http2;
server_name your-domain.com www.your-domain.com;
root /var/www/your-domain;
index index.php index.html index.htm;
ssl_certificate /etc/nginx/ssl/your-domain.pem;
ssl_certificate_key /etc/nginx/ssl/your-domain.key;
# 仅支持高安全性的TLS 1.2和TLS 1.3协议
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# HTTP自动跳转HTTPS
server {
listen 80;
server_name your-domain.com www.your-domain.com;
return 301 https://$server_name$request_uri;
}步骤四:测试并重载Nginx
sudo nginx -t
sudo systemctl reload nginx配置完成后,通过浏览器访问 https://your-domain.com,应能正常加载网站,且地址栏显示安全锁标志。
七、自动化备份方案:Shell脚本 + Cron定时任务
数据安全是网站运维的生命线。建立自动化的备份机制,可有效应对系统故障、勒索病毒、人为误操作等数据安全风险。本节提供一套完整的Shell备份脚本,涵盖网站文件备份与MySQL数据库备份,并通过Cron定时任务实现自动化执行。
7.1 备份脚本设计思路
备份脚本需具备以下核心功能:
- 按日期命名备份文件,便于追溯
- 对备份文件进行压缩存储,节省磁盘空间
- 自动清理过期备份(保留最近N天),防止磁盘占满
- 记录备份日志,便于监控与故障排查
- 通过Cron实现周期性自动执行
7.2 完整备份脚本
在ECS服务器上创建备份脚本 /root/backup.sh:
#!/bin/bash
# ============================================================
# 网站自动备份脚本 - 支持文件备份与MySQL数据库备份
# 适用系统:Alibaba Cloud Linux / CentOS / Ubuntu
# ============================================================
# ---------- 配置参数 ----------
# 网站根目录(请修改为实际路径)
WEB_ROOT="/var/www/your-domain"
# 备份存储目录
BACKUP_DIR="/backup"
# 数据库配置
DB_NAME="your_database"
DB_USER="your_user"
DB_PASSWORD="your_password"
# 备份保留天数
RETAIN_DAYS=7
# 当前日期
DATE=$(date +%Y%m%d_%H%M%S)
# 日志文件
LOG_FILE="${BACKUP_DIR}/backup.log"
# ---------- 函数定义 ----------
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 清理过期备份
cleanup_old() {
log "开始清理 ${RETAIN_DAYS} 天前的备份文件..."
find "${BACKUP_DIR}" -name "*.tar.gz" -mtime +${RETAIN_DAYS} -delete
find "${BACKUP_DIR}" -name "*.sql.gz" -mtime +${RETAIN_DAYS} -delete
log "过期备份清理完成"
}
# ---------- 主流程 ----------
log "========== 开始执行备份任务 =========="
# 1. 创建备份目录
mkdir -p "${BACKUP_DIR}"
# 2. 备份网站文件
log "开始备份网站文件: ${WEB_ROOT}"
FILE_BACKUP="${BACKUP_DIR}/web_backup_${DATE}.tar.gz"
tar -czf "${FILE_BACKUP}" -C "$(dirname "${WEB_ROOT}")" "$(basename "${WEB_ROOT}")" 2>&1
if [ $? -eq 0 ]; then
log "网站文件备份成功: ${FILE_BACKUP} ($(du -h "${FILE_BACKUP}" | cut -f1))"
else
log "错误:网站文件备份失败"
fi
# 3. 备份MySQL数据库
log "开始备份数据库: ${DB_NAME}"
DB_BACKUP="${BACKUP_DIR}/db_backup_${DATE}.sql.gz"
mysqldump -u"${DB_USER}" -p"${DB_PASSWORD}" "${DB_NAME}" 2>&1 | gzip > "${DB_BACKUP}"
if [ $? -eq 0 ]; then
log "数据库备份成功: ${DB_BACKUP} ($(du -h "${DB_BACKUP}" | cut -f1))"
else
log "错误:数据库备份失败"
fi
# 4. 清理过期备份
cleanup_old
log "========== 备份任务执行完成 =========="脚本使用说明:
- 将脚本中的
WEB_ROOT、DB_NAME、DB_USER、DB_PASSWORD替换为实际值。 - 赋予脚本执行权限:
chmod +x /root/backup.sh - 手动执行测试:
/root/backup.sh
7.3 配置Cron定时任务
Cron是Linux系统内置的定时任务管理工具,通过crontab文件配置,可在指定时间自动执行预设的脚本或命令。
配置步骤:
- 编辑当前用户的Cron任务:
crontab -e - 添加定时任务(例如每天凌晨2点执行备份):
0 2 * * * /root/backup.sh - 保存并退出。Cron会自动加载新的定时任务。
0 2 * * *:每天凌晨2:00执行0 */6 * * *:每6小时执行一次30 3 * * 0:每周日凌晨3:30执行- 在OSS控制台创建一个Bucket,地域选择与ECS相同(同地域内网访问免流量)。
- 在ECS上安装ossutil命令行工具。
- 在备份脚本末尾添加上传命令:
# 上传备份文件至OSS /usr/local/bin/ossutil cp "${FILE_BACKUP}" oss://your-bucket/backup/web/ --force /usr/local/bin/ossutil cp "${DB_BACKUP}" oss://your-bucket/backup/db/ --force
Cron时间表达式说明:
7.4 进阶:备份至阿里云OSS实现异地容灾
将备份文件存储在ECS本地磁盘存在单点故障风险。更可靠的方案是将备份文件同步至阿里云OSS对象存储,实现异地容灾。
操作步骤:
OSS提供99.9999999999%(12个9)的数据持久性,是备份存储的理想选择。
八、常见问题与解答
问1:ECS实例无法通过公网IP访问Nginx欢迎页,是什么原因?
答:最常见的原因是安全组未放行80端口。请登录ECS控制台,进入安全组规则,检查入方向是否已添加TCP 80端口的允许规则。此外,还需确认ECS实例已分配公网IP且Nginx服务正在运行(systemctl status nginx)。
问2:MySQL安装后无法登录,提示密码错误怎么办?
答:MySQL 8.0安装后会生成一个临时密码,需通过 sudo grep 'temporary password' /var/log/mysqld.log 查看。使用临时密码登录后,立即执行 mysql_secure_installation 修改密码。注意新密码必须满足密码策略要求(至少8位,含大小写字母、数字和特殊字符)。
问3:免费SSL证书有效期只有90天,到期后怎么办?
答:免费版SSL证书到期后不支持续费,需要重新申请。建议在证书到期前30天左右,重新走一遍申请与部署流程。如需避免每年多次申请,可考虑购买付费版个人测试证书(Pro),有效期为12个月。
问4:配置HTTPS后网站无法访问,浏览器提示证书不安全,如何排查?
答:首先确认安全组已放行443端口。其次检查Nginx配置中证书文件路径是否正确,以及.pem和.key文件是否具有可读权限。最后确认域名解析已正确指向ECS公网IP,且证书申请的域名与实际访问域名完全一致。
问5:备份脚本执行失败,如何排查原因?
答:首先检查脚本中的数据库用户名、密码和数据库名是否正确。其次确认 mysqldump 命令是否已安装(which mysqldump)。最后查看备份日志文件(脚本中定义的 LOG_FILE),根据具体错误信息进行针对性修复。
问6:国内节点的ECS服务器,域名备案期间网站能访问吗?
答:不能。部署在国内地域的ECS服务器,域名必须完成ICP备案才能对外开放访问。备案审核期间,域名无法绑定访问。建议在等待备案审核的同时,通过IP地址或临时域名进行网站调试与内容填充。



