LNMP一键包不安全?自己一步步搭建WordPress网站

背景

这是一篇主要给建站新手和我自己看的教程,大佬请跳过哈

之前写过一篇博文记录使用LNMP一键包架设WordPress博客的过程,这次来一个手搓版。

对于看到代码就发怵的站长或者想快速重复部署的人士,LNMP并不陌生,它向导式的使用方式和涵盖的丰富选项,用起来很方便,甚至让我产生了依赖,本站从2019年创建至今的多次安装和迁移,都是使用LNMP,直到2023年9月LNMP被爆涉及“供应链投毒”的安全事件。

简单来说就是使用LNMP一键安装包(尤其是1.9以后的版本)可能不再让人感到安全了,与此同时LNMP官网被人发现更改了所有者为一家公司。

安全无小事,之前朋友多次催我自己搞,我都觉得难,现在没有退路了,我不得不勉强自己学习“手搓”一个用于WordPress的系统环境了,没想到真的不难,成功给自己的博客网站安装了自己一步步搭好的“船新版本”环境!

开始之前,有必要简单说明下让一个网站正常运行所需要的基本条件,毕竟以我这样一个小网站的站长的经历,初次安装好并不是终点,而是起点,后续将遇到升级、排障、迁移服务器、备份与恢复等一系列事情。

网站,英文名website,顾名思义就是网络上的一个站点,那么这个站点就必须有基础设施才能运作,可以理解为一个商店、书店或者电影院,与这些实体场所相似,网站也一样需要实体的设备,叫做服务器,可以简单理解为一台你可以远程连接控制的电脑,这台电脑上有操作系统和你网站的网页内容。

有了服务器,还需要让人可以看到你的网站,那么你的服务器就需要连接到互联网上,如果我们是从主机服务商上购买的,例如VPS,那么它就已经可以连接互联网。

接下来还需要让其他人知道你的网站叫什么,以及怎么到达,这就是域名和域名解析的作用了,服务器在互联网上的基本位置是IP地址,但这个地址是一串难记的数字(IPv4)或排列无规律的字母(IPv6),相当于XX路XX号,所以就有了域名这个东西,例如ceshidao.com就是域名,这个名称易于理解好记,相当于地图上某个门牌号对应的建筑名称【XX大厦】,为了把域名与IP地址绑定,让访问者输入域名就能直达服务器,就需要在域名注册服务商网站进行登记和指路,这个服务就是DNS(域名解析服务),通常域名也是需要购买的,价格有高有低,相当于靓号高价。在域名购买的地方也有附带DNS服务。

到这一步,就已经有了服务器和域名了,也就是有了一块地,通了水电和修好路了,该打地基了。

打好地基后,就就可以在上面修建房屋建构了,这里的房屋就是WordPress,而地基则是以往由LNMP一键安装包帮我们打好,相当于以前是请了免费的施工队打地基,现在我们自己来干。

所以有必要了解下LNMP主要做了什么。

其实LNMP就是Linux+Nginx+MySQL+PHP:

  • Linux —— 这是指系统采用Linux
  • Nginx —— 是一个网络服务器软件
  • MySQL —— 管理数据库
  • PHP —— 互联网脚本语言软件,很多网址的结尾都是.php

Linux

Linux系统由Linus Torvalds(芬兰裔美国人,生于1969年)创始于1991年,目前是地球上广泛使用但大部分人没感觉到它存在的系统,尤其是互联网上的网站。通常我选用其中的一个版本Debian 11 x64,这个步骤最简单,备份好现有VPS里的数据后,直接在VPS里面选择版本点击重装,几分钟内就完成了,然后会得到新的SSH连接的root密码,如果端口没有指明,通常是22,把IP地址、root密码和端口好保存起来,每次重装都应该及时保存最新的版本。

Linus Torvalds。照片来自维基百科

Nginx

Nginx是由Igor Sysoev(俄罗斯人,生于1970)于2004年开发,简单来说是一个处理网络请求的服务器软件,相当于是收发室、联络部。

Igor Sysoev。照片来自本人LinkedIn的profile页面

MySQL

