你手里有一台服务器,一个外网固定IP,网站代码也跑起来了,浏览器输入IP能看见页面。到这一步很多人觉得活干完了,其实麻烦才刚开始。固定IP挂在公网上,就像把家门钥匙插在锁眼里,路过的人都能拧一下。
先别急着把域名指过来。打开服务器防火墙看看,默认放行了哪些端口。云厂商的安全组和系统里的iptables或者ufw是两层门,经常有人只改了一层,另一层还敞着。网站用80和443,SSH管理用22,其他端口能关就关。数据库的3306、Redis的6379千万别对公网开放,去年有统计说暴露在公网的Redis实例里超过七成没设密码。SSH也别用密码登录,改成密钥对,顺便把默认22端口换掉,能挡掉大部分自动化扫描。
域名解析之前,国内服务器得先备案。没备案的域名解析到大陆IP,访问会被拦,这事没有捷径。备案下来后,把域名的A记录指向这个固定IP,等TTL生效。这时候网站能通过域名访问了,但地址栏还是http开头,浏览器会提示不安全。用Let''s Encrypt签个免费证书,certbot一条命令的事,设置自动续期,三个月一续不用管。Nginx里把80端口的请求301跳到443,顺手加上HSTS头。
网站能跑不等于跑得好。先看日志,Nginx的access.log和error.log,看看有没有奇怪的请求路径,比如不停请求/wp-login.php或者/.env。有的话说明已经被扫了,装个fail2ban,把频繁报错的IP临时封掉。系统日志也翻翻,/var/log/auth.log里如果一堆Failed password,说明有人在试SSH密码。
备份这件事别等出事再想。数据库每天凌晨用mysqldump导一份,网站文件用tar打包,传到另一台机器或者对象存储里。保留最近七天的,别把备份和网站放同一块硬盘上,硬盘挂了全没。写个cron脚本,跑完发个邮件或者钉钉通知,不然备份失败了没人知道。

监控不用搞太复杂。装个netdata或者用云厂商自带的监控,盯住CPU、内存、磁盘和带宽。网站可用性用uptime机器人或者curl定时请求首页,返回200就正常,返回502就告警。磁盘使用率超过80%要留意,日志文件涨得最快,配个logrotate按天切分,保留两周。
性能上,如果网站是动态的,Nginx前面加一层缓存,静态资源设长过期时间。图片多的站开个WebP转换,能省不少带宽。固定IP的带宽通常有限,比如5Mbps,算一下页面大小,一个500KB的首页,理论上同时只能撑十来个并发。真有人访问量上来,考虑套个CDN,把静态资源分流出去,源站压力小很多。
还有系统更新。Ubuntu或者CentOS每周跑一次apt upgrade或者yum update,内核更新完记得重启。别嫌麻烦,去年爆的Log4j和OpenSSL漏洞,补丁都是现成的,不打就是给自己挖坑。
最后说个容易忽略的:网站代码里别硬编码数据库密码。用环境变量或者单独的配置文件,权限设成600,别让web目录能读到。上传目录禁止执行PHP,Nginx里加个location规则就行。后台登录加个验证码或者限流,防止暴力破解。
固定IP是个好东西,稳定、可追溯,但也意味着攻击面是固定的。把这些基础活干完,网站才算真正能见人。别等被黑了再回头补,那时候修数据比现在花的时间多十倍。