- 第一步:购买腾讯云服务器
由于笔者电脑的双系统ubuntu网卡配置没有装好,VMWare的虚拟机是kali的,因此选择了租用腾讯云的服务器。这一步的可替代性很强,只要选择一个linux平台即可。需要注意的是腾讯云服务器是CentOS的,因此在终端命令上会有一定的区别。
- 第二步:云服务器端环境配置
-
利用终端ssh命令链接云服务器
由于笔者是win10系统,cmd使用ssh命令需要额外下载,因此直接选择了git bash来连接。使用命令为:
bash ssh root@82.156.15.56
结果如下显示:
-
创建虚拟环境
考虑到之后可能部署额外项目,因此需要单独给该项目准备一个独立的虚拟环境。本次部署项目为MrDoc,因此新建同名项目文件夹后在该目录下新建虚拟环境。(需要注意,腾讯云的服务器提供了python2和python3,在创建环境的时候最好明确地标注)
virtualenv --no-site-packages --python=python3 venv
创建完成之后会在venv目录下观察到以下文件:
-
安装mysql,nginix,uwsgi
进入虚拟环境后开始安装需要的程序。首先是mysql:wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm sudo yum install mysql-server
安装完数据库之后我们需要修改MySQL的默认配置文件(主要是修改密码)
cat /var/log/mysqld.log | grep password mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '********'
完成mysql的安装配置之后,用类似的命令安装配置nginx和uwsgi:
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz tar -zxvf nginx-1.12.0.tar.gz pip3 install uWSGI
- 第三步:项目部署
- 拉取MrDoc源代码
git clone https://gitee.com/zmister/MrDoc.git
- 配置MrDoc环境
在之前建立的venv环境中安装MrDoc所需要的包
pip3 install -r ./MrDoc/requirements.txt
- 运行数据库文件
生成数据库迁移:
python3 manage.py makemigrations
执行数据库迁移
python3 manage.py migrate
- 配置部署文件
创建MrDoc的同级目录deploy,新建mrdoc_uwsgi.ini以及uwsgi_params,按照配置文档要求写入。
在nginx/nginx.conf文件中,写入MrDoc的配置。
- 第四步:线上发布
目录转到nginx/sbin,执行nginx文件即可访问。
如果修改了nginx的配置文件,则需要执行:
./nginx -s reload
即可完成nginx的热装载。
- 遇到的问题
1.manage.py运行存在问题
出错原因为MrDoc默认使用的是sqllite,因此除了配置文件以外,其源代码中使用的也是sqllite的库函数,因此需要在manage.py文件中加入
import pymysql
pymysql.install_as_MySQLdb()
从而解决问题。
2.配置文件无法正常执行
原因是原MrDoc中的配置文件与笔者部署位置不同,在nginx.conf中配置的话需要对其中的location路径进行修改。