MySQL是由David Axmark(瑞典人,1962年生)创建的公司于1996年发布的数据库软件,用来存储网站的结构化数据,包含有多个数据表,相当于是一个excel文件包含了多个sheet,比如wordpress文章的基础数据。MySQL数据库有一个可视化的软件界面叫phpMyAdmin,让数据库管理变得像操作系统一样直观,安装非常简单,放进网站目录就可以,但phpMyAdmin不是必须的,因为安装和配置数据库完成后,很少会在手动对数据库进行操作,尤其是对非技术玩家的小型博客而言。

David Axmark。照片来自维基百科

PHP

PHP是由Rasmus Lerdorf(丹麦裔加拿大人,生于1968年)于1993年开发的一种在当下被广泛使用的网络脚本语言,我们大概知道下就是很多网页都是.php结尾的,包括WordPress。

Rasmus Lerdorf。照片来自维基百科

感谢这些巨人

感谢上面这些软件的创始人和后续的无数开发者,正是由于他们提供的开源、免费的软件,让我们每个人都可以很容易的在互联网世界上开设自己的网站。


现在开搞!

从这个步骤开始就需要用到上面得到的SSH信息并开始敲代码了,但放心,其实就是执行几条命令,以及向Windows的资源管理器一样稍微操作下文件管理,而不是让你码字编程。

假设你已经购买好了域名和VPS服务器,服务器也安装好了Debian 10或者11(尽量是11)

现在去下载一个软件:

BitVise SSH Client

接下来大部分的工作都在它里面进行:

打开这个页面:https://www.bitvise.com/download-area

点击Download Bitvise SSH Client,然后在电脑上安装这个软件

点击登录后,如果信息正确,会在左侧出现新的按钮,说明如下图:

SSH命令窗口

点击New terminal console会打开一个黑底白字的窗口,所有的代码执行命令都会在这个窗口里完成

这个窗口的几个注意点:

  • 不要使用Ctrl+C和Ctrl+V,如果要复制窗口里的文字,直接鼠标左键拖选需要的那段松开就自动复制到剪贴板了,如果要粘贴剪切板里的文字到这个窗口里,直接点击鼠标右键,就会直接粘贴到当前光标所在位置
  • 尽量不要中途关闭窗口,因为新开的窗口看不到之前的窗口会话内容,需要查找和调用,如果担心中途本地电脑断电断网,可以使用如下命令安装一个给会话命名和调用会话:

在SSH里依次执行下面三条代码,注意每一条单独回车执行,为的是避免SSH安装期间网络掉线导致无法继续执行命令

第一条是为了更新代码库,第二条是安装screen程序,第三条是创建一个独立的名为myvps的会话界面

如果网络掉线,可以重新连接SSH,再执行 screen -r myvps 就会看到之前的会话。 

有时候screen异常退出可能会提示状态为Attached,可以执行:screen -D -r myvps 进行恢复。 

有时候可能会创建了多个同名的screen会话,可以执行:screen -ls 查看对应会话的session id,然后使用screen -D -r sessionid 进行恢复。 

SFTP文件管理窗口

点击New SFTP window,会打开一个双窗格的窗口,左边是本地电脑的文件,右边是服务器里的文件,鼠标拖入文件就可以上传或者下载

步骤01:

检查确认域名DNS已经设置指向了VPS的IP地址,并且VPS已经安装了Debian 10或11,然后在BitVise软件里SSH登陆服务器。

步骤02:

在SSH窗口,执行命令,将会开始更新Debian系统软件:

用键盘上的方向键进行选择,选第一个即可,然后按回车键确认

步骤03:

安装sudo命令功能,也就是执行命令:

步骤04:

接下来要安装最新的PHP版本,执行如下命令:

列出并记录现有的PHP软件包:

安装curl命令:

添加 ondrej/php 存储库,依次执行下面4条命令:

安装新的PHP 8.3包:

测试php是否安装正确:

如果出现类似如下的反馈,则说明安装正确

步骤05:

例子里这次安装的是php 8.3,于是在SFTP里进入/etc/php/8.3/fpm目录,编辑php.ini文件

修改其中的一些设置,搜索下面几行,修改为如下建议的值,并Ctrl+S提交保存,具体最后如下:

步骤06:

执行如下命令重启php-fpm服务:

步骤07:

通过如下命令安装安装Nginx:

步骤08:

安装完成后,创建需要部署wordpress站点的目录,其中mywebsite可以改为自己的文件夹名称,全英文即可:

