读书百次不如行动一次
尝试了数次敲代码,又逛了一圈XX云的云市场,发现了宝藏——“系统镜像”,这不就是中学期间梦寐以求的快速装机Acronis true image server(目前仍号称最强,横扫WIN / Mac平台)的功能么?别人栽好树,我把它“移植”过去乘凉。得出整体思路如下:先简单粗暴点亮网页,树立信心,然后平衡难度与时效,兼顾优化后,决定采用所谓的“wordpress高效优化”系统镜像,其建立于centos(更喜欢叫桑托斯)+apache+mysql+php,不得不说,里面的软件版本,对“优化”的强调,像雅利安人一样“纯净”的描述,极具吸引力。在简单的用户指南关于路径、端口、服务开关等操作说明的指引下,很快搭建好简易的测试网页。

挖出萝卜带着泥,除基本的LAMP外,还有一个所谓的”缓存“频繁出现,有没有用另说,如此多人提到,相当于不可或缺。“缓存”包括了PHP5.5之后内置的操作码缓存Opcache及数据库缓存memcached。用phpize编译这两个模块,使我真正懂得了目录/文件、程序相对定位及运行。据说编译输出的是*.so文件,按道理应该和程序通过网上摘抄的memcache.ini“自动”联系起来,但运行phpinfo一直没有任何运行证据,这是我遇到的第一个大坑,可把我难坏了。 主要的设置都放在了memcache.ini内,我先把里面的内容搬到根设置的php.ini内,无果。除了后面的详细参数外,感觉就第一行的声明有点用处:zend_extension=memcache.so。以此为突破口,尝试如下方法:
1 | 先把藏在像密码一样的目录里(phpinfo可看extension_dir)的so文件找出来,然后直接在php.ini里上述段落的第一行文件名前添加上了目录路径,重启php-fpm,It works! |
2 | 在 phpinfo 看到了scan this dir for additional .ini 的地址是*/php.d/,接着把memcache.ini直接拖到这个目录内,重启 php-fpm,It also works too! |
通过第一个检验智商的测试后,扎实打下第一座里程碑,赶紧装B截图发了PYQ得瑟,但是,在向极个别人士的微信中分享IP地址120.24.0.20的时候,微信的分享标题由全数字组成,让别人感觉摸不着头脑。点进去另外有非加密网站不安全的警告提示,让人不禁联想到某种不法网站,所以未能向外传播。还好当时没有铺天盖地的防诈骗APP。
垂直 或 水平?
实际上当年的微信已然一统天下,公众号甚至小程序等自媒体层出不穷,某bro已经准备运行一个个人公众号,甚至已设想用来带货哈,所谓的个人博客甚至个人网站早已垂暮,尚能饭否?身为颜狗,沉迷于各种精美的挑花眼的主题,还是十分坚定地站在了wordpress这一边。微信也就是个webkit浏览器,把网页塞进浏览器不就完了,这样既符合微信的大审美,也能展示自己的特立独行。此时是2015年底,免费的主题已经满足不了我的美好想象,遂在Themeforest网站上购买了 最网红的主题——the7,功能非常强大,却也异常臃肿:插件种类繁多,设置眼花缭乱,有今天古腾堡块编辑器的影子,光它的优化教程就遍网都是。我还没怎么好好设计主页呢,各栏目存在大量留白空间,一旦打开F12检查页面加载情况,就像一下子就回到了99年56K拨号上网,再开始套弄浏览器,搭建个人网页,陷入死循环。为应对低下无效资产,启用了W3 total cache插件,说实话速度并无带来明显提升,其minify模块还容易将主题的CSS或JS代码搞乱,但兼容性测试证实了我正确安装各种模块及Memcache,心里舒坦不少。



从2012年的IPHONE5宣告了手机的屏幕全面转向16:9的宽屏,到2017年三星S8突破此比例宽屏,手机越做越长,同时显示器也往横向发展,出现了带鱼屏,电竞屏等超宽屏。网页的浏览方向与竖向A4word文档类似,自古以来的滚动条都是自上而下,而16:9屏幕浏览网页时,因单行文字不宜过多,所以文字段落的两边会有大量留白。这样既浪费空间,也不符合内容设计的协调,为何不把两张A4纸并排显示呢,就像打开一本书一样?为了让文字铺满屏幕,我决定网站的方向顺势往横向发展 。2016年没过多久,就在Themeforest网站上购买了经典的horizontal模板——Regolith。其安装包就很迷你,页面也很简洁,设置不多,加载迅速,但总体对其设计满意不需要过多修改。通过F12检查器的CSS及Html代码实时预览功能,我唯一一处修改是SIDEBAR的左悬浮与上悬浮,很快就做出一个像模像样的首页。当然啦,还有待实现传说中的一件换肤功能,这个可是10年前看的CSS禅意花园里面就有的功能。



