标签 Ubuntu22.04 下的文章

准备

在 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

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

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.

确认输入的文件名...

基础环境

Ubuntu22.04

安装Nginx

如果不想要最新版的 Nginx,可以直接执行 sudo apt -y install nginx ,
Ubuntu 22.04使用 apt 软件包管理器安装默认的是 nginx1.18 版本。

想用 1.18 版本以上或以下指定版本可用以下方法。

通过apt命令安装指定版本

1.更新Ubuntu系统内的软件包。

sudo apt update

2.添加 apt 源文件
将 Nginx 的主线仓库添加到 /etc/apt/sources.list 文件

可以使用tee命令将文本直接写入文件。

# 备份源文件(可选)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
# 可以使用tee命令将文本直接写入文件
# 这里使用了 tee -a 命令,其中 -a 参数表示将内容追加到文件末尾,而不是覆盖现有文件。
# 添加二进制包仓库:
echo "deb http://nginx.org/packages/mainline/ubuntu/ jammy nginx" | sudo tee -a /etc/apt/sources.list

# 添加源代码仓库
echo "deb-src http://nginx.org/packages/mainline/ubuntu/ jammy nginx" | sudo tee -a /etc/apt/sources.list

说明:服务器Ubuntu版本是Ubuntu22.04(LTS)版的,所以系统代号是:jammy
如果要查看系统代号,使用命令 lsb_release -c 或者 lsb_release -cs

root@chixm: # lsb_release -c
Codename:       jammy

root@chixm: # lsb_release -cs
jammy

3.导入nginx公钥
因为在 Ubuntu 22.04 上导入 Nginx 官方公钥时,使用apt-key导入秘钥,会警告apt-key 命令已经不再被推荐使用。
所以可以使用gpg命令和相关的目录来管理密钥。
下载 Nginx 公钥: 可以使用 curl 或 wget 来下载公钥文件。

## 使用 curl
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor > nginx.gpg

## 使用 wget
wget https://nginx.org/keys/nginx_signing.key -O - | gpg --dearmor > nginx.gpg

再将公钥导入到 APT 密钥环

sudo install -o root -g root -m 644 nginx.gpg /etc/apt/trusted.gpg.d/

最后,更新软件包列表以确保 APT 包管理器使用新的公钥。

sudo apt update

4.安装Nginx。

# 查看可安装的 nginx 版本
sudo apt-cache show nginx

#安装nginx 1.25.1
sudo apt-get install nginx=1.25.0-1~jammy

# 查看Nginx版本
sudo nginx -v

5.然后启动nginx

sudo systemctl start nginx

如果有如下报错的话:

Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

多半是内置的Apache抢占了nginx的端口,执行以下命令:

sudo systemctl stop apache2.service
sudo systemctl restart nginx

6.nginx 部分配置与命令

使用systemctl命令控制服务:
设置开机启动: sudo systemctl enable nginx
启动nginx:sudo systemctl start nginx
停止nginx:sudo systemctl stop nginx
重启nginx:sudo systemctl restart nginx
查看状态:sudo systemctl status nginx

配置路径:
nginx 配置文件目录: /etc/nginx ;
配置文件:/etc/nginx/conf.d/default.conf;
默认存放网站的目录:/usr/share/nginx/html,如果需要更改目录修改配置文件的内容即可

安装 PHP

以下是安装不同版本的 PHP 和 一些常用扩展的方法步骤。

php7.4

使用的版本是7.4,就以这个版本操作。

1.首先需要安装PHP的仓库:

sudo apt install software-properties-common

2.然后添加ondrej/php存储库,它提供了多个PHP版本:

sudo add-apt-repository ppa:ondrej/php

出现 Press [ENTER] to continue or Ctrl-c to cancel. 时按回车继续。
注意:(ondrej/php)是第三方仓库,可能会带来一些风险,因为它不是Ubuntu官方维护的。如果介意,请安装 ubuntu 提供的默认版本 。

3.再次更新安装包:

sudo apt update

4.然后就可以直接安装php7.4了!

sudo apt install php7.4

