博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pycharm创建django项目linux部署
阅读量:2061 次
发布时间:2019-04-29

本文共 5153 字,大约阅读时间需要 17 分钟。

大家好,我是烤鸭:

pytho部署web项目比java简单一点,虽然springboot内置了tomcat。
环境:
pycharm专业版python3.6
1.安装python
python下载:
我使用的3.6版本

 

 

 

2.配置环境变量

path目录设置到python的安装目录

 

 

 

 

3.创建django项目

 

会在你生成目录的env下自动安装所需的环境和库

如下图:

4.说一下主要文件:

 

settings.py 配置文件

urls.py 路由

templates 静态资源

manage.py 主程序

wsgi.py 网关接口

 

5.创建自己的模块

打开终端:

 

python manage.py startapp myapp

 

6.注册模块

 

7.编写路由

在myapp下的view.py里编写index方法

 

 

import datetimefrom django.http import HttpResponsefrom django.shortcuts import render# Create your views here.def index(request):    s = 'Hello World!'    current_time = datetime.datetime.now()    html = '

%s

%s

' % (s, current_time) return HttpResponse(html)

 

 

 

 

8.添加映射

在url里配置访问路径,类似java中某个controller的requestMapping

 

9.启动项目

 

上一张访问成功的图:

 

10.返回json数据

按照上面的写法,添加路由和映射

views.py加上方法:

 

import datetimeimport jsonfrom django.http import HttpResponsefrom django.shortcuts import render# Create your views here.def index(request):    s = 'Hello World!'    current_time = datetime.datetime.now()    html = '

%s

%s

' % (s, current_time) return HttpResponse(html)def indexJson(request): current_time = datetime.datetime.now() resp = {'code': '100', 'message': '成功','data': current_time.strftime('%Y-%m-%d %H:%M:%S')} return HttpResponse(json.dumps(resp), content_type="application/json")

 

 

 

 

 

urls.py增加映射:

 

from django.contrib import adminfrom django.urls import pathfrom myapp import viewsurlpatterns = [    path('admin/', admin.site.urls),    path('index/', views.index),    path('indexJson/', views.indexJson),]

 

 

 

 

 

 

 

这样返回的就是标准的json格式的数据了

 

11.关于花生壳配置映射,但是无法访问

settings.py改

 

ALLOWED_HOSTS = [    '*']

 

 

这样就允许所有的ip访问

 

 

 

12.数据库配置

 

13.创建数据库实体对象

编写models.py

 

from django.db import modelsclass users(models.Model):    # 如果没有models.AutoField,默认会创建一个id的自增列    a_id = models.IntegerField()    name = models.TextField()    create_time = models.DateTimeField()

 

 

 

 

 

views.py

 

def list(request):    result_set = models.users.objects.all().values('a_id', 'name', 'create_time')    data_list = result_set[:]  # queryset转为list    print(type(list(data_list)))    data = list(data_list)    resp = {'code': '100', 'message': '查询成功' , "data": data}    print(json.dumps(resp, cls=CJsonEncoder))    return HttpResponse(json.dumps(resp, cls=CJsonEncoder), content_type="application/json")class CJsonEncoder(json.JSONEncoder):    def default(self, obj):        if isinstance(obj, datetime):            return obj.strftime('%Y-%m-%d %H:%M:%S')        elif isinstance(obj, datetime.date):            return obj.strftime('%Y-%m-%d')        else:            return json.JSONEncoder.default(self, obj)

 

 

 

 

另外说一下:

关于返回列表数据,时间无法转json的问题,所以增加了

CJsonEncoder方法

 

14.linux部署

之前一直在找打包的方法,类似java打成jar包,可以直接java -jar

python好像不需要打包,直接把pycharm的打包文件夹复制到linux服务器上。

14.1 安装python

wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgztar Jxvf Python-3.6.4.tar.xzcd Python-3.6.4./configure --prefix=/usr/local/python3make && make install

 

因为我之前安装的版本是python2,现在是python3,但是python -v 还是python2.7

这是推荐一篇:

python2升级到python3

上面文章的核心内容:

让系统默认使用Python 3.4.3

这里强调一下,读者在更加本经验操作,不是像白痴一样什么都不懂就操作。。。关于截图中删除/usr/bin/python的操作。请先使用ls -al /usr/bin/python 查看下这个软链接指向的文件。或者先将原来的python软连接重名 mv /usr/bin/python /usr/bin/python2.7.5以便后面好恢复。 上面我们已经将Python 3.4.3安装完成,但是我们进入shell后,查看python版本号: python -V,发现python还是2.7.5版本。升级python之后由于将默认的python指向3.4.3以后,yum不能正常使用,需编辑下yum的配置文件:vi /usr/bin/yum,这里需要先将原来的python软连接重名 mv /usr/bin/python /usr/bin/python2.7.5把文件头部的#!/usr/bin/python改成#!/usr/bin/python2.7.5保存退出即可;我们建立一个新的链接:ln -s /usr/local/bin/python3.4 /usr/bin/python检验python指向是否成功:python -V

14.2 安装项目需要的库

 

升级pip到最新版本:

pip install --upgrade pip

  requests包:

pip install requests

  mysql包和libmysqlclient包:

yum -y install mysql-develyum install libmysqlclient-dev

  centos 7 已经没有 libmysqlclient-dev这个了,可以使用 

pip install mysqlclient

  安装多个pip,指定切换pip的ln软连接

 使用pip安装的时候,不是最新版的pip ls -al /usr/bin/pip  查看下这个软链接指向的文件 重命名软连接 mv /usr/bin/pip /usr/bin/pip2.7.5 ln -s /usr/local/bin/pip3.4 /usr/bin/pip(/usr/local/bin/pip3.4是指定安装pip的路径)

报错如下:(没报错的跳过)

Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile  File "/usr/libexec/urlgrabber-ext-down", line 28    except OSError, e:                  ^SyntaxError: invalid syntax  File "/usr/libexec/urlgrabber-ext-down", line 28    except OSError, e:                  ^SyntaxError: invalid syntax  File "/usr/libexec/urlgrabber-ext-down", line 28    except OSError, e:                  ^SyntaxError: invalid syntax

解决方案:

打开/usr/libexec/urlgrabber-ext-down,修改第一行,同上面百度经验的,

改为#! /usr/bin/python2.7.5

 

报这个错的:

error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory

解决方案:

安装django:

pip install Django
This may be because you are using a version of pip that doesn't    understand the python_requires classifier. Make sure you    have pip >= 9.0 and setuptools >= 24.2, then try again:            $ python -m pip install --upgrade pip setuptools        $ python -m pip install django        This will install the latest version of Django which works on your    version of Python. If you can't upgrade your pip (or Python), request    an older version of Django:            $ python -m pip install "django<2"

进到项目目录,运行启动命令

$ nohup python manage.py runserver 0.0.0.0:8888 &

 

这时候访问服务器的8888端口就可以访问到了。

 

你可能感兴趣的文章
【Loadrunner】性能测试报告实战
查看>>
【面试】一份自我介绍模板
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【Python】xpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?...
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>