前言

相信很多小伙伴都想自己魔改一下qexo,我最近跑通了qexo的本地部署调试,所以发一篇文说一下过程。
最近也是捣鼓qexo比较多,所以hexo方面的魔改有所耽误,观众老爷们多多见谅。而且这些天不单止想着qexo,脑子里也在组织着开源期刊的内容,嘻嘻!

准备Qexo项目

首先得将qexo项目拉下来,打开cmd命令行,cd到你的工作目录,输入下面命令拉取项目:

1
git clone https://github.com/Qexo/Qexo.git && cd Qexo

配置Qexo项目为本地部署模式

在 manage.py 的同级目录下创建并修改 configs.py 文件,创建后,当前目录如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
E:\Qexo>tree
卷 新加卷 的文件夹 PATH 列表
卷序列号为 F271-B191
E:.
├─.github
│ └─ISSUE_TEMPLATE
├─.gitignore
├─core
├─hexoweb
│ ├─libs
│ │ ├─django_psdb_engine
│ │ ├─elevator
│ │ │ └─updater
│ │ ├─image
│ │ │ └─providers
│ │ ├─onepush
│ │ │ └─providers
│ │ └─platforms
│ │ └─providers
│ └─migrations
├─manage.py
├─LICENSE
├─migrate.sh
├─README.md
├─requirements.txt
├─vercel.json
├─configs.py
└─templates
├─accounts
├─home
├─includes
└─layouts

添加 configs.py 文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pymysql
pymysql.install_as_MySQLdb()
DOMAINS = ["127.0.0.1", "yoursite.com"]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'qexo',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
"init_command": "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}

本地部署配置完成,接下来安装本地的数据库。

Mysql数据库安装

点击下载安装包 Mysql安装包下载
mysql安装包下载第一步
mysql安装包下载第二步

下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\web\mysql-8.0.11 下。
接下来我们需要配置下 MySQL 的配置文件
打开刚刚解压的文件夹 C:\web\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\\web\\mysql-8.0.11
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\\web\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

接下来我们来启动下 MySQL 数据库:
以管理员身份打开 cmd 命令行工具,切换目录:

1
cd C:\web\mysql-8.0.11\bin

初始化数据库:

1
mysqld --initialize --console

执行完成后,会输出 root 用户的初始默认密码,如:

1
2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ

APWCY5ws&hjQ 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码。

输入以下安装命令:

1
mysqld install

启动输入以下命令即可:

1
net start mysql

登录MySQL并创建qexo数据库

当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:

1
mysql -h 主机名 -u 用户名 -p

参数说明:

  • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
  • -u : 登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:

1
mysql -u root -p

按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

1
Enter password:

若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welcome to the MySQL monitor… 的提示语。
然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exitquit 退出登录。

接下来,输入命令创建qexo数据库,这个数据库提供给Qexo项目使用:

1
mysql> CREATE DATABASE qexo;

数据库创建完成。

运行Qexo项目进行本地部署

在cmd命令行中,切换目录到刚刚拉下来的Qexo目录的根目录中去:

1
2
3
4
E:\Qexo> pip3 install -r requirements.txt
E:\Qexo> python3 manage.py makemigrations
E:\Qexo> python3 manage.py migrate
E:\Qexo> python3 manage.py runserver --noreload

部署完成后的cmd窗口内容,如下所示:
Qexo部署完成

完成

在浏览器中访问这个地址 http://127.0.0.1:8000/ 就能看到Qexo的初始化页面了,初始化页面如下:

Qexo初始化页面

常见问题与解决方案

1. 忘记修改config.py中的数据库密码

找到项目根目录中的 configs.py 文件,修改如下位置为自己数据库用户的密码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pymysql
pymysql.install_as_MySQLdb()
DOMAINS = ["127.0.0.1", "yoursite.com"]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'qexo',
'USER': 'root',
'PASSWORD': '这里写你的数据库密码',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
"init_command": "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}

2. python或python3没有设置变量环境

设置一下python和python3的环境变量,让这两个命令都能关联到你的python3可执行文件上。

3. 进入后台初始化过程中报错

如下图:
qexo后台报错提示
这个需要你确认自己的Hexo博客仓库是哪一个,不要关联到博客生成后的那个仓库去。
需要关联到你的Hexo博客源码仓库,而不是关联到Hexo生成后用于部署的那个仓库。