如果一切顺利,在微信中无论是普通聊天中的分享,还是PYQ的分享,都能无缝跳转至wordpress页面(这猜想终于在2022年的今天得以实现)。这就需要完成两个前置任务:域名及SSL!
一鼓作气,申请域名。叫啥好呢——记得有个步骤大功告成后出现“Voila”字样,干脆前面加个A,既说明是个里程碑事件,又与AV相关,另外建站过程也像这单词一样令人感叹!屁颠屁颠跑去拍照,结合背景的条幅及使用权限说明,有点像西方国家的逮捕记录。但,这却是30岁左右20+最后一张(30+最早一张)高清正式照(尽管穿着不正式):脸上苹果肌脉络自然,发际线与先天无异。
2016年11月域名申请获批,通过某云的域名绑定很快就实现梦寐以求的3w.域名上网,这下在微信中分享终于摆脱数字困扰像模像样了,喜悦溢于言表,不过SSL报警仍然无解。
半成品加热 VS 纯手工现点现做?
在2016年的春天,我进入第二家公司,往后每年只有随着春天到来,随着年度计划复苏一下雄心壮志。
2017年春天,深入研究wp系统镜像,根据反复安装操作记录下重点或易错步骤,形成word文档。另外通过大量百度,了解了apache连接的3种MPM模式,举一反三,得知NginX与PHP的联系为PHP-fpm,从此播下NginX萌芽的种子。
直到2018年春天,镜像市场繁杂的wordpress平台带来了恼人的选择困难症,那我就要好好地找一找碴:通过对比发现,各种有的没的模块一应俱全,各种新的旧的版本一个不落。得出结论:别人集成的优化与纯净皆属扯淡。之前无数次百度中,高频出现的“源代码”3字让我耿耿于怀,于是萌生从无到有纯净搭建的念头。今天事实证明:源代码安装不仅灵活,而且高效!
中心思想:全手工编译安装。除了食材别人提供,厨房工作自己来。已安装好主程序,但没有库的软件,则通过devel安装库或依赖包(gcc及sql因时间成本太高除外),其他既没有主程序,也没有库的软件,全部make & make install。
步步为营,对网上教程进行数据清洗,粗筛有用的程序、依赖包、模块甚至参数,每成功一部就在word中记录,后整理为更有条理性的excel表格Compile.xlsx留底。2018年5月成功搭建LAMP+Opcache+memcached的完整运营生态,形成雏形树立信心。接着坪山项目开工至2019年四月,趁着工程收尾心情好,申请了免费SSL证书,紧接着一个逗号,让整个项目跟着心情一起冬眠吃灰。
Apache 或 Nginx?
Apache有三大优势:1、历史悠久稳定;2、Wordpress官方推荐;3、Rewrite直接简单。但生命不息折腾不止,也许因为新(×),因为流行 (×) ,因为简洁 (×) ,因为高负载 (×) ,因为快速开启SSL (×) ,因为反向代理 (×) ,因为开发智力 (√),之前种草的Nginx无法拔除,决定在2020年春天准备整体转往LNMP ,这一改变,直接让整个项目翻来覆去地躺平两年半。
两者安装方式差不多,Apache的主要设置在httpd.conf而Nginx在Nginx.conf,另外Nginx还要对php-fpm进行初始化的设置。LNMP的安装过程都挺顺利,但行至wordpress时却无法连接到名为localhost本机的数据库。后来发现,如使用127.0.0.1的IP地址则可以正常连接。期间进行了各种尝试(请列举)
这个问题一下子困扰了4年,终于在2022年8月回门宴前,克服心魔重新上路,不破楼兰终不还。
8月,我按自己当前的所思所想重新梳理了一遍问题,因为已时隔两年没有好好折腾了,以前的思维定式几乎消失殆尽,这是一个从零开始的好机会。但很快发现,殊途同归。。。(这次有什么失败的经验,怎么想到的?)。skipmode。。。
这一杯敬自己
2022年9月12日中秋假期第三天11时06分,大沙地星巴克,一杯grande经典巧克力饮品,口令:7.这一杯敬自己,谷歌了“mysqli_real_connect(): (HY000/2002): No such file or directory”关键词,搜到了最为切题的一篇serverfault问答“https://serverfault.com/questions/907938/phpmyadmin-authtype-config-mysqli-real-connect-hy000-2002-no-such-file-or
”,详细(中文)研究了里面的所有回答,在顺数第二、倒数第四条1赞回答中看到与众不同的答案——指出,有可能是*.service的一种tmp临时文件夹保护机制。我半信半疑地把tmp/mysql.sock文件路径变更为run/mysql.sock,在按耐不住激动心情后,终于有预感能成。(结合上文的请列举,中间还有没有验证的步骤?)。。




随着WP的5分钟安装程序顺利出现“不错”、“成功”二字,It works Finally !!!四年终于等到你


