如何让外部网络访问中心数据库

这就是坑,别信,别这么干。
直接用VPN,简单方便,安全性高。

Appnode网站和MySQL数据库无法访问:如何解决根目录和数据库凭证问题?

等等,昨天我帮朋友排查Appnode网站出问题时,发现他配置文件里DocumentRoot写错了,硬是写成/www/appnode/,结果一直提示4 04 这让我想起之前在阿里云上部署时,差点把www/Appnode/后面的斜杠漏了,幸好手动改回来。

你看这配置细节,Apache和Nginx的写法还不太一样呢。
Apache是整行DocumentRoot"/www/Appnode/",Nginx在server块里root "/www/Appnode/";。
我测试过,要是把root写成/www/appnode/,Appnode会直接崩,连数据库连接都初始化不了。

最绝的是权限问题。
有个客户用Ubuntu,把目录权限改成了7 7 7 ,结果Web服务器进程能随便写数据库文件,最后数据被篡改了。
现在我们都是用7 5 5 ,然后给Web服务器用户(比如www-data)所有权。

还有个怪事,有一次我修改完配置,重启Apache后,发现网站打不开了,日志里全是"File not found"。
后来发现是Nginx的try_files指令前面多了个空格,把文件路径全打乱了。
这行代码我改了三遍才对。

MySQL那边更要注意大小写。
有个Windows转Linux的客户,把用户名写成appnode_user,结果在MySQL里查是APPNODE_USER,直接连不上。
后来教他用SHOW USER命令确认,才改过来。

重置密码也很有意思。
我有个客户用宝塔面板,面板里改密码数据库就崩了,后来直接进到MySQL bin目录用ALTER USER改的。
命令行操作确实更稳当。

防火墙那块,有个用腾讯云的客户,安全组规则只开了8 0和4 4 3 ,结果MySQL连不上,折腾半天才发现要单独放行3 3 06 端口。
他们还问我数据库端口能不用的话改成别的吗?我说默认3 3 06 是标准,改了客户端都要改。

PHP扩展忘了装。
有个站点用PHP5 .6 ,Appnode最新版要PHP7 .4 ,结果直接报错。
我教他改yum源再装新版本,装完扩展还提示要重启,他说重启了网站还是打不开,最后发现是没同步配置文件。

日志分析最省力。
有个客户后台打不开,直接给我发了三张截图:Apache错误日志、MySQL错误日志、还有浏览器控制台。
我一看Apache报5 00,MySQL报AccessDenied,马上知道是权限问题。

不过现在Appnode应该都内置了错误检测吧?我测试最新版,连不上数据库会直接在后台报错,比以前好多了。
只是有个问题,如果用户把$db_host填成了1 2 7 .0.0.1 ,但网站和数据库不在同一台,会怎么样?