1.
选择靠近目标用户群的台湾数据中心,常见供应商有阿里云台湾、GCP台湾区、AWS(ap-northeast-1 视区域)、或本地IDC。建议首选单区机房以降低网络延迟。
推荐规格:对于轻量级网站:1 vCPU、1-2GB 内存、20-40GB SSD;中小型站点:2 vCPU、4GB、40-80GB SSD。系统建议使用Ubuntu 22.04 LTS以便命令一致。
2.
在供应商官网注册账号,完成实名认证并绑定付款方式(信用卡或企业付款)。选择镜像(Ubuntu 22.04)、实例规格、带宽与公网IP,然后提交开通。
开通后在控制台记录公网IP、用户名(通常为ubuntu或root)和控制台提供的初始密码或SSH密钥上传入口。
3.
本地生成密钥(Linux/Mac/WSL):ssh-keygen -t ed25519 -C "your_email",将~/.ssh/id_ed25519.pub内容复制到云主机控制台的“SSH Key”字段。
连接示例:ssh -i ~/.ssh/id_ed25519 ubuntu@服务器公网IP。首次连接同意指纹后即可进入。
4.
登录后,首先更新系统:sudo apt update && sudo apt upgrade -y。然后创建非root用户并授权sudo:adduser youruser && usermod -aG sudo youruser。
启用UFW防火墙并仅放行必要端口:sudo ufw allow OpenSSH; sudo ufw allow 80; sudo ufw allow 443; sudo ufw enable。建议关闭密码登录:编辑 /etc/ssh/sshd_config,将 PasswordAuthentication no,重启 sshd。
5.
安装命令(Ubuntu):sudo apt install nginx php-fpm php-mysql -y;安装数据库:sudo apt install mariadb-server -y。
启动并设为开机:sudo systemctl enable --now nginx php7.4-fpm mariadb(根据PHP版本调整服务名)。检查服务状态:sudo systemctl status nginx。
6.
运行安全脚本:sudo mysql_secure_installation,按提示设置root密码并移除匿名用户、禁止远程root、删除测试库并重载权限。
创建数据库与用户:sudo mysql -u root -p 然后执行:CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'siteuser'@'localhost' IDENTIFIED BY '强密码'; GRANT ALL PRIVILEGES ON mysite.* TO 'siteuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
7.
使用SFTP或git上传网站源码到 /var/www/mysite,例如使用git:sudo apt install git -y; sudo mkdir -p /var/www/mysite; sudo chown -R youruser:www-data /var/www/mysite; git clone <仓库地址> /var/www/mysite。
设置权限:sudo find /var/www/mysite -type d -exec chmod 755 {} \; && sudo find /var/www/mysite -type f -exec chmod 644 {} \;。若需上传权限,设置目录为 www-data 可写:sudo chown -R youruser:www-data /var/www/mysite && sudo chmod -R 775 /var/www/mysite/storage(视框架而定)。
8.
新建站点配置 /etc/nginx/sites-available/mysite.conf 示例: server { listen 80; server_name example.com www.example.com; root /var/www/mysite; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
启用站点:sudo ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx。
9.
在域名解析服务商处添加 A 记录,主机名 @ 指向云服务器公网IP,www 指向同一IP。生效可能需几分钟到24小时。
验证:nslookup example.com 或 dig A example.com。解析正确后可继续申请SSL证书。
10.
安装Certbot并为Nginx获取证书:sudo apt install certbot python3-certbot-nginx -y;运行:sudo certbot --nginx -d example.com -d www.example.com,按提示完成并选择自动重定向HTTP到HTTPS。
测试续签:sudo certbot renew --dry-run。Certbot 会自动在 /etc/cron 或 systemd 定期执行续签。
11.
数据库备份:定时使用 mysqldump,例如 crontab: 0 2 * * * /usr/bin/mysqldump -u root -p'密码' mysite > /var/backups/mysite_$(date +\%F).sql,并将备份推送到远端对象存储或FTP。
建议在云控制台定期创建快照并开启监控(CPU、内存、带宽)。可部署简单的监控工具如Prometheus+Grafana或使用供应商自带监控告警。
12.
开启缓存:使用Nginx缓存或反向代理(proxy_cache),对数据库开启慢查询日志并优化索引。对PHP使用OPcache以减少解析开销。
常见问题:站点502错误检查PHP-FPM日志 /var/log/php7.4-fpm.log;数据库连接错误检查用户权限、bind-address是否为127.0.0.1及防火墙规则。
13.
答:可以通过脚本定时 mysqldump 导出并使用 rclone 或 aws-cli/s3cmd 将备份上传到对象存储。示例脚本:mysqldump -u root -p'密码' mysite > /tmp/mysite.sql && rclone copy /tmp/mysite.sql remote:bucket/backup/,然后在 crontab 中定时执行并保留最近 N 天的备份。
14.
答:定期系统与应用更新、关闭不必要端口、使用SSH Key禁用密码登录、设置UFW/iptables规则、部署Fail2Ban防暴力破解、定期审计日志并启用云供应商的安全组和DDoS防护,结合定期快照与异地备份确保可恢复性。
15.
答:先从网络层排查:ping 与 traceroute 到服务器看延迟与丢包;检查机房带宽与峰值使用;本地开启Gzip/静态文件CDN(可考虑使用台湾或海外CDN节点);检查后端响应时间(慢查询、PHP脚本耗时),通过日志定位并优化。