:
1. 背景
近日,笔者发现自己之前写过的文章在网络上被以各种方式转载,很难进行版权保护。因此,诞生了建立个人博客网站的想法。
在技术选型上,我原本想用Serverless来托管一个基于Next.js框架开发的个人博客网站。优点在于同构渲染,可以让用户更快地看到页面,并且对Seo友好。缺点是开发成本太高,不利于后续网站内容管理。
基于快速部署应用、降低维护成本的初衷,笔者选择了WordPress这个全球最流行的开源博客和内容管理网站建设平台。它易于使用、功能强大且灵活。具有扩展性强、生态良好、主题插件丰富等特点。
如上图所示,笔者整理了网站建设流程,可以分为以下三个步骤:
网站部署。需要购买一台云服务器,并搭建一套搭建WordPress站点所必需的LNMP四件套,包括安装Linux操作系统、安装Nginx(Web服务器)、MariaDB(数据库)、PHP(脚本语言)。然后配置MariaDB数据库,安装并配置WordPress。从此您就可以使用云服务器分配的公网 IP来访问网站了。发布网站。作为一名合格的冲浪者,我当然知道正规的网站必须配备高端域名。因此,需要注册域名、域名备案、网站向公安备案、购买域名解析服务、安装SSL证书。从此以后就可以通过域名访问该网站了。运营网站。想要成功推广自己的博客,就得对网站进行全面的“改造”,比如美化网站、提高内容质量、提高访问速度、提供安全性等等。整理完如此繁琐的建站流程后,笔者心灰意冷。幸运的是,我无意中发现了一个宝藏服务——Lighthouse(轻量级应用服务器)。 Lighthouse是面向轻量级应用场景的新一代开箱即用的云服务器产品。与普通云服务器相比,使用更加方便。提供高带宽流量套餐,以套餐形式出售基础云资源。一键构建应用,自动完成应用软件及依赖运行环境的安装和初始配置。简而言之,部署网站模块所需要做的一切都由Lighthouse 承包。
作者使用Lighthouse + WordPress应用镜像搭建个人博客,优化其性能和安全性,致力于打造一个高品质、Seo友好、优秀的前端技术分享博客,并将建站过程输出为文章分享给需要建站的朋友。如果您对本文感兴趣,可以访问我的博客——Rileycai的博客-前端技术分享,继续阅读文章。
:
2. 部署网站
参考文档使用WordPress应用镜像搭建网站并购买轻量级应用服务器。购买完成后,等待1分钟创建实例,即可登录控制台。云端为每台服务器分配一个公网IP,您可以通过http://43.138.XXX.XX/wp-login.php等IP地址登录WordPress管理后台。
:
2.1 修改 WordPress 默认登录地址
WordPress后台默认登录地址为http://your-domain/wp-login.php。有心人很容易爆破密码获取管理员权限,从而恶意篡改博客内容。
修改默认登录地址有两种方法,一种是修改wp-login.php的文件名,全局将wp-login字段替换为新名称(如new-login),可以通过http://your-域/新登录。 php地址登录。
还有一个比较简单的方法就是在域名中添加自定义参数,不满足条件就重定向。远程登录服务器,操作流程如下:
# 进入wordpress根目录cd /usr/local/lighthouse/softwares/wordpress# 进入当前主题文件夹,如twentytwentycd wp-content/themes/twentytwenty# root权限编辑functions.php文件sudo vim functions.php 复制到functions中。在php文件末尾添加以下代码:
function login_protection(){//举个例子,参数可以任意修改if($_GET@['id'] !='123456')header('Location: https://your-domain/');}add_action('login_enqueue_scripts', '登录保护');复制上述代码意味着只有访问http://your-domain/wp-login.php?id=123456才能进入管理员登录页面,否则将被重定向到您域名的首页。当然,id=123456只是一个例子,你可以自定义更复杂的参数来增加爆破难度。
3. 发布网站
3.1 注册域名
您可以为您的WordPress 网站设置单独的域名。用户可以通过易于记忆的域名而不是复杂的IP地址来访问您的网站。具体操作流程请参见域名注册指南。
:
3.2 网站备案
根据国家有关部门规定,域名指向中国境内服务器的网站必须进行网站备案。域名未获得备案号前,网站无法打开和使用。您可以通过腾讯云免费注册您的网站。
同时,自网站开通之日起30日内,到公司实际经营场所或者个人常住地公安机关办理公安备案手续。
:
3.3 域名解析
域名注册后,您只有域名的使用权,但您不能通过域名直接访问您的网站。人们习惯于记住域名,但机器只知道IP地址。域名和IP地址之间存在一一对应的关系。它们之间的转换工作称为域名解析。域名解析需要有专门的域名解析服务器来完成。解析过程是自动的。提供开箱即用的优质官方应用镜像,预置应用系统所需的软件栈最优组合是将域名(例如rileycai.com)转换为机器可读的IP 地址(例如10.10.XX.XX)的服务。
参考快速添加域名解析文档,登录腾讯DNSPOD控制台,点击快速添加网站解析,输入购买的Lighthouse服务器分配的公网IP,系统会自动为您添加两条域名解析(DNS)记录。主机记录为A和www。
提示:A记录:指将域名指向一个IP地址(外网地址)。主机记录:选择子域名。例如添加www.rileycai.com的分辨率时,可以在“主机记录”中选择“www”。如果要添加对rileycai.com的分析,可以在“主机记录”中选择“@”。
:
3.4 安装 SSL 证书
添加上一节的域名解析后,我们可以使用域名http://rileycai.com访问博客网站,但是Chrome会提示不安全,因为HTTP有两大缺陷:“明文”和“不安全感”。由于HTTP固有的“明文”特性,整个传输过程完全透明,任何人都可以拦截、修改或伪造链接中的请求/响应消息,从而导致数据不可靠。
这就是HTTPS 派上用场的地方,它为HTTP 添加了机密性、完整性、身份验证和不可否认性。它将HTTP的底层传输协议从TCP/IP改为SSL/TLS,从“HTTP over TCP/IP”改为“HTTP over SSL/TLS”,让HTTP运行在安全的SSL/TLS协议上。
前往SSL控制台申请免费证书,下载证书文件并复制获得的rileycai.com_bundle.crt证书文件和rileycai.com.key私钥文件(以申请SSL证书的域名命名)从本地目录到轻量级应用服务器Nginx默认配置文件目录。参考如何将本地文件复制到轻量级应用服务器上传证书文件。
远程登录轻量级应用服务器,首先停止Nginx服务,然后编辑Nginx默认配置文件目录下的nginx.conf文件。
sudo Killall nginx # 停止服务sudo vim /www/server/nginx/conf/nginx.conf # 编辑nginx.conf文件,复制找到server {.},将server大括号中对应的配置信息替换为以下内容,本文以rileycai.com为例,记得替换成你申请的域名。
服务器{ 监听443 ssl;服务器令牌关闭; keepalive_timeout 5;根/usr/local/lighthouse/softwares/wordpress; #填写你的网站根目录,例如:/usr/local/lighthouse/softwares/wordpressindexindex.phpindex.html html; access_log 日志/wordpress.log; error_log 日志/wordpress.error.log;服务器名称rileycai.com; #填写你的证书绑定的域名,例如:www.rileycai.com ssl_certificate rileycai.com_bundle.crt; #填写你的证书文件的名称,例如:rileycai.com_bundle.crt ssl_certificate_key rileycai.com.key; #填写你的私钥文件名称,例如:rileycai.com.key ssl_session_timeout 5m; ssl_协议TLSv1 TLSv1.1 TLSv1.2; #参考配置此SSL协议ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:aNULL:MD5:RC4:DHE; #可以按照这个密码套件进行配置,写法遵循openssl标准ssl_prefer_server_ciphers on;位置~* \. php$ { fastcgi_pass 127.0.0.1:9000;包含fastcgi.conf; client_max_body_size 20m; fastcgi_connect_timeout 30s; fastcgi_send_timeout 30s; fastcgi_read_timeout 30s; fastcgi_intercept_errors 开启; {.},然后输入以下配置信息。
ssl_certificate rileycai.com_bundle.crt; #填写你的证书文件名称,例如:rileycai.com_bundle.crtssl_certificate_key rileycai.com.key; #填写你的私钥文件名称,例如:rileycai.com.key 复制回车按esc退出编辑,输入按键shift+:然后输入wq!保存编辑的内容。
执行命令检查配置文件是否有问题。如果没有问题,重启Nginx服务器。
sudo nginx -t #检查配置是否有问题sudo systemctl restart nginx #重启Nginx服务器复制下一步,进入WordPress管理后台,选择设置-常规,将WordPress地址和站点地址更改为HTTPS。
通过浏览器访问我们的网站https://rileycai.com,访问时可以在地址栏中找到“锁定”标记。
:
3.5 HTTP 自动跳转 HTTPS
此时你仍然可以通过HTTP访问博客,你可以配置服务器自动将HTTP请求重定向到HTTPS。 Nginx支持重写功能。如果编译时没有删除pcre,可以添加return 301 https://$host$request_uri;到HTTP 服务器,将默认端口80 请求重定向到HTTPS。重复上一节的步骤,在刚才的server {.} 之后添加另一个监听80 端口的服务器。
服务器{听80;服务器名称rileycai.com; #填写你的证书绑定的域名,例如:rileycai.com return 301 https://$host$request_uri; #将http域名请求转换为https}复制并通过浏览器再次访问我们网站http://rileycai.com,可以发现301请求被重定向到了https://rileycai.com。至此我们已经完成了SSL证书和Nginx配置的验证生效,大功告成!
如果想在访问博客网站和后台管理系统时强制使用SSL,还需要远程登录轻量级应用服务器,编辑wp-config.php来配置SSL。
sudo vim /usr/local/lighthouse/softwares/wordpress/wp-config.php # 编辑wp-config.php文件并复制并在文件末尾添加以下2行代码以强制使用SSL网站访问和管理后台登录。
/* 强制后端和登录使用SSL */define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true);复制:
4. 运营网站
:
4.1 主题配置
俗话说,人靠衣装,马靠鞍。选择具有高级质感、响应式设计和SEO友好代码的主题是快速构建高质量网站的关键。登录博客管理后台,选择外观-主题-热门选项,就会有丰富多彩的主题供你选择。这里有几个适合构建个人博客网站的高质量主题。
Squaretype在Themeforest上的个人博客主题类别中排名比较靠前,其扁平化的设计让主题看起来非常高大上。 Authentic是一个专业的个人博客主题,适合生活方式和杂志个人博客。其配色简洁大方,兼容大多数主流高级插件。 Salient是一个价值非常高的WordPress主题。 Salient是一个个人博客主题,在Themeforest上卖得很好。它简单易用,丰富的后台配置,让站长能够快速搭建自己想要的网站。
4.2 内容编辑
创建一个高质量的个人博客不应该是肤浅的,还需要有充实的内容。只有不断输出优质内容,才能让观众“流连忘返”。
工欲善其事,必先利其器。 WordPress原生编辑器不支持Markdown语法,这里推荐一款功能强大的Markdown语法编辑插件。 WP Editor.MD 是一款美观且实用的在线Markdown 文档编辑器。基于Editor.md构建对WordPress平台的支持。使用WordPress Jetpack 的Markdown 模块来解析和保存内容。不会干扰/接管前台页面。
:
4.3 启用 cdn 加速资源加载
至此,您可以通过域名https://rileycai.com正常访问博客,打开Chrome开发者工具,切换到网络面板,查看请求队列。可以发现,当访问Lighthouse服务器时,PHP会动态生成html代码并返回给浏览器。浏览器根据Content-Type判断为html代码:text/html; charset=UTF-8,并为渲染过程做准备。第一步是将html转换为浏览器可以理解的结构——DOM树。浏览器从上到下解析html代码,遇到外部css文件、js脚本、静态资源等时发起请求。但是从图中可以看出,浏览器发起请求时,有多种原因为什么请求不能立即执行,而是需要排队。排队的主要原因有两个。一是@。例如CSS、HTML、JavaScript等是页面中的核心文件,因此它们的优先级最高;图片、视频、音频等资源虽然不是核心资源,但具有优先级。水平较低。通常后者遇到前者时,需要“让路”,进入等待队列状态。第二个是页面中的资源是有优先级的。如果发起HTTP 请求时这6 个TCP 连接繁忙,则该请求将排队。
随着网站复杂度和流量的增加,网站访问速度和响应速度越来越慢,甚至出现服务器带宽不足、磁盘IO高等问题。这时候静动态分离的网站架构就非常有必要了。架构示意图如下:
Sync QCloud COS 插件基于腾讯云对象存储COS,将网站静态资源与后台应用分离。用户访问网页的请求由应用后台响应,直接返回动态html内容,减少WordPress云服务器带宽和存储压力;静态资源存储在COS 上,与云服务器内网高速通信,不仅访问速度快,而且成本比磁盘存储更低。另外,它可以与内容分发网络CDN配合,进一步提高用户访问静态资源的速度,让您的网站更快。
:
4.3.1 创建 COS 存储桶
创建一个公共读、私有写的存储桶。建议存储桶所在区域与WordPress博客平台服务器所在区域保持一致。
创建的存储桶将被分配一个COS 默认源域名。我们可以启用默认的CDN加速域名,也可以配置自定义的CDN加速域名。
我们添加了cdn.rileycai.com,一个自定义CDN加速域名。自定义域名部署完成后,CDN认证栏中会出现CDN认证功能设置链接。单击“设置”,可直接进入CDN控制台进行CDN认证配置。一般来说,CDN上分发的内容默认是公共资源,用户获取URL后即可访问。除了频率等访问控制策略外,还可以设置高级时间戳认证,防止盗刷。这里我们主要添加防盗链白名单配置,通过对用户HTTP请求头中referer字段的值设置访问控制策略,只允许我们的博客网站和市面上通用的搜索引擎访问(适合提高seo),从而限制访问来源,防止恶意用户窃取。
自定义域名接入CDN后,系统会自动为您分配一个CNAME域名(后缀为.cdn.dnsv1.com),该CNAME域名无法直接访问,需要完成CNAME配置在域名服务商处,如下图所示,CNAME记录表示将我们定制的CDN加速域名指向COS分配的CNAME域名,然后CNAME域名提供访问的IP地址。
最后,为您的自定义CDN域名申请免费的SSL证书,以便可以使用HTTPS访问。
:
4.3.2 安装并配置 WordPress COS 插件
在WordPress后台点击【插件】【安装插件】,搜索Sync QCloud COS找到插件,点击安装。
配置密钥、桶名、访问域名后,WordPress静态文件即可自动无缝同步至腾讯云对象存储COS。至此,网站提速效果初步显现,为追求同样的效果图像质量好,尺寸更小,加载速度更快。我们还可以借助数据处理能力进一步压缩静态资源。在图像样式处理中添加?imageMogr2/format/webp,将图像转换为webp。
:
4.4 网站性能优化
WordPress页面是动态的,这意味着每次有人访问文章或页面时,WordPress都会重新生成访问的页面。为了生成页面,WordPress 必须运行进程来查找所需的数据,将其组合在一起,然后将其呈现到用户的屏幕上。
此过程涉及很多步骤,当许多人同时访问网站时,它会显着减慢您的网站速度。这就是为什么我们建议每个WordPress 网站都应该使用缓存插件。缓存可以使您的WordPress 网站速度提高2 到5 倍。缓存插件的工作原理是在第一次访问该页面后生成该页面的副本,然后在以后有人访问该页面时先将缓存的副本发送给用户,从而避免了需要的过程重新生成页面。
这里我推荐一个免费插件——WP Fastest Cache,安装该插件然后检查以下所有免费配置并提交,它可以帮助你完成80%的wordpress优化步骤。
请注意,WP Fastest Cache 不适用于默认永久链接。因此,您需要更改永久链接配置,选择第一个“普通”链接配置以外的其他配置。
笔者在这里遇到了一个问题。更改固定链接配置后,前面的页面都显示404。Nginx服务器可以进行如下修改。远程登录轻量级应用服务器,首先停止Nginx服务,然后编辑Nginx默认配置文件目录下的nginx.conf文件。
sudo Killall nginx # 停止服务sudo vim /www/server/nginx/conf/nginx.conf # 编辑nginx.conf文件,复制找到server {.},将对应的配置信息放在server大括号内(之前配置了443信息),添加以下配置。
服务器{ 监听443 ssl; # 之前的ssl 配置. # 添加以下位置/{ if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ 重写(.*) $1/index.php; } if (!-f $request_filename){ 重写(.*) /index.php; } } rewrite /wp-admin$ $scheme: //$host$uri/permanent;} 复制并执行该命令,检查配置文件是否有问题。如果没有问题,重启Nginx服务器。
sudo nginx -t #检查配置是否有问题sudo systemctl restart nginx #重启nginx服务器复制WP Fastest Cache插件主要用于开启服务器端缓存系统,可以压缩卷css和js文件在一定程度上有所改进,但并不完美。我们可以将它与Autoptimize 插件Autoptimize 插件浏览器会为每个域名最多维护 6 个 TCP 连接一起使用,该插件默认在页面头部注入CSS,但也可以内联关键CSS 并推迟聚合的完整CSS、将脚本移动和推迟到页脚以及缩小HTML 。可以优化可以聚合、缩小和缓存脚本和样式文件、优化Google 字体、异步非聚合JavaScript、去除WordPress 核心表情符号等。
此后,我再次访问https://rileycai.com,打开网络面板,发现请求数从49个减少到34个,html、css、js文件数量减少,体积明显压缩,网站的性能也得到了显着的提升。具体数据请参考下表。由于该网站使用数据万象的webp转码,并且没有启用插件的图片压缩功能,因此IMG资源量没有明显变化。
首页优化效果
优化前文件数
优化前资源总量
优化文件数量
优化后的资源总量
超文本标记语言
1
12.6KB 1 9.7KB JS 12 71.7KB 5 60.1KB CSS 8 93KB 3 32.9KB IMG 19 519KB 17 493KB