# 这里如果需要php7.4-fpm服务,也可以直接用以下命令去安装,
# 该指令会直接安装包含 php 在内的 php7.4 和 php7.4-fpm
sudo apt install php7.4-fpm -y

5.安装PHP扩展(可以根据需要删减需要的)。
PHP 扩展的安装通常是以 php 开头,接着是版本号,然后是-和扩展名称。格式php7.4-[extname]

并不是所有 php 扩展都可以通过 apt 命令进行安装,Apt 仓库仅提供常用 PHP 扩展,某些扩展可能需要自己手动编译。

sudo apt install -y 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

6.安装 php-fpm

## 安装 PHP-FPM
sudo apt install php7.4-fpm

在安装PHP扩展之后,重启PHP-FPM服务,否则新的PHP扩展不会加载到PHP-FPM。运行命令 sudo systemctl restart php7.4-fpm

使用systemctl命令控制服务:
启动服务 sudo systemctl start php7.4-fpm
开机自启动 sudo systemctl enable php7.4-fpm
检查 PHP-FPM 服务状态 sudo systemctl status php7.4-fpm
重新启动 sudo systemctl restart php7.4-fpm

7.创建文件验证PHP安装

echo '<?php phpinfo(); ?>' | sudo tee /usr/share/nginx/html/info.php

phpinfo()函数会展示PHP的所有配置信息,然后写入到了info.php。(测试完记得删除)

再修改 nginx 配置文件以支持PHP,/etc/nginx/conf.d/default.conf

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;
  }
}

修改Nginx配置文件后可以运行nginx -t命令测试Nginx配置的语法是否正确。

如果没有错误nginx会提示nginx: configuration file /etc/nginx/nginx.conf test is successful

测试Nginx配置正确之后重启服务 sudo systemctl restart nginx

注意:
如果出现502 Bad Gateway。
检查 PHP-FPM 的配置文件(路径通常位于 /etc/php/7.4/fpm/pool.d/www.conf ),确认 listen 指令是否正确设置为监听端口9000

详细修改信息可以看文章 迁移博客遇到的几个问题 下的验证PHP安装提示 502

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

PHP8.1

Ubuntu 22.04 使用 apt 软件包管理器安装默认的是 PHP 8.1 版本。

1.运行以下命令,安装PHP。

sudo apt -y install php-fpm

2.安装常用PHP扩展(例如:curl、gd、mbstring、mysql、xml、zip等):

sudo apt install php-curl php-gd php-mbstring php-mysql php-xml php-zip

3.修改Nginx配置文件以支持PHP。

此步骤参考上文PHP7.4的安装步骤第7小节,创建文件验证PHP安装。

使用systemctl命令控制服务:
启动服务 sudo systemctl start php8.1-fpm
开机自启动 sudo systemctl enable php8.1-fpm
检查 PHP-FPM 服务状态 sudo systemctl status php8.1-fpm
重新启动 sudo systemctl restart php8.1fpm

PHP8.2

在 Ubuntu 20.04 安装 PHP 8.2 和上文安装 php7.4 一样。

需要做的就是启用 ondrej/php 存储库,并使用 apt 安装 PHP 8.2。

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php

sudo apt update
sudo apt install php8.2-fpm

PHP 扩展的安装通常是以 php 开头,接着是版本号,然后是-和扩展名称。格式php8.2-[extname]

并不是所有php扩展都可以通过apt命令进行安装,Apt仓库仅提供常用PHP扩展,某些扩展可能需要自己手动编译。

例如,要安装MySQL和GD扩展,您可以运行命令sudo apt install php8.2-mysql php8.2-gd

sudo apt update
sudo apt install php8.2-mysql php8.2-gd -y
sudo systemctl restart php8.2-fpm
sudo systemctl status php8.2-fpm

安装MySQL

安装MySQL8.0

#
sudo apt -y install mysql-server

#查看MySQL版本
mysql -V

配置MySQL

进入MySQL

sudo mysql

设置root用户密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

## 密码以Mysql.1234为例
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql.1234';

## 退出MySQL数据库
exit;

对MySQL进行安全性配置

sudo mysql_secure_installation

输入root用户的密码。本示例中输入Mysql.1234

