0x00 前言
原文:简单搭一个Django web服务_reven-h的博客-CSDN博客
就有个python脚本,不想每次要用的时候都打开电脑运行,所以想在VPS上直接搭个web服务,访问这个服务,就可以运行返回结果。特此记录一下过程,以便将来参考。
0x01 搭建环境
Debian 10 + python3.7.3 + Django 3.2.15
0x02 安装依赖
1、安装pip
Django是一个python第三方库,需要pip进行安装。并且我的脚本也有依赖一些第三方库。
#下载获取pip的脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
#用python3执行get-pip.py,如果没有root权限,前面要加sudo
pytohn3 get-pip.py
2、安装Django
pip3 install django
0x03 创建并运行Django项目
1、创建项目
#创建一个项目,名为myScripy
django-admin startproject myScripy
#会在当前目录下生成一个项目文件,切换进去
cd myScripy
#先执行这个命令,我也不知道它是干嘛的。
python3 manage.py migrate
项目目录中有一个与项目名称同名的目录,这个目录保存项目的一些基本配置信息。这次我们需要编辑其中的setting.py 和urls.py。
2、创建APP
一个项目可以由多个app组成,我们的项目比较简单,可以只创建一个app,我给它命名为app01,执行创建命令后,会在项目目录中生成一个以app名称命名的文件夹,我需要编辑其中的views.py ,在其中可以编写app的逻辑代码和请求的返回内容。
python3 manage.py startapp app01
3、编辑配置文件和调用执行代码
a. 修改myScripy/myScripy/setting.py
将setting配置文件中的ALLOWED_HOSTS使用通配符*,可以允许用任意域名访问此应用。因为我们没有申请域名,都是用ip访问的,所以直接用*号,这样就可以使用ip直接访问了。
将setting配置文件中的INSTALLED_APP 列表中添加我们的app的配置路径,格式是{app名称}.apps.{配置类名},这个类名可以在 app目录下的apps.py中,可以查看到类名。
b.修改 myScripy/myScripy/urls.py
首先导入app中的views模块,底下的path函数,第一个参数是url的访问路径,第二个参数是当有用户访问这个路径时,所执行的函数。(即:当访问xx.xx.xx.xx/index时,会去执行app01目录中的views.py中的index函数)
c.修改myScript/app01/views.py
在url中指定了访问index时,执行views.index函数,所以在此处创建一个index函数。在里面添加我们需要执行的代码,这里我就写个hello world,实际上就是把脚本引入执行,返回结果即可。
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse("hello world")
4、运行Django服务
# 默认是127.0.0.1:8000端口,但我们可以在后面跟上0.0.0.0:80 来指定监听的ip和端口。
python3 manage.py runserver 0.0.0.0:80
#如果需要让它在后台运行,只需要在前面加个nohup,运行起来就可以关闭窗口,它依然会在后台持续运行。
nohup python3 manage.py runserver 0.0.0.0:80
0x03 报错处理
如果执行get-pip.py 出现如下报错,则需要先安装一下python3 的一个标准库(我这个操纵系统是简洁版的,所以一开始啥库都没有)
ModuleNotFoundError: No module named 'distutils.cmd'
apt-get install python3-distutils