如果开发者要自己实现通过IP地址决定跳转不同的URL,方法主要分为前端和后端不同的做法:
- 后端做法,在服务器安装Geo IP扩展,然后再PHP代码里面写判断,做重定向。
- 前端做法,通过JS请求第三方IP数据库查询国家,然后用JS跳转,这个本质上不叫重定向,而是从浏览器跳转,SEO不友好。资源可以参考这个:GeoJS
以上两种方法都不是我现在用的方案,因为做WordPress外贸网站我们用Kinsta的服务器,他提供直接实现的设置工具,就完全不需要自己去找GEO数据库和搭建环境了。
写在前面,WordPress多站点并不适合初学者,而对于熟悉WordPress开发的人来说,也应该慎用。WordPress多站点本身是一个比较理想化的解决方案,它在某些维度上简化了拥有多个网站的站长的管理流程,节约了服务器的空间;但它也增加了一层系统结构上的复杂度,使你在操作网站搬家、迁入等大的维护工作的时候容易踩坑。比如对于数据库,如果是单个WordPress网站搬家,我通常只要直接导出数据库就行了,而对于多站点中的子站点就需要做一些额外工作了。本文只讨论WordPress多站点的建立流程,因为我最近正好又为一位客户实施了一次,可以完整滴梳理一下实施过程和容易出错的地方。
WordPress多站点有两种形式,子域名和子目录。这次要配置的是子目录形式,也就是站点一是abc.com/site1 ; 站点二是abc.com/site2 这种形式。
首先,到原站点的设置 – 常规 页面中,把站点地址由原来的 abc.com形式,添加你需要的子目录名,变为 abc.com/site1,并保存设置。此时你访问 abc.com,浏览器会自动跳转到 abc.com/site1 。 查看详细
Jemalloc是一款服务器内存优化组件,在LNMP环境的安装包中可以选择安装。一般来说一台服务器上运行3-5个访问量不大的WordPress网站是绰绰有余的,所以很长一段时间里,我并没有特意研究过服务器内存优化,每次装LNMP的时候会选择不安装。
最近碰到一台服务器内存吃得很厉害,无论怎么调php-fpm配置都降不下来,不时还来个502报错。摆在面前的只有2个选项了,要么服务器升级加内存,要么试试内存优化工具再压榨一下服务器性能。于是抱着尝试心态试试Jemalloc。
安装jemalloc
yum install jemalloc
研究了一下项目运维中自动备份数据库到阿里云OSS的步骤,记录一下阿里云后台和服务器的一系列操作。
进入阿里云对象存储OSS后台,先开一个Bucket,命名为“brain-backup-db”。因只是做备份数据库用,所以存储类型选最便宜的“归档存储”即可,其他选项用不着的就都不开。关于费用,本文最后一节会做介绍。
然后进入这个Bucket的概览页面,找到外网访问的Endpoint,记录下来。
如果你的ECS和OSS是在同一地区的,也可以根据实际网络情况,这里的Endpoint选第二或第三个,存储速度飞快。特别说明,一般购买阿里云ECS,默认网络是经典网络,也就是说同区域的ECS数据备份到OSS上,大部分情况下可以选绿框圈出的那个;跨区域或者用的是非阿里云ECS服务器的,则选红框圈出的。
本人深度使用WordPress开发网站、微信小程序加起来有七八年了,用WP完成的项目上百个。说一下我对主机的选择。
分两种情况,中国大陆内(需要备案),中国大陆外(含港澳台,不备案)。
只推荐阿里云。我曾用过新网、微软Azure(国内叫做世纪互联)、阳光互联、网宿 这几家的云主机。本人直观感受,这几家和阿里云比,都是××。
国内建站选主机服务商,主要考虑的事情有3点:
1. 备案平台方便高效;
2. 云端网站后台功能全,用户体验合理;
3. 主机运行稳定。
备案一直是小白站长头疼的事。且现在备案的确越来越麻烦,如果你选其他云服务商,且你是个新手没有经历过备案,其备案流程和操作能让你恶心很长时间。迫于管局的压力,阿里云的备案现在也在收紧限制,从以前的随便申请,到现在一台ECS必须买3个月才能提供5个备案名额,且流程每年都在加长。但是阿里云自身服务规范且非常高效,其备案流程真的完胜国内任何一家其他服务商,没有例外。
云端网站后台功能,阿里云是最全的,在国内也没有例外。这个东西是基础建设,需要巨大的投入,比得是公司实力,这一点目前就没有任何一家能和阿里云相比了。你去新网、电信云、或者任何一家其他的提供云服务的网站注册一下看看,和阿里云比真的让人失去使用愿望。不过我也去腾讯云看过,虽然后起,但毕竟背靠大厂,而且有微信小程序生态圈的加持,腾讯云其实可以作为第二选择,以后能不能赶超阿里云,还不好说。 查看详细
有一段时间未登录的测试机,发现MySQL的root密码找不回了,整理一下网上搜的办法重置密码,记录一下步骤。
SSH登录到服务器,找到MySQL配置文件/etc/my.cnf,在[mysqld]这一行下面添加一行:
skip-grant-tables
保存后,重启MySQL:
service mysqld restart
然后就可以用无密码方式登录MySQL了
在mysql命令符后,留意一下系统提示的MySQL版本号,执行语句
#MySQL5.7以下版本 UPDATE user SET Password = password ( 'abcd1234' ) WHERE User = 'root' and Host='localhost'; #MySQL5.7和更新版本 update user set authentication_string=password('abcd1234') where User='root' and Host='localhost'; #退出 quit;
密码abcd1234只是示例,尽量改复杂一些。
然后再打开my.cnf文件,去掉刚才加的那一行,保存后再次重启MySQL,即告完成。
之前记录过一篇如何建立并查看PHP报错日志的文章,见这里:https://blog.brain1981.com/1824.html
最近治下某个网站遭到攻击,产生了大量的PHP报错日志,甚至大量占用了磁盘空间。PHP日志文件是持续写入的,如果一直生成新的日志,这一个文件就会变得很大,无法打开。我又不想彻底关闭报错日志记录,只能对其进行分段,把每天的日志分为不同文件存储。 查看详细
近期发现服务器上MySQL又经常宕机了,平均每周一次,应该和最近新挂上去的几个WordPress网站有关,毕竟一台配置不算豪华的主机上挂了10个WP网站,压力太大难免会内存不够造成宕机。每次宕机都需要自己重启MySQL也比较麻烦,如果是客户自己发现的,感觉更不好,所以网上找了个无人值守的脚本先用起来。 查看详细
最近项目很多,就没什么时间更新博客。在碰到同一个问题的时候,时隔一个月居然先后求教搜索引擎两次,比如本文标题的这个问题。其实在第一次解决后,做个笔记,第二次再碰到就可以直接解决,而不用再到处找答案了。所以,还是记录一下这个问题的解决吧。
这个问题是我修改主机上一个网站的域名绑定的时候碰到的。在改了LNMP的vhost配置文件和网站路径、域名解析也完成后,用新的域名访问网站,就出现了这样的open_basedir报错:
查看详细
这两天用LNMP1.2安装了一台阿里云主机,照着以前安装LNMP1.1的步骤按部就班的安装下来,大致顺利,但也碰到了个新的问题,装完Pureftpd后,发现无法用web方法登陆了。打开http://[ip]/ftp目录可以访问到登陆界面,但输入正确的密码后页面就停止响应,有时候给出502报错,有时候干脆什么也不显示。最后搜索到解决方法:
在web目录中新建一个.user.ini文件
vi /home/wwwroot/default/ftp/.user.ini
然后加入一行代码:
open_basedir=/home/wwwroot/default:/tmp/:/proc/:/etc/
保存后,即可正常登陆Web管理界面了。