2024年4月

准备

在 Ubuntu22.04 上安装 Docker,本文基于阿里云镜像仓库安装docker。

导入 Docker 的官方 GPG 公钥和添加 Docker CE 的阿里云镜像源

step 1: 安装必要的一些系统工具

sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

step 2: 安装GPG证书

使用 trusted.gpg.d 目录导入 Docker 的官方 GPG 公钥

下载 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

配置 APT 以信任新的密钥

配置 APT 以信任刚刚下载的 GPG 密钥。这涉及到修改或创建一个 /etc/apt/trusted.gpg.d/ 目录下的文件。通常,这个文件会与您要添加的仓库相关联。

step 3:添加 Docker 的存储库:

添加 Docker 的 APT 仓库以便于安装 Docker。

添加 Docker CE 的阿里云镜像源到您的 /etc/apt/sources.list.d/ 目录下的 docker.list 文件中,并且确保它引用了您刚刚创建的 keyring 文件:

# Ubuntu22.04
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list

# Ubuntu 其他版本可以执行此条
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

Step 4: 更新Docker-CE镜像源

apt update

安装指定版本的Docker-CE

Step 5: 查找Docker-CE的版本

apt-cache madison docker-ce

 docker-ce | 5:26.1.0-1~ubuntu.22.04~jammy | https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:26.0.2-1~ubuntu.22.04~jammy | https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:26.0.1-1~ubuntu.22.04~jammy | https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:26.0.0-1~ubuntu.22.04~jammy | https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages

Step 6: 安装指定版本的Docker-CE: (VERSION例如上面的5:26.1.0-1~ubuntu.22.04~jammy)

apt -y install docker-ce=5:26.1.0-1~ubuntu.22.04~jammy docker-ce-cli=5:26.1.0-1~ubuntu.22.04~jammy

Step7: 把Docker服务设为开机启动,并立即启动服务

systemctl enable --now docker

查看docker版本

docker version

# 查看docker信息
docker info

# 查看docker相关文件
dpkg -L docker-ce

安装docker-compose

apt安装

使用sudo apt install docker-compose 安装之前,可以使用 apt-cache policy docker-compose 命令可以显示 docker-compose 包在系统中没有安装,因为apt 大部分情况下安装的都是较老版本。

apt-cache policy docker-compose

如下信息:

root@moshanghua:~# apt-cache policy docker-compose
docker-compose:
  Installed: (none)
  Candidate: 1.29.2-1
  Version table:
     1.29.2-1 500
        500 http://mirrors.cloud.aliyuncs.com/ubuntu jammy/universe amd64 Packages

但有一个候选版本 1.29.2-1 可用。这个候选版本位于 http://mirrors.cloud.aliyuncs.com/ubuntu jammy/universe 这个仓库中。

下载预编译的二进制文件并安装

下载特定版本的 docker-compose

首先,需要找到对应版本的 docker-compose 的下载链接。

可以在 Docker Compose 的 GitHub 发布页面 中找到历史版本。

使用 curl 命令下载

# Ubuntu22.04 64位
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# Ubuntu 其他版本可以执行此条
curl -L "https://github.com/docker/compose/releases/download/2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

这里的 uname -suname -m 分别代表操作系统名称和架构,它们会被替换为 Linux x86_64,从而下载对应的版本。

应用执行权限

下载后,给 docker-compose 文件应用执行权限

sudo chmod +x /usr/local/bin/docker-compose

验证安装

验证 docker-compose 是否安装成功,并检查安装的版本:

docker-compose --version

输出应显示 docker-compose version 2.27.0

手动部署LNMP环境(Ubuntu)

LNMP分别代表Linux、Nginx、MySQL和PHP。安装步骤见文章

本文章仅用作记录,只描述了大概流程,非正经教程。
毫无经验的小伙伴或者想搭建博客的都不建议浪费时间的往下看了,标签页右边的×可以点一下了,

准备工作 一 创建一个数据库

进入数据库创建一个数据库用来存储WordPress的数据。

登录 MySQL

sudo mysql -uroot -p

创建数据库,在这里,database_name 是您想要创建的数据库名称。

CREATE DATABASE database_name;

# 例如,创建一个名为 wp_blog 的数据库
CREATE DATABASE wp_blog;