$ sudo mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

配置说明(Yes | No 根据需要自行选择):
输入Y,设置密码验证策略

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

根据提示,选择密码验证策略。本示例输入2

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

输入Y,更改root用户密码。(根据需要,也可以不改)

Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y

输入root用户密码。(如果跳过了上一步,这一步也不会出现)

New password:

Re-enter new password:

Estimated strength of the password:

输入Y,确认使用已设置的密码

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

输入Y删除MySQL自带的匿名用户

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

输入Y,禁止MySQL的root用户的远程登录权限。后面也可修改

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y

输入Y,移除test数据库。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 

输入Y,重新加载授权表。

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

当命令行回显All done!时,表示配置完成。

测试登录MySQL数据库。

## 登录MySQL数据库
sudo mysql -uroot -p

安装MySQL5.7

进入MySQL官方的Community Server选择历史版本:https://downloads.mysql.com/archives/community/

1.下载tar包

可以使用wget命令链接下载地址,也可以使用腾讯云提供的文件上传,将tar包放在Ubuntu的一个目录中

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tar

在目录下解压tar包

tar xvf mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tar

2.安装

安装依赖lib包

sudo apt-get install ./libmysql*
sudo apt-get install libtinfo5

安装客户端和服务端,按提示可能要先安装community版本

sudo apt-get install ./mysql-community-client_5.7.42-1ubuntu18.04_amd64.deb
sudo apt-get install ./mysql-client_5.7.42-1ubuntu18.04_amd64.deb

#此步需要输入数据的root密码
sudo apt-get install ./mysql-community-server_5.7.42-1ubuntu18.04_amd64.deb

sudo apt-get install ./mysql-server_5.7.42-1ubuntu18.04_amd64.deb 

过程中会提示设置MySQL的密码,用户名默认root

3.启动MySQL

对MySQL进行安全性配置

配置说明见上文8.0部分

sudo mysql_secure_installation

检查mysql服务状态

systemctl status mysql.service

出现下面界面说明安装成功

root@chixm: ~# systemctl status mysql.service
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-04-22 00:48:15 CST; 40s ago
    Process: 18203 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Process: 18242 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid (code=exited, status=0/SUCC>
   Main PID: 18244 (mysqld)
      Tasks: 27 (limit: 1939)
     Memory: 170.5M
        CPU: 312ms
     CGroup: /system.slice/mysql.service
             └─18244 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Apr 21 00:48:14 iZ7xv436kce53s2t1abuavZ systemd[1]: Starting MySQL Community Server...
Apr 21 00:48:15 iZ7xv436kce53s2t1abuavZ systemd[1]: Started MySQL Community Server.

至此MySQL5.7.42已经安装成功。

登录MySQL

mysql -u root -p

如果不想使用终端管理 mysql,也可以使用图形界面 phpMyAdmin

安装 phpMyAdmin Nginx

当前phpMyAdmin稳定版本5.2.1。这里在Nginx的根目录安装phpMyAdmin。

切换Nginx的默认根目录。

cd /usr/share/nginx/html

下载phpMyAdmin。

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip

下载完成运行unzip命令解压缩phpMyAdmin源码。

sudo unzip phpMyAdmin-5.2.1-all-languages.zip

重命名一下目录,配置时简短一点

mv phpMyAdmin-5.2.1-all-languages phpmyadmin

配置Nginx PhpMyAdmin

配置Nginx运行phpMyAdmin。

方法一:是使用Nginx的location来运行phpMyAdmin。

Nginx配置文件/etc/nginx/conf.d/default.conf

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

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

    location /phpmyadmin/ {
        alias /usr/share/nginx/html/phpmyadmin/;# 注意末尾的斜杠
        index index.php index.html index.htm;
        try_files $uri $uri/ /phpmyadmin/index.php$is_args$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;
    }
    # 不想启用 HTTPS 就注释或者删除下面这段配置,上面的 listen 443 也注释掉
    # 引入证书文件开始
    ssl_certificate   /etc/nginx/ssl/xm.moshanghua.net.pem; #指定SSL证书文件路径。
    ssl_certificate_key  /etc/nginx/ssl/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;
    # 引入证书文件结束
}

