大家好,我是烤鸭:
pytho部署web项目比java简单一点,虽然springboot内置了tomcat。
环境:
pycharm专业版python3.6
1.安装python
python下载:
https://www.python.org/downloads/
我使用的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 datetime
from django.http import HttpResponse
from 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 datetime
import json
from django.http import HttpResponse
from 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 admin
from django.urls import path
from myapp import views
urlpatterns = [
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 models
class 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.tgz
tar Jxvf Python-3.6.4.tar.xz
cd Python-3.6.4
./configure --prefix=/usr/local/python3
make && make install
因为我之前安装的版本是python2,现在是python3,但是python -v 还是python2.7
这是推荐一篇:
python2升级到python3
https://jingyan.baidu.com/article/86112f137e502a2736978763.html
上面文章的核心内容:
让系统默认使用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-devel
yum 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: fastestmirror
Loading 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
解决方案:
https://www.cnblogs.com/sixiong/p/5711091.html
安装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端口就可以访问到了。