9月18日星期日11:30AM,岗顶百脑汇星巴克(21岁没去过1st@2009 July,Dell Inspiron1320,橙汁)长桌,灵感来袭,工作突然加速。顺利解决了通过localhost本地连接至mysql.sock后,剩下步骤:
1、编译安装PHP
2、配置php-fpm模块
3、添加PHP启动项并启动
4、编译安装memcached
5、添加 memcached启动项并启动
6、编译安装memcache模块并重启
7、安装W3TC并启用memcache
8、看到memcache统计数据饼图
全部迎刃而解。意味着终于顺利抵达4年前到的终点,不同的是这次坐的是飞机,而不是马车。设置了功能完成的里程碑后,全面胜利只剩一步之遥——优化!

SSL/2,最新HTTP一步到位
序号 | 软件 | 版本 | 首发 | 备注 |
---|---|---|---|---|
1 | Linux Centos | 7.9 | 2020-11 | Centos最终boss |
2 | NginX | 1.20.2 | 2021-11 | |
3 | MySQL | 5.7.36 | 2021-10 | wp建议最低版本,5.7之间的小版本都有明显差异,8.X尚未稳定hold不住 |
4 | PHP | 7.4.10 | 2020-9 | 此时wp未完全建议用PHP8,另外与MySQL8同步升级 |
5 | memcached | 1.6.9 | 2020-11 | |
6 | memcache | 4.0.5 | 2019-12 | 最新版本8.0,跳开太多参见MySQL |
7 | wordpress | 5.8.4 | 2022-3 | 与主题较匹配 |
哪里放下图床?
云端工作大功告成,加注内容封顶还差最后一步:图床。这个早就考虑到了,2016年就决定使用微博做图床,可是时过境迁,国内的社交平台大多禁止了外链访问。目前全免费的只剩不差钱的国外,但使用PicGO挂载Github图床,三天两不通,体验非常差。PicGO的图床设置里还有阿里云的OSS,我想这不是云硬盘么(实为不怎么懂的对象存储),用这高大上的玩意不会让我钱包穿窟窿吧?后来得知,按流量收费,因无流量其实约等于免费,就开通bucket尝试一下。um,先上传再改链,同时主题的fancy img、缩略图不支持链接的形式,还要从(img)代码处修改。。。庆幸找到出路,否则肯定打击写文章的积极性。图片能占多大的空间呀?一年能用1G否?还能更新几年?目光聚焦到起点,干脆就用40G的服务器内置硬盘吧。
逐渐地往站点填充内容。即使用上了较为扁平简朴的主题,无论是本地还是远程测速都提示站点缓慢依旧,平均加载完成时间接近20s,都啥年代了还存在网络瓶颈?用开发者工具分析究竟, 高清图片及主CSS、字体等文件占用空间较大,从2015年祖传来的1Mbps的小水管根本不够用(连2006年装的ADSL都有2Mbps,Vultr早已不限速)。经过前期的求索,顺藤摸瓜自然而然地找到了OSS+动静分离相结合的真经。这其实是最流行通用的做法,2016年某些关键字就加入了谷歌浏览器的收藏夹。那时候觉得太遥远,哪知道一转眼就6年光阴,不能再找借口拖延了,必须给我安排上。其实原理很简单,共分为三步:
1 | 主题内的functions.php加入Rewrite代码 | 太NB,只需把后缀添加上,什么静态文件都好使 |
2 | 云上控制台填写“镜像回源”规则 | “当请求在OSS中没有找到文件,会自动到源站抓取对应文件保存到OSS,并将内容直接返回给用户” 典中典,相当于自动更新&同步 |
3 | 云上控制台填写“跨域设置” | 防止CORS错误??? |
一开始只弄了前两步,看到图片的链接自动改为OSS地址,测速网的评分直线上升,深感大功告成原地起飞。不久发现字体没正常显示:想着不影响大局无所谓,也不想浪费网速就把这问题放一边凉着,但后来发现却是的符号越来越多,所以还是硬着头皮Debug,通过CORS报错找到了上述的第三步方法并成功解决。还有第四步——CDN,一来性价比低,小破站并没有太多关注,所以数据不需遍布全球,二来设置非常傻瓜,没有成就感,总的来说装在了心里就很满足了。
现在还有几个小问题需讨论:
1、上述第三步骤的CORS究竟是什么意思?
2、把ECS硬盘里的数据删了会怎样?能独立使用OSS么?
Memcache VS Redis?
有一个问题从2018年困扰至今:前用memcache自带的探针,发现命中率只有10几低的可怜。后来看到某文章说“与网站访问量有关,访问量少,自然缓存几率小”,也就聊以自慰了。但2023年的初的我仍不甘心,想弄个明白,首先是memcached与memcache不同,
终于,所有建站流程一网打尽,喜封金顶,文曲星从此高照,欢迎来稿!