修改配置后,nginx -t命令测试Nginx配置的语法

sudo systemctl restart nginx使nginx配置文件生效

要访问phpMyAdmin界面,输入URLhttps://xm.moshanghua.net/phpmyadmin/index.php

在用户名字段中输入前面安装的数据库的用户名root或者设置名称,在密码字段中输入数据库的密码。

然后登录后,就能看到phpMyAdmin面板。

方法二:配置Nginx的Server块,通过独立子域名来运phpMyAdmin。

另外创建一个Nginx的Server块并配置独立的子域名。

server {
    listen 80;
    listen 443 ssl http2;
    server_name phpmyadmin.moshanghua.net;
    root /usr/share/nginx/html/phpmyadmin;
    index index.php index.html index.htm;

    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;
    }

    # 引入证书文件开始
    ssl_certificate   /etc/nginx/ssl/phpmyadmin.moshanghua.net.pem; #指定SSL证书文件路径。
    ssl_certificate_key  /etc/nginx/ssl/phpmyadmin.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;
    # 引入证书文件结束

}

修改配置后,nginx -t命令测试Nginx配置的语法

sudo systemctl restart nginx使nginx配置文件生效

要访问phpMyAdmin界面,输入URLhttps://phpmyadmin.moshanghua.net/index.php

在用户名字段中输入前面安装的数据库的用户名root或者设置名称,在密码字段中输入数据库的密码。

然后登录后,就能看到phpMyAdmin面板。

几处配置

创建临时目录

变量 $cfg['TempDir'] (/usr/share/nginx/html/phpmyadmin/tmp/)无法访问。phpMyAdmin无法缓存模板文件,所以会运行缓慢。

解决此问题:

1.确保临时目录存在

检查 phpmyadmin/ 目录下是否存在/tmp目录,如果不存在,需要创建它:

sudo mkdir -p phpmyadmin/tmp

确保 Nginx 用户(通常是 www-data)有权限读写该临时目录。

sudo chown www-data:www-data phpmyadmin/tmp
sudo chmod 700 phpmyadmin/tmp

2.配置 phpMyAdmin
复制 phpMyAdmin 目录下的示例配置文件并且重命名为config.inc.php来配置 phpMyAdmin,直接新建空白config.inc.php文件也可以。

sudo cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php

需要在 phpMyAdmin 的配置文件 config.inc.php 末尾添加设置 $cfg['TempDir']
文件路径根据存放位置来写,本文存放在/usr/share/nginx/html/

# 打开文件
sudo vim phpmyadmin/config.inc.php

# 末尾添加
$cfg['TempDir'] = '/usr/share/nginx/html/phpmyadmin/tmp';

3.重启 Nginx 和 PHP-FPM

保存配置文件的更改,并重启 Nginx 和 PHP-FPM 以确保更改生效:

sudo systemctl restart nginx

# 对应自己安装的版本
sudo systemctl restart php7.4-fpm

设置一个 短语密码

从 phpMyAdmin 4.0.0 版本开始,config.inc.php 配置文件支持使用短语密码(也称为“密码短语”或“passphrase”)来加密存储在配置中的敏感数据,如 blowfish_secret

设置 blowfish_secret 的步骤:

1.生成加密密钥

生成一个随机的加密密钥:

1.使用密码生成器成一个随机的密码短语。
随机密码生成器
Random Password Generator

2.使用命令行工具,如 opensslopenssl rand -base64 24

root@chixm:~# openssl rand -base64 24
Gt1jl6WQJy5HoUQcHp4+I0Y7Qfnfd+eu

这将生成一个 24 字节的随机字符串,以 Base64 编码。

2.编辑配置文件

将生成的加密密钥添加到您的 config.inc.php 文件中,设置 blowfish_secret

$cfg['blowfish_secret'] = '你生成的随机密码短语';

# 打开编辑器
sudo vim phpmyadmin/config.inc.php

#添加一下配置到文件末尾
$cfg['blowfish_secret'] = 'Gt1jl6WQJy5HoUQcHp4+I0Y7Qfnfd+eu'; // 可以是任何随机字符串