创建后也可以使用 SHOW DATABASES; 查看数据库,这将列出所有可用的数据库。

# 创建数据库
mysql> CREATE DATABASE wp_blog;
Query OK, 1 row affected (0.01 sec)

# 查看数据库
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wp_blog            |
+--------------------+
5 rows in set (0.00 sec)

mysql>

准备工作 一 配置SSL 证书

申请一个ssl 证书,就可以使用https 协议访问网站。

免费证书腾讯云或者阿里云以及其他地方都有提供申请渠道,申请过程略过。

然后把以.key .pem两个后缀结尾的文字上传到服务器的目录下,什么路径都行,本教程使用的路径是 /etc/nginx/,然后打开修改 nginx 配置文件/etc/nginx/conf.d/default.conf

server {
  listen 443 ssl http2; #监听443端口,用于处理加密的HTTPS请求,并启用HTTP/2协议。

  # 引入证书文件开始
  ssl_certificate   /etc/nginx/xm.moshanghua.net.pem; #指定SSL证书文件路径。
  ssl_certificate_key  /etc/nginx/xm.moshanghua.net.key; # 指定SSL证书密钥文件路径。
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
  ssl_prefer_server_ciphers on;
  # 引入证书文件结束 
}

再定义一个服务器块,将所有HTTP请求重定向到HTTPS。

server {
  listen 80;
  server_name xm.moshanghua.net ;
  rewrite ^/(.*) https://xm.moshanghua.net/$1 permanent;
}

完整的配置:

server {
  listen 80; # 监听80端口,用于处理未加密的HTTP请求。
  listen 443 ssl http2; # 监听443端口,用于处理加密的HTTPS请求,并启用HTTP/2协议。
  server_name localhost;
  root /usr/share/nginx/html/wpblog; # 设置Web服务器的根目录。

  location / {
    index index.php index.html index.htm; # 设置默认的索引文件。
    # 尝试直接访问请求的文件或目录,如果找不到,则重定向到index.php。
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }

  # 配置PHP请求的处理
  location ~ \.php$ {
    # 尝试直接访问请求的PHP文件,如果文件不存在,则返回404错误
    try_files $uri =404;
    include fastcgi_params; # 包含FastCGI参数文件
    fastcgi_pass 127.0.0.1:9000; # 设置FastCGI服务器地址和端口
    # 设置FastCGI脚本文件路径
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

  # SSL基础配置
  # 引入证书文件开始
  # 指定SSL证书文件路径,.pem前面一串字符改为自己的,路径也确认一下
  ssl_certificate   /etc/nginx/xm.moshanghua.net.pem;
  # 指定SSL证书密钥文件路径,.key前面一串字符改为自己的,路径也确认一下
  ssl_certificate_key  /etc/nginx/xm.moshanghua.net.key;
  # 设置SSL会话超时时间为5分钟
  ssl_session_timeout 5m;
  # 指定允许的SSL加密算法
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  # 指定允许的SSL协议版本
  ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
  # 设置服务器加密算法优先
  ssl_prefer_server_ciphers on;
  # 引入证书文件结束
}

server {
  # 监听80端口,即HTTP请求的默认端口
  listen 80;
  # 指定了服务器的名称,nginx配置里多站点时建议指向一下具体的域名请求
  # 这里配置为xm.moshanghua.net,意味着它将响应所有指向该域名的请求。
  server_name xm.moshanghua.net ;
  # 这是一条rewrite规则,它将所有请求重定向到HTTPS
  # permanent标志表示这是一个永久重定向,HTTP状态码为301
  rewrite ^/(.*) https://xm.moshanghua.net/$1 permanent;
}

修改Nginx配置后,重启一下:sudo systemctl restart nginx

准备工作 一 源码相关

建议直接 clone 一份源码在本地,修改之后先上传到自己的GitHub仓库,再推到服务器。

这样做方便后续主题更新,可以在本地先改好,能正常运行跑一下流程,确认没问题了再拉取更新,不然直接拉取的话,安装依赖出点问题线上环境也就打不开了。

(本文章本部部分略过,线上直接跑项目)

源码地址:https://github.com/D-xuanmo/Nuxtjs-Wordpress

准备工作 一 端口放行

务器配置放行端口 30003002

下面介绍如何在Ubuntu 22.04搭建wordpress 以及部署主题Nuxtjs + WordPress。

安装 WordPress

首先进入网站根目录,不一定是非得在 /usr/share/nginx/html 目录下,也可以自己接着套文件夹或者另起文件夹,记得去Nginx 配置里同步修改。
本文演示目录为 /usr/share/nginx/html/wpblog

cd /usr/share/nginx/html/wpblog

使用wget 下载WordPress 程序,此链接默认下载最新版本

wget https://cn.wordpress.org/latest-zh_CN.zip

如果不要最新版,也可以前往https://cn.wordpress.org/download/releases/ ,这是为 WordPress 提供的每个记录版本的归档。

下载好后就解压文件

# 新环境,如果没有 unzip 解压工具可以安装一下
sudo apt install unzip

# unzip 命令解压
unzip latest-zh_CN.zip

解压后,文件默认是一起放在 wordpress 目录下,如果不是以此目录作为根目录,就用 mv 命令移动一下,演示的根目录是 /usr/share/nginx/html/wpblog

# 将 wordpress 目录下的所有文件和文件夹移动到 /usr/share/nginx/html/wpblog 目录下
mv wordpress/* /usr/share/nginx/html/wpblog

然后就可以访问解析的域名进行程序引导安装了,点击现在就开始。

数据库名填写前面用命令创建的wp_blog,用户名为MySQL的用户名root,密码为MySQL的登录密码,数据库主机不用改,表前缀改不改都行。

然后提交。

如果出现以下界面,权限不够,无法写入。
您可以使用 chmod 命令来设置权限

# 设置权限
sudo chmod 755 /usr/share/nginx/html/wpblog

# 设置所有者
sudo chown www-data:www-data /usr/share/nginx/html/wpblog

点击运行安装程序就能下一步了。

来到这一步,站点标题和邮箱地址后面都是可以改的,无所谓怎么写。

用户名和密码要认真填写并记住,等下登录后台要用的。

用户名可以自定义字符

点击安装WordPress,就可以看到安装成功的页面。

到这里,WordPress就安装完成了。

输入 https://域名/wp-login.php 就可以访问博客后台了。

设置里可以设置博客的配置,略过.

主题部署

所需环境准备

Nodejs 版本推荐 16.10.x或往上,低于16.10.x会报错模块不兼容。

安装 Nodejs 环境

需要在服务器安装 node 环境,需要大于 16.10.0。

本文章 node 版本为16.17.0,使用 wget 命令下载 Node.js 安装包,文件可以放在 root 目录,具体随意。本文档存放目录为 root目录

该方式使用的安装包是已编译好的二进制文件。解压文件之后,在bin文件夹中就已存在node和npm,无需重复编译。

wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz

# 将当前目录更改到根目录
cd ~

# 显示当前工作目录的绝对路径
pwd
/root

wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz

该安装包是编译好的文件,解压之后,在 bin 文件夹中就已存在 node 和 npm,无需重复编译。

解压文件 tar xvf node-v16.17.0-linux-x64.tar.xz

创建软链接,使 node 和 npm 命令全局有效。通过创建软链接的方法,使得在任意目录下都可以直接使用 node 和 npm 命令。

语法:

在执行这个命令之前,需要确保有足够的权限来在 /usr/local/bin 目录下创建链接。如果当前登录的用户账户没有足够的权限,可能需要使用 sudo 来执行这个命令

注:如果在下载Node.js 安装包时,不是在 **/root**目录下,那创建软链接时的源文件路径也要做相应更改

ln -s /root/node-v16.17.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v16.17.0-linux-x64/bin/npm /usr/local/bin/npm

到此已经安装完成,使用 node -v 查看 node 版本,使用 npm -v 查看版本号,如果出现正确版本号则安装成功。

使用 npm 安装其他的全局命令

npm i -g yarn pm2 这条命令是全局安装 yarn 和 pm2。

如果安装比较慢,可以使用淘宝镜像安装,npm i -g yarn pm2 --registry=https://registry.npmmirror.com,后续的安装都可以加上这个。

如果执行了这一步操作,提示 Command 'yarn' not found 或者 Command 'pm2' not found ,可以使用下边两条命令:

ln -s /root/node-v16.17.0-linux-x64/bin/yarn /usr/local/bin/yarn
ln -s /root/node-v16.17.0-linux-x64/bin/pm2 /usr/local/bin/pm2

以上命令和前面一样的效果,创建一个名为 /usr/local/bin/yarn 的符号链接,它指向 /root/node-v16.17.0-linux-x64/bin/yarn

这样做的目的是为了方便在任意目录下都能通过 yarn 命令来运行 /root/node-v16.17.0-linux-x64/bin/yarn 这个Yarn的包管理器,而无需每次都输入完整的路径。

完整步骤演示:

# 将当前目录更改到根目录
cd ~

# 显示当前工作目录的绝对路径
pwd
/root

# 下载指定版本nodejs
wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz

# 解压文件
tar xvf node-v16.17.0-linux-x64.tar.xz

# 创建软链接,使 node 和 npm 命令全局有效
ln -s /root/node-v16.17.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v16.17.0-linux-x64/bin/npm /usr/local/bin/npm

# 全局安装 yarn 和 pm2
npm i -g yarn pm2 --registry=https://registry.npmmirror.com

#创建软链接,使 yarn 和 pm2 命令全局有效
ln -s /root/node-v16.17.0-linux-x64/bin/yarn /usr/local/bin/yarn
ln -s /root/node-v16.17.0-linux-x64/bin/pm2 /usr/local/bin/pm2

运行项目

下载主题到网站根目录

cd /usr/share/nginx/html/wpblog

# 下载源码
wget https://github.com/D-xuanmo/Nuxtjs-Wordpress/archive/refs/heads/master.zip

#解压文件
unzip master.zip

将源码目录下的 service 放入 WordPress 主题目录 wp-content/theme/ 下,并启用此主题

# 进入源码目录
cd Nuxtjs-Wordpress-master/

# 复制目录到主题目录下
cp -r service/ /usr/share/nginx/html/wpblog/wp-content/themes/

# ls命令确认下文件
ls /usr/share/nginx/html/wpblog/wp-content/themes/

进入 Nuxtjs主题设置 ,启用本主题之后,会在外观菜单下加入一个子菜单,将站点前端域名设置为 WordPress 访问地址,确保 http://{domain}/wp-json 能有正确的数据,所有 WordPress 接口都是在这个虚拟目录下;如果访问报错可以尝试在 后台设置=>固定链接 设置为数字型;

访问地址,确保 http://{domain}/wp-json 能有正确的数据。https://xm.moshanghua.net/wp-json

打开目录下Nuxtjs-Wordpress-master/nuxt.config.js文件,修改项目的一些配置,改为自己的信息,如下截图,这一步不是必选的,可以安装完成之后在修改

改完之后再继续往下翻到最后,将下图2个地址改为自己的域名

确认此时是在Nuxtjs-Wordpress-master这个目录,执行 yarn 命令,这一步是安装项目所需要的依赖文件。(warning信息无视就好)

如果比较慢可以使用这个命令 yarn --registry=https://registry.npmmirror.com

依赖安装完成之后,执行 yarn dev,如果能出现以下截图代表能够正常运行项目。

到这里,访问上还是有问题,可以先跳到下面的Nginx 反向代理部分,把配置设置好。

遇到的问题:

但这会通过自己的域名或者 IP 访问 3000 端口还是无响应状态。

在Nginx配置文件里的根目录的请求处理配置部分加入proxy_pass http://127.0.0.1:3000后,

  location / {
    # 这里是每次访问域名将请求转发到3000端口
    proxy_pass http://127.0.0.1:3000;
  }

这下能通过主域名https://xm.moshanghua.net 访问到部分数据,大部分文件请求还是失败的

使用 Nginx 反向代理

需要的是用 80 或者 443 去访问,所以需要用 nginx 做代理,

Tips: 先到数据库找到WordPress的表 wp_options ,修改 siteurlhome 字段,值改为 http://{你的域名}:3002 端口,因为后续WordPress只会作为一个CMS管理系统

登录数据库,切换到WordPress数据库的表 wp_options ,修改 siteurl 和 home 字段

登录和切换数据库

#登录
mysql -u username -p

# 选择数据库,database_name 是想要选择的数据库名称
USE database_name;

# 列出数据库中的所有表
SHOW TABLES;

修改 siteurl 和 home 字段。

使用 UPDATE 语句来修改 wp_options 表中 option_name 字段下 home 的内容

以下是一个示例 SQL 语句,用于将 home 的内容修改为 http://xm.moshanghua.net:3002

# 修改 home 字段
UPDATE wp_options
SET option_value = 'http://xm.moshanghua.net:3002'
WHERE option_name = 'home';

# 修改 siteurl 字段
UPDATE wp_options
SET option_value = 'http://xm.moshanghua.net:3002'
WHERE option_name = 'siteurl';

完整演示:

mysql> SHOW DATABASES;

mysql> USE wp_blog;

mysql> SHOW TABLES;

mysql> DESCRIBE wp_options;

mysql> SELECT option_value FROM wp_options WHERE option_name = 'home';
+---------------------------+
| option_value              |
+---------------------------+
| https://xm.moshanghua.net |
+---------------------------+
1 row in set (0.00 sec)

mysql> SELECT option_value FROM wp_options WHERE option_name = 'siteurl';

mysql> UPDATE wp_options SET option_value = 'http://xm.moshanghua.net:3002' WHERE option_name = 'home';

mysql> UPDATE wp_options SET option_value = 'http://xm.moshanghua.net:3002' WHERE option_name = 'siteurl';

mysql> SELECT option_value FROM wp_options WHERE option_name = 'home';
+-------------------------------+
| option_value                  |
+-------------------------------+
| http://xm.moshanghua.net:3002 |
+-------------------------------+
1 row in set (0.00 sec)

mysql> SELECT option_value FROM wp_options WHERE option_name = 'siteurl';

mysql>



数据库字段修改完后,就再配置下规则:

以下是我的配置文件说明,这一步更多配置需要自己了解一下 nginx 配置:

配置分为两段

第一段,设置了一个监听3002端口的虚拟服务器,专门用于服务WordPress应用程序,用于代替之前的 WordPress 访问端口

# wordpress
server {
  # 这告诉Nginx监听3002端口,并将这个服务器块设置为默认服务器
  # 这意味着如果请求没有指定服务器块,将会由这个服务器块处理
  listen 3002 default_server;
  server_name xm.moshanghua.net;
  root   /usr/share/nginx/html/wpblog;

  location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

第二段,设置一个服务器块,它同时监听80和443端口去代理 Nuxt 服务。

server {
  listen 80;
  # 听443端口,用于处理加密的HTTPS请求,并启用HTTP/2协议
  listen 443 ssl http2;
  server_name xm.moshanghua.net;
  root   /usr/share/nginx/html/wpblog;

  # 引入证书文件开始
  ssl_certificate   /etc/nginx/xxx.pem; # 指定SSL证书文件路径
  ssl_certificate_key  /etc/nginx/xxx.key; # 指定SSL证书密钥文件路径
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
  ssl_prefer_server_ciphers on;

  location / {
    # 这里是每次访问域名将请求转发到3000端口
    proxy_pass http://127.0.0.1:3000;
  }

  # 下边两个是代理wordpress的一些服务
  # 配置对/wp-json路径的请求处理
  location /wp-json {
    # 将对/wp-json的请求代理到本地的3002端口
    proxy_pass http://127.0.0.1:3002/wp-json;
  }
  # 配置对/wp-content路径的请求处理
  location /wp-content {
    # 将对/wp-content的请求代理到本地的3002端口
    proxy_pass http://127.0.0.1:3002/wp-content;
  }
}

完整的配置:

# wordpress
server {
  listen 3002 default_server;
  server_name xm.moshanghua.net;
  root   /usr/share/nginx/html/wpblog;

  location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

server {
  listen 80;
  server_name xm.moshanghua.net ;
  rewrite ^/(.*) https://xm.moshanghua.net/$1 permanent;
}

server {
  listen 80;
  listen 443 ssl http2;
  server_name xm.moshanghua.net;
  root   /usr/share/nginx/html/wpblog;

  ssl_certificate   /etc/nginx/xm.moshanghua.net.pem;
  ssl_certificate_key  /etc/nginx/xm.moshanghua.net.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
  ssl_prefer_server_ciphers on;

  location / {
    proxy_pass http://127.0.0.1:3000;
  }

  # 下边两个是代理wordpress的一些服务
  location /wp-json {
    proxy_pass http://127.0.0.1:3002/wp-json;
  }

  location /wp-content {
    proxy_pass http://127.0.0.1:3002/wp-content;
  }
}

如果成功配置就到这里结束了。

sudo nginx -t测试一下配置,然后重启sudo systemctl restart nginx

再次运行项目

执行 yarn dev,如果能出现以下截图代表能够正常运行项目,

然后用自己的域名访问,如果能够正常访问按ctrl+c 退出即可;

使用 yarn pm2 这条命令去运行项目并开启文件更改自动重载项目,pm2 是 Nodejs 的一个守护进程,使用 pm2 logs 可查看日志。

使用 pm2 save 保存当前的应用列表,使用 pm2 startup 开机自动启动

运行项目完整流程:

 # 安装项目所需要的依赖文件
 yarn --registry=https://registry.npmmirror.com

 # 运行开发环境下的脚本
 yarn dev

 # 运行项目
 yarn pm2

 # 查看运行日志
 pm2 logs

 # 保存当前的应用列表
 pm2 save

 # 开机自动启动
 pm2 startup

至此通过域名https://xm.moshanghua.net/就能正常访问了

博客后台xm.moshanghua.net:3002/admin

博客后台如果不想带端口去访问,也可以NGINX配置下的WordPress一个服务器块里修改下规则反代到指定域名,也可以顺便加上 SSL,走HTTPS访问。

主题设置

Nuxtjs + WordPress主题使用说明请访问https://xuanmo.xin/details/2987

SQL的一些常用命令,使用环境MySQL8.0,个人使用记录,非教程。

部分常用指令

登录 MySQL

sudo mysql -uroot -p

创建数据库在这里,database_name 是您想要创建的数据库名称。

CREATE DATABASE database_name;

查看数据库,这将列出所有可用的数据库。

SHOW DATABASES;

选择数据库,在这里,database_name 是您想要选择的数据库名称。

USE database_name;

列出数据库中的所有表,可以使用 SHOW TABLES

SHOW TABLES;

查看表的结构数据,使用 DESCRIBE ,在这里,datasheets 是您想要选择的数据表名称。

DESCRIBE datasheets;

或者,使用 SHOW COLUMNS 命令

SHOW COLUMNS FROM datasheets;

示例 SQL 语句,查看 wp_options 表的结构:

DESCRIBE wp_options;

查看修改某个表中某字段下的内容

查看表 wp_users 下 user_pass 的内容

SELECT user_pass FROM wp_users;

# 这个查询将显示所有用户的用户名(user_login)和加密后的密码(user_pass)
SELECT user_login, user_pass FROM wp_users;

修改表 wp_users 下 user_pass 的内容bfa0022e2da2d6ea1dfe8cec00964ba7

# 将your_username替换为您想要更改密码的用户名。
# 这个命令会将指定用户的user_pass字段更新为您提供的哈希值
UPDATE wp_users SET user_pass = 'bfa0022e2da2d6ea1dfe8cec00964ba7' WHERE user_login = 'your_username';

例如在按照教程 https://www.xuanmo.xin/details/2987 部署主题时,要修改数据库。内容如下:

Tips: 先到数据库找到WordPress的表 wp_options ,修改 siteurl 和 home 字段,值改为 http://{你的域名}:3002 端口

要查看 wp_options 表中 option_name 字段下 home 的内容,可以使用以下 SQL 查询:

SELECT option_value FROM wp_options WHERE option_name = 'home';

使用 UPDATE 语句来修改 wp_options 表中 option_name 字段下 home 的内容。以下是一个示例 SQL 语句,用于将 home 的内容修改为 http://xm.moshanghua.net:3002

UPDATE wp_options
SET option_value = 'http://xm.moshanghua.net:3002'
WHERE option_name = 'home';

MySQL备份与导入

使用mysqldump工具备份

mysqldump是MySQL自带的逻辑备份工具,可以备份整个数据库或者其中的部分表。以下是一个基本的备份命令:

mysqldump -u 用户名 -p 数据库名 > 备份文件.sql

这个命令会提示你输入密码,并将指定的数据库备份到一个.sql文件中。

备份数据库到指定目录

mysqldump -u username -p database_name > /path/to/backup/directory/backup.sql

在这个命令中,username是你的MySQL用户名,database_name 是要备份的数据库名。/path/to/backup/directory/是你要保存备份文件的目录,backup.sql是要保存的备份文件名,名字也可以自己起。
执行这个命令后,会要求你输入密码。输入密码后,等待备份完成。

导入备份

方法一:直接导入 SQL 文件

mysql -u username -p database_name < path/to/backup.sql

这个命令会在登录后直接将 backup.sql 文件的内容导入到 database_name 数据库中。

方法二:登录 MySQL,使用SOURCE 语句。

mysql -u username -p

选择数据库,然后导入文件。

# 如果已经知道要导入的 SQL 文件属于哪个数据库,可以使用以下命令选择数据库:
USE database_name;

# 导入 SQL 文件
# path/to/backup.sql 是 SQL 文件所在的路径。
SOURCE path/to/backup.sql;

博客显示提示建立数据库连接时出错

WordPress博客更换环境后,导入数据库访问提示建立数据库连接时出错,但各种信息是没有问题的。

创建一个的PHP脚本test.php,使用wp-config.php中的数据库连接信息尝试连接到数据库,以检查是否能够成功连接。

<?php
define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_user');
define('DB_PASSWORD', 'your_database_password');
define('DB_HOST', 'your_database_host');

$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if ($connection) {
    echo "Database connection successful!";
} else {
    echo "Error: Unable to connect to database.";
    echo mysqli_connect_error();
}
?>

显示了Database connection successful! 连接是没问题的。

解决办法...就删掉了wp-config.php文件,复制wp-config-sample.php文件里的内容重新填写了下数据库的内容,再保存为wp-config.php后,就访问正常了.....

验证PHP安装提示 502

nginx配置如下

server {
  listen 80;
  server_name localhost;
  # 网站根目录
  root /usr/share/nginx/html;

  location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

在访问带php文件的页面就显示502

在nginx里的日志看到如下错误信息

[error] 10795#10795: *11 connect() failed (111: Connection refused) while connecting to upstream, client: 171.106.160.15, server: localhost, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xm.moshanghua.net"

错误信息了解到的信息,这里的上游服务器是指PHP-FPM。

错误码111表示连接被拒绝,这意味着Nginx无法与PHP-FPM通信。

sudo systemctl status php7.4-fpm 看了下状态,PHP-FPM服务在正常运行。

ps aux | grep php-fpm命令来查看所有运行中的进程,并且通过grep命令过滤出与php-fpm相关的进程,进程也没问题。

netstat -ant |grep 9000来检查端口9000上的网络连接情况。

这个命令通常用于确认PHP-FPM服务是否正在监听TCP端口9000,因为PHP-FPM默认可能会监听这个端口。

执行这个命令时,您可能会看到类似以下的输出:

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

但在输出中看不到任何监听端口9000的行,那么PHP-FPM可能没有配置为监听TCP端口9000,或者服务没有运行。

在这种情况下,检查PHP-FPM的配置文件(通常位于 /etc/php/7.4/fpm/pool.d/www.conf 或类似路径),确认listen指令是否正确设置为监听端口9000

不是就修改一下让其指向TCP端口,因为Nginx配置用的也是TCP端口。

但指向套接字文件好像不行,就算Nginx配置里也用Unix socket,也有问题,不知道是不是路径有问题...具体情况没研究了。

一般在 www.conf 文件的30多行的样子,会看到一条listen指令 listen = /run/php/php8.1-fpm.sock

这里把它修改了或者注释重新起一行,让它指向TCP端口

;listen = /run/php/php8.1-fpm.sock
listen = 127.0.0.1:9000

保存后重启一下php-fpm sudo systemctl restart php7.4-fpm

再次访问应该就能看到展示PHP的所有配置信息了。

访问出现An error occurred.

访问出现An error occurred.时

确认Nginx配置里的PHP请求的处理方式部分下fastcgi_param指令。(大概?

fastcgi_param指令用于设置发送到FastCGI服务器的参数

访问出现File not found.

确认输入的文件名...

最近迁移网站,在服务器上安装了指定版本Node 后,然后 yarn 项目所需要的依赖文件时,报错模块与版本不兼容,提示版本过低,故而需要换版本。

安装了编译好的 Node.js 版本,可以按照以下步骤来卸载它:

找到 Node.js 安装目录

首先,需要找到 Node.js 的安装目录。如果是使用编译源代码的方式安装的 Node.js,会安装到 /usr/local/bin 目录下。

删除 Node.js 可执行文件

删除 Node.js 的可执行文件。
这通常是 nodenpm(或 npxnpm-cli.js 等)。

sudo rm /usr/local/bin/node
sudo rm /usr/local/bin/npm
sudo rm /usr/local/bin/npx

删除 Node.js 替代链接(如果有)

如果创建了符号链接到其他目录,如 /usr/bin,也应该删除这些链接。

sudo rm /usr/bin/node
sudo rm /usr/bin/npm
sudo rm /usr/bin/npx

删除 Node.js 的 man 页面(如果有)

如果在安装过程中创建了 man 页面,也应该删除它们。

sudo rm -rf /usr/local/share/man/man1/node.1
sudo rm -rf /usr/local/share/man/man1/npm*.1

删除 Node.js 的库文件

删除 Node.js 的库文件,这些文件通常位于 /usr/local/lib/usr/lib 目录下。

sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/lib/node*

删除 Node.js 的配置文件(如果有)

如果你在安装过程中创建了配置文件,也应该删除它们。

sudo rm -rf /etc/apt/sources.list.d/nodesource.list

删除 Node.js 的安装目录

最后,删除 Node.js 的安装目录,通常是 /usr/local/lib/nodejs

sudo rm -rf /usr/local/lib/nodejs

清理 npm 缓存(可选)

如果你想要彻底清理 Node.js 的痕迹,你也可以清理 npm 的缓存。

npm cache clean --force

请注意,这些步骤假设你是以标准方式安装 Node.js,并且没有使用包管理器。

清理了node 环境后,也记得把使用 npm 安装其他的全局命令清理一下,不然使用或者创建时会提示没有此类文件或目录存在。

ln -s /root/node-v16.17.0-linux-x64/bin/yarn /usr/local/bin/yarn
ln: failed to create symbolic link '/usr/local/bin/yarn': File exists

yarn
-bash: /usr/local/bin/yarn: No such file or directory

npm清理

如果你确定现有的链接是错误的或者已经过时了,你可以先删除它,然后创建一个新的链接。

检查现有文件:不确定是否应该删除链接,可以检查现有文件是否正确

cat /usr/local/bin/yarn

这将显示文件的内容。如果它是一个有效的 yarn 可执行文件,你可能不需要做任何事情。如果它不是,你可以删除它,然后创建符号链接。

使用ls检查现有的链接更直观

ls -l /usr/local/bin/yarn
ls -l /usr/local/bin/pm2

这将显示链接当前指向的位置,打印出来的内容里node-v后面的数字就是版本,对应不上安装的就可以删了。

ls -l /usr/local/bin/yarn
lrwxrwxrwx 1 root root 37 Apr 17 10:39 /usr/local/bin/yarn -> /root/node-v16.0.0-linux-x64/bin/yarn

如果确定可以安全地这样做,删除链接:

sudo rm /usr/local/bin/yarn
sudo rm /usr/local/bin/pm2

卸载安装的PHP 7.4及其相关扩展

列出已安装的PHP相关包: 使用apt命令列出所有与PHP 7.4相关的包:

sudo apt list --installed | grep php7.4

卸载PHP 7.4及其扩展: 使用apt命令卸载列出的所有PHP 7.4相关的包。您可以使用通配符*来卸载所有相关的包:

sudo apt purge php7.4*

或者,您可以逐个卸载每个包:

sudo apt purge php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-fpm

删除多余的配置文件: 卸载PHP包后,可能会有一些剩余的配置文件留在系统中。您可以使用以下命令来清理这些文件:

sudo apt autoremove
sudo apt autoclean

删除PPA源: 如果您想要完全清理系统并且不打算再次使用ondrej/php存储库,您可以删除这个PPA源:

sudo add-apt-repository --remove ppa:ondrej/php

更新包列表: 最后,更新您的包列表以确保所有更改都反映在系统中:

sudo apt update