步骤09:

创建站点的nginx配置文件目录:

执行后复制和鼠标右键粘贴进去内容如下,注意mywebsite改为自己上面命令设置的名称,server_name后面的两个网址替换为自己的域名:

然后按快捷键Ctrl+O保存,再按Ctrl+X退出编辑

步骤10:

尝试nginx是否配置正确,执行命令:

如果返回如下结果,则配置正确:

步骤11:

在/etc/nginx/sites-enabled目录创建对应配置文件的软连接,执行命令(注意命令中的ceshidao.com要改成你自己的域名):

步骤12:

通过如下命令重启nginx服务和php-fpm服务:

步骤13:

Debian中已经使用MariaDB取代了MySQL,所以这里我们安装MariaDB即可,命令如下:

步骤14:

执行如下脚本,开始数据库设置:

在设置数据库root密码是记得自己记住,后面必须用到,不要太简单,也不要太复杂

以及一些设置,参照如下:

至此,数据库安装配置成功

步骤15:

创建wordpress用的数据库,SSH窗口执行:

然后输入数据库的root密码并回车,注意此时不会显示任何字符,所以不要以为没有输入成功

密码就是上一步设置的密码,然后就进入到了mariaDB的命令模式

执行如下命令,创建一个名为wordpress的数据库:

然后执行如下命令,为名为wordpress的数据库设置密码并授予所以权限,此处是数据库的密码,可以与上面数据库root用户的密码一样或不一样:

然后依次执行如下两条命令,刷新并退出:

步骤16:

开始安装WordPress,执行如下命令,下载最新的wordpress到临时文件夹并解压复制到之前设置的网站目录,注意mywebsite换成自己之前在【步骤08】命名的文件夹:

执行完,SFTP窗口里VPS网站文件夹下如上情况即可

步骤17:

设置站点文件目录权限,便于www-data账号运行时需要(注意mywebsite换成自己之前在【步骤08】命名的文件夹):

sudo chown -Rv www-data:www-data /home/www/mywebsite/

步骤18:

把域名解析到新的vps ip地址——这一步跳过,已经是指向当前vps

步骤19:

配置LET’S ENCRYPT证书,这个步骤让你网站可以加上HTTPS的安全保护,Chrome浏览器就不会再提示访问者说访问你的网站不安全了。

配置证书前,要保证域名已经正确解析道Debian VPS对应的IP地址上。执行如下命令,使用certboot自动配置证书(注意最后一行的命令里把域名换成自己的):

然后输入联系邮箱,且不share邮箱,回车,一般来说几分钟后,提示成功

步骤20:——注意,这一步暂时跳过

这一步如果是小白,可以先跳过,以免弄不好导致自己没法SSH连接了

为了更好的保证服务器Debian VPS安全,通过ufw防火墙关闭不必要的端口,只开放需要的端口:

步骤21:

现在就开始配置WordPress了

在网络浏览器里输入自己的域名,打开了配置向导

选择简体中文

在数据库连接新页面:

数据库名wordpress,除非自己之前设置的不是这个

用户名wordpress,除非自己之前设置的不是这个

密码就是之前设置的数据库密码,注意不是数据库root用户密码

数据库主机默认localhost

表前缀默认wp_

然后设置自己的WordPress管理员用户名和密码,点击安装WordPress

正常情况下,安装完成后,登陆就可以进入WordPress后台了

如果这是你的第一个网站,那么你就可以开始做写博客、更换主题等操作了。

通常来说,一个博客最重要的是内容,因此如果你对网站的外观和额外功能并不在意,那么开始写博客吧!

如果要把自己的WordPress做得更好看、加一些功能、特性,那可以做如下一些事情:

  1. 把后台网址从通用的/wp-admin改为别的,这个可以通过插件进行
  2. 给网站换个自己喜欢的主题(外观),可以结合自己的博客内容
  3. 给网站设置一个图标(favicon),也就是浏览器标签开头的那个小图案
  4. 给网站安装一些必要的插件提高性能和速度,详见本站的这篇博文
  5. 把WordPress的默认用户头像换成本地版本,详见本站的这篇博文
  6. 给网站换一个自定义的鼠标指针,详见本站的这篇博文

祝写博客愉快!

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据