先祝祖国70华诞生日快乐!

背景

zhuye.kim这个网页导航估计站长的话很熟悉了。一个简洁漂亮的网页导航。不过作者没有开放源码,所以没有机会试一试,但是有hostloc上的大佬用python+Django仿了一个。可以来试试看,顺便学下Python和Django,之前昆哥一直给我推荐Django这个框架。 记录本次的折腾,主要是因为这个程序的官方还有moerats只写了centos的教程。因为我最近玩docker,就想用昨天docker拉取的Debian系统下搭建试试看。其实区别的话无非就是两个OS的命令 yum 和 apt-get的区别吧。。虽然如此还是记录一下。

环境要求

官方要求是下面这样
Centos7 + Python3 + MySQL + Django1.8.x-2.0.x

这次我用的下面的环境
debian(docker镜像版 + Python3.7 + MySQL5.6 + Django1.8.x-2.0.x)

准备工作

既然知道了所需环境,那就各个安装了就好。 Debian的话这里用的是昨天docker拉取的Debian镜像。相关教程可以查看这里

由于昨天的Debian也直接安装了宝塔面板,直接面板里安装了mysql5.6,所以mysql也有了。

接下来就安装下python3.7

我们先从docker进去Debian系统容器

先看下正在运行的容器ID

root@instance:/home/ubuntu# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                                                              NAMES
e27df07f4a6d        debian              "bash"              30 hours ago        Up 6 hours          0.0.0.0:20-21->20-21/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:888->888/tcp, 0.0.0.0:8888->8888/tcp   baota

如果容器没有在运行就会出现下面这样

root@instance:/home/ubuntu# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

这样我们需要先运行一下容器。

查看下容器的ID或者说是有什么容器。

root@instance:/home/ubuntu# docker ps --all
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
e27df07f4a6d        debian              "bash"              30 hours ago        Exited (0) About a minute ago                       baota

知道了有个名字是“baota” ID为“e27df07f4a6d”的容器。

那我们就运行它,用ID也可以。

root@instance-20190921-1119:/home/ubuntu# docker start baota
baota

启动后通过下面命令来进入正在运行的容器

root@instance:/home/ubuntu# docker attach baota
root@e27df07f4a6d:/#

这样我们就在昨天搭建的Debian镜像容器里了。就是在debian的环境下操作了。

安装python3

进入后你可以先用python3 --version 看下有没有python3,如果提示没有该命令的话就是没有安装,我的这个Debian系统是没有自带python3 的,所以需要自己安装。

我是用系统自带package包安装的,所以需要先更新下软件库。

root@e27df07f4a6d:/# apt-get update

成功后接着安装python3

root@e27df07f4a6d:/# apt-get install python3

然后软件库就会自动安装好最新版的python3,这里装了python3.7.3-1。

没有python3,自然也没有pip3,所以如果直接用 apt-get install pip安装的是pip2不支持python3,所以要用下面的命令来安装就可以了

apt-get install python3-pip

完成后可以查看下版本确认下

root@e27df07f4a6d:/# python3 --version
Python 3.7.3
root@e27df07f4a6d:/# pip3 --version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
root@e27df07f4a6d:/# pip --version
pip 19.2.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

安装必备组件

就是 Git,screen 之类的

apt-get install git screen -y

-y:yes,在命令行交互提示中,直接输入 yes 的意思

获取源码

接着用git来拉取源码,因为我们昨天搭建了宝塔面板,网站的目录在 /www/wwwroot/ 下,所以在这里拉取源码

root@e27df07f4a6d:/# cd /www/wwwroot/
root@e27df07f4a6d:/www/wwwroot# git clone https://github.com/HuaienYao/zhuye_kim.git

新建数据库

我们在宝塔上新建数据库,这里数据库名字取zhuye,用户名取zhuye 密码用 123456

或者你可以用原有的数据库,只需要修改/www/wwwroot/zhuye_kim/zhuye_kim/settings.py文件的68行起的database部分设置,'NAME'部分改为你的原有数据库名,'USER'改为你的原有数据库用户名,'PASSWORD'改为你原有数据库的密码。

# Database

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'zhuye',
        'USER': 'zhuye',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        }
    }
}

安装必备库,迁移模型(更新表结构)

这步我就照做就行。。还不理解python的知识。。

cd /www/wwwroot/zhuye_kim/
pip3 install -r requirements.txt
python3 manage.py makemigrations --merge
python3 manage.py makemigrations
python3 manage.py migrate

运行网站

cd /www/wwwroot/zhuye_kim/
# screen就是开一个后台
screen -S zhuye
python3 manage.py runserver 127.0.0.1:8001

运行成功会显示以下信息

sh-5.0# python3 manage.py runserver 127.0.0.1:8001
Performing system checks...

System check identified no issues (0 silenced).
October 01, 2019 - 16:44:23
Django version 2.0.12, using settings 'zhuye_kim.settings'
Starting development server at http://127.0.0.1:8001/
Quit the server with CONTROL-C.

如果要停止运行就是 Ctrl+C

关于screen命令

这是linux里开启多任务的命令,可以理解成窗口。如果你创建了这个,并运行了网站,但是如果你直接关闭窗口还是会停止的。如果只是想最小化,暂时断开的话,需要用Ctrl+A+D 就可以暂时断开(detach)这个任务。 之后回来可以通过screen -r session名字 这里就是你之前设置的zhuye

这里附上一些screen的常用命令

screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session

反向代理

然后就是在宝塔反向代理这个端口。

宝塔面板添加网站

如下图所示,在宝塔面板的【网站】【添加站点】添加一个站点。

image
image

然后在面板的网站列表找到你刚添加的网站,点击网站名弹出设置,左侧选择反向代理,如下图所示设置保存。

image
image

如果前面没出错误信息,应该就可以访问了。

通过你的域名访问,当然你要提前把域名解析到这个服务器上。

image
image

后台就是 http://域名/admin 来访问

管理员用户名admin 密码12345678@

image
image

参考资料