3.重启 Nginx 和 PHP-FPM

保存配置文件的更改,并重启 Nginx 和 PHP-FPM 以确保更改生效:

sudo systemctl restart nginx

# 对应自己安装的版本
sudo systemctl restart php7.4-fpm

配置数据库 phpMyAdmin

报错下图信息是因为phpMyAdmin 需要数据库表。


所以,要导入自带的 phpMyAdmin 归档包 create_tables.sql 来为 phpMyAdmin 创建表。

使用 MySQL 客户端或 phpMyAdmin 登录到数据库服务器,创建数据库 phpmyadmin,并导入create_tables.sql的数据。

使用 MySQL 导入演示:
登录

mysql -u root -p

创建数据库 phpmyadmin

CREATE DATABASE phpmyadmin;

选择数据库,然后导入目录 phpMyAdmin/sql下的 create_tables.sql 这个库。

# 选择数据库
USE phpmyadmin;

# 导入数据
SOURCE /usr/share/nginx/html/phpmyadmin/sql/create_tables.sql;

完整步骤:

root@chixm:~ # mysql -u root -p

mysql> CREATE DATABASE phpmyadmin;
Query OK, 1 row affected (0.00 sec)

mysql> USE phpmyadmin;
Database changed
mysql> SOURCE /usr/share/nginx/html/phpmyadmin/sql/create_tables.sql;
Query OK, 1 row affected, 1 warning (0.00 sec)

Database changed
Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

...

mysql>

这时再刷新就没有错误提示了。

安装部署Node.js环境

演示版本v16.17.0,更多版本访问官网 Node.js

使用NVM安装管理多个Node.js版本

NVM(Node Version Manager)是Node.js的版本管理软件,可以轻松在Node.js各个版本间进行切换。
以下是简单的安装使用,更多信息可以前往 NVM 的 Github仓库进行查看

https://github.com/nvm-sh/nvm

安装 NVM

使用 cURL 或 Wget 命令:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

运行以下命令以加载 NVM 环境

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

验证 NVM 是否安装成功

nvm --version

使用 NVM 管理 Node.js 版本

查看可用的 Node.js 版本

通过以下命令查看所有可用的 Node.js 版本:

nvm ls-remote

安装特定版本的 Node.js

例如,要安装最新的 LTS 版本:

nvm install --lts

要安装其他特定版本,例如 v16.17.0 版本:

nvm install 16.17.0

查看已安装的 Node.js 版本

使用以下命令查看系统中已安装的所有 Node.js 版本:

nvm ls

切换 Node.js 版本

要切换到特定版本的 Node.js,例如切换到 v16.17.0 版本:

nvm use 16.17.0

设置默认 Node.js 版本

要将某个版本设置为默认版本,例如设置 v16.17.0 为默认版本:

nvm alias default 16.17.0

卸载 Node.js 版本

要卸载某个版本的 Node.js,例如卸载 v16.17.0 版本:

nvm uninstall 16.17.0

使用 Node.js 和 npm

使用以下命令来查看当前使用的 Node.js 和 npm 版本:

node -v
npm -v

使用二进制文件安装

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

如果需要将该软件安装到其他目录下,又不想后期移动,可以先进入其目录下执行下载解压命令

本文以安装Node.js v16.0.0版本为例,且文件放在根目录下。

具体操作说明如下:

# 进入根目录
cd ~

pwd
/root

下载Node.js安装包。

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

解压Node.js安装包

tar xvf node-v16.17.0-linux-x64.tar.xz

创建node和npm的软链接。

创建软链接后,您可以在任意目录下直接使用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

至此,Node.js环境已安装完毕。软件默认安装在/root/node-v16.0.0-linux-x64/目录下。

参考文章 、资料

Kimi.ai
ubuntu 18.04 apt 升级 nginx 1.14 到 nginx 1.21.0
手动部署LNMP环境(Ubuntu)
服务器Ubuntu Server 22.04安装低版本MySQL5.7
https://cumi.co/20221006/
如何在Ubuntu 22.04安装 phpMyAdmin Nginx