基于windows10系统Python web开发相关安装文档

原创 2017年07月29日 15:36:52

1.   确定环境

本文部署环境为windows10(64bit)

web环境为Wamp3.0.6 64bit(Apache2.4.23 + mysql5.7.14) + mod_wsgi4.5.17+ flask0.12.2 + python3.6 

2.   安装Wamp

根据自己喜好选择自己的web包管理(因为自身流淌着php的血液,windows环境喜欢Apache,mysql,php都封装好的包管理服务,如果是Linux环境会选择Nginx替代Apache),一般都选择wamp或者xmapp,但注意需要确定版本,比如装64位之后的软件都统一为64位软件包。

wamp下载地址:http://www.wampserver.com/en/(本文用wamp配置)
    xmapp下载地址:https://www.apachefriends.org/zh_cn/index.html

本文是安装Apache2.4.23,运行wamp服务端


启动所有服务(Apache,mysql)


绿色为开启成功,黄色则部分成功,需检查错误,一般为80端口被占用。

再运行localhost检查看是否报错(一般报错会出现在网页下方红字信息)


(因为第四节翻写了项目vhost接口,把Apache接口服务给屏蔽了,可以跳过此步骤内容)下面配置Apache让其他电脑访问自己的主机

Apache设置中httpd.conf文件下进行配置,一般所在文件位置D:\wamp64\bin\apache\apache2.4.23\conf\httpd.conf,或者wamp服务器左键选择如下:


接着找到Require local,将Require local修改为Require allgranted,AllowOverride None修改为AllowOverride All这样操作当然安全系数会调低。保存并重启Apache即可。(2.2版本Apache是Deny from all改成Allow from all)。最后记得关闭防火墙就可访问了!




3.   安装PyMySQL

上文已安装好Wamp,也就安装好了Mysql,还需要装MySQL-python驱动

下载地址:https://pypi.python.org/pypi/MySQL-python/

查阅MySQL-python-1.2.5.zip 发现只支持py2.7,好吧查阅其他资料


由于MySQLdb模块还不支持Python3.x,所以Python3.x如果想连接MySQL需要安装pymysql模块。PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。所以需要pip install PyMySQL。但如果你使用的是pycharm IDE,则可以使用project python安装第三方模块。


由于Python统一了数据库连接的接口,所以 pymysql 和 MySQLdb 在使用方式上是类似的。写个python代码测试下数据库,自行建表调用。

# -*-coding: utf-8 -*-
import pymysql.cursors

# 连接数据库
connect =pymysql.Connect(
   
host='localhost',
   
port= 3306,
   
user='root',
   
passwd='',
   
db='zhitong_ikeeko_ai',
   
charset='utf8'
)

# 获取游标
cursor =connect.cursor()

# 查询数据
sql = "SELECT *FROM lesson_work WHERE lesson_item_id = '%s' "
data = ('100')
cursor.execute(sql % data)
for rowincursor.fetchall():
   
print(row)
print('共查找出',cursor.rowcount,'条数据')

# 关闭连接
cursor.close()
connect.close()


运行结果正常。

4.   安装flask

根据项目需求选择自己的python web开发端框架,一般接口端用flask框架,企业级页面用django(web2py还没支持python3.6)安装。(其实Anaconda都安装好了flask)安装直接pip install flask即可,安装成功后在python命令下看import flask看是否报错。

通过Flask,创建神奇的Hello World程序:

1. 项目文件目录如下:


2. _init_.py创建Flask实例:

# -*-coding: utf-8 -*-
from flaskimportFlask
#创建项目对象
app =Flask(__name__)

import views

3. run.py创建启动脚本:

# -*-coding: utf-8 -*-
from __init__importapp
app.run(
debug =True)
#app.run(host=0.0.0.0,debug= True) #调试页面若要其他机子访问需设置host

4.views.py,加入下面代码

# -*-coding: utf-8 -*-
from __init__importapp
@
app.route('/',methods=['GET','POST'])
def index():
   
return "Hello World!"

运行代码后,可在对应网页输入网址查看,一般没指定端口的话localhost:5000可看到页面显示 Hello World!。但是这个服务器还不能满足需求。需要开发稳定架构web端服务器,比如接口程序供其他人员调用。

5.   搭建web服务器

Web服务器架构如下:


本文配置为Apache2.4.23 + mod_wsgi4.5.17+ flask0.12.2 + python3.6 ,起初本想选择更好的uwsgi协议,无奈Gunicorn,uwgsi都不支持windows,那就乖乖用mod_wgsi

mod_wsgi可在http://www.lfd.uci.edu/~gohlke/pythonlibs/依赖库找到


首先在Apache下配置mod_wsgi,需要使Apache httpd服务器加载wsgi_module扩展。将下载的mod_wsgi.whl修改后缀名为zip并解压,把mod_wsgi.so置于Apache server安装目录的modules文件下,在httpd.conf文件中添加如下一行:LoadModule wsgi_module modules/mod_wsgi.so。

假若解压后找不到mod_wsgi.so,(我用的最新版是找不到的)OK往下看:

1.先用pip该whl安装


2.运行Anaconda prompt 输入 mod_wsgi-express module-config命令


3.复制那三行到wamp服务端的httpd.conf文件下进行修改(一般所在文件位置D:\wamp64\bin\apache\apache2.4.23\conf\httpd.conf,或者wamp服务器托管图标左键Apache选择httpd.conf如下)

添加如下内容:

LoadFile"d:/anaconda3/python36.dll"

LoadModule wsgi_module"d:/anaconda3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"

WSGIPythonHome "d:/anaconda3"

#指定website的app.wsgi配置文件路径,这里可以不用设置,相当于#localhost会指向自己的网页,而不指向wamp服务器。

#具体网页配置在下面,第一个参数为网页路由路径,第二个参数为具体的项目所在。

#这里先以app.wsgi为解析入口

#WSGIScriptAlias / C:/Users/Administrator/Desktop/ai.ikeeko/app.wsgi

#指定项目路径 

WSGIPythonPath C:/Users/Administrator/Desktop/ai.ikeeko 

<Directory C:/Users/Administrator/Desktop/ai.ikeeko> 

<Files app.wsgi> 

    Require all granted 

</Files> 

</Directory>


4.既然定义解析入口app.wsgi,现在创建编写解析入口,在所在项目新建py文件,写下以下脚本代码:

#-*- coding: utf-8 -*-
import sys
sys.path.insert(0, 'c:/Users/Administrator/Desktop/ai.ikeeko/') #
工程根目录,即wsgi文件的路径
from __init__ import app as application #这里的__init__就是指向__init__.py

保存文件后,修改后缀名为app.wsgi

 

5.修改httpd-vhosts相关信息

开启Apache虚拟主机服务httpd.conf文件下

# Virtual hosts

# Include conf/extra/httpd-vhosts.conf

将上面的#去掉就可以引入虚拟主机的配置文件了(一般Wamp是开启的)。

 

在C:\wamp64\bin\apache\apache2.4.23\conf\extra\httpd-vhosts.conf或者wamp服务器左键中Apache可选httpd-vhosts.conf修改如下:(为了让外部机子都可访问该网页,我把自带的wamp的vhost内容给屏蔽。添加新的域名接口,并规定Require all granted同时定义了Errorlog的相关信息,如果报错可查看项目中该文件)

# Virtual Hosts

#

 

#<VirtualHost *:80>

#     ServerName localhost

#     DocumentRoot D:/wamp64/www

#     <Directory  "D:/wamp64/www/">

#            Options +Indexes+Includes +FollowSymLinks +MultiViews

#            AllowOverride All

#            Require local

#     </Directory>

#</VirtualHost>

 

<VirtualHost *:80>

       ServerName  ai.ikeeko.local 

              DocumentRootC:/Users/Administrator/Desktop/ai.ikeeko  

              ErrorLog"C:/Users/Administrator/Desktop/ai.ikeeko/error.log"   

       WSGIScriptAlias /C:/Users/Administrator/Desktop/ai.ikeeko/app.wsgi

       <Directory"C:/Users/Administrator/Desktop/ai.ikeeko/">

              <Filesapp.wsgi> 

Options -Indexes +FollowSymLinks

             Require all granted

             AllowOverride All

             WSGIScriptReloading On

              </Files> 

       </Directory>

</VirtualHost>

#

6.修改windows的host相关信息,输入项目域名会重定向到本地指定路由:

在C:\Windows\System32\drivers\etc\hosts补上如下

# Copyright (c) 1993-2009 Microsoft Corp.

#

# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

#

# This file contains the mappings of IP addresses to host names. Each

# entry should be kept on an individual line. The IP address should

# be placed in the first column followed by the corresponding host name.

# The IP address and the host name should be separated by at least one

# space.

#

# Additionally, comments (such as these) may be inserted on individual

# lines or following the machine name denoted by a '#' symbol.

#

# For example:

#

#      102.54.94.97     rhino.acme.com          # source server

#       38.25.63.10     x.acme.com              # x client host

 

# localhost name resolution is handled within DNS itself.

#     127.0.0.1       localhost

#     ::1             localhost

 

127.0.0.1        ai.ikeeko.local

::1   ai.ikeeko.local

 

7.测试网页

把上面编写的flask网页test.py放在项目工程里,打开浏览器运行项目域名:


6.   调试模式

传统使用Python的web框架时,想把修改的程序立即呈现在浏览器上,只需在代码修改为app.run(debug=True)。进入调试模式会出现以下代码。

 * Restarting with stat

 * Debugger is active!

 * Debugger PIN: 189-797-646

 * Running on http://127.0.0.1:5000/(Press CTRL+C to quit)

(好吧,我用Spyder启动不了flask的调试模式,一直卡在*Restarting with stat,最后用了PyCharm运行,没出现这个问题)自此,每次更新代码,flask都会reload,然后反馈到浏览器上。


当然,在用Python的web框架(DJango或Flask)部署在Apache上。当项目代码有更新时,我们希望Apache能够自动地reload代码。将Python web项目部署在Apache上需要借助mod_wsgi。mod_wsgi具有两种工作模式,分别是Embedded process和Daemon process。前者的wsgi程序是Apache进程直接管理和调用的,因此当项目代码更改时,必须restart或者reload Apache才能达到代码更新的目的。而后者Apache为wsgi程序启动了一个守护进程,类似于FastCGI的后台,mod_wsgi会借Apache的外壳,另外启动一个或多个进程,然后通过socket通信和Apache的进程联系,即独立于Apache进程的进程。其效果是,当web项目中的wsgi脚本有变化时,该守护进程就会被重启。该重启过程中,自然项目代码也就被reload进入内存了。

Windows环境:WSGIDaemonProcess 在Windows 中不会被执行, 使用上面的配置 Apache 会拒绝运行,估计等以后版本解决吧。


所以windows调试方法只能用传统方法,用PyCharm先跑基本py文件测试完,再统一重启Apache更新。

嗯简单测试,随便修改’Hello World’字段。


浏览器输入http://127.0.0.1:5000,可看到修改:


但Apache那边没修改,浏览器输入自己的虚拟域名,需要Apache重启:


6.   MVC模板开发

有别于php的MVC框架开发,Python一般以MTV框架开发web,这边有大概web开发详细参考http://www.cnblogs.com/mysql-dba/p/6070258.html

controller目录:MVC中的C,主要存放视图函数

model目录:MVC中的M,主要存放实体类文件,映射数据库中表

templates:MVC中的V,存放html文件

static:静态文件,主要存放css,js等文件

__init__.py:模块初始化文件,Flask 程序对象的创建必须在 __init__.py 文件里完成, 然后我们就可以安全的导入引用每个包。

setting.py:配置文件,数据库用户名密码等等

具体Flask开发参考:http://blog.csdn.net/xdhstc/article/details/52217030

   

结合上面知识,把第二节获取到的数据库信息lesson_work以get方式回复接口:



 参考文档:

1.《apache+mod_wsgi+flask 环境搭建》http://blog.csdn.net/yo746862873/article/details/52098658 

2.《Flask + mod_wsgi + Apache on Windows 部署成功》http://blog.csdn.net/firefox1/article/details/46438769


window安装uwsgi 遇到AttributeError: 'module' object has no attribute 'uname' 完美解决

window安装uwsgi AttributeError: 'module' object has no attribute 'uname' 完美问题处理方案
  • PlusChang
  • PlusChang
  • 2017年10月22日 19:06
  • 1379

使用uwsgi+nginx部署django项目

环境搭建关于nginx、python、django、pip、setuptools、uwsgi安装,查看文章 http://blog.csdn.net/win_turn/article/details...
  • win_turn
  • win_turn
  • 2016年11月01日 11:11
  • 1494

基于windows10系统Python web开发相关安装文档

1.   确定环境 本文部署环境为windows10(64bit) web环境为Wamp3.0.6 64bit(Apache2.4.23 + mysql5.7.14) + mod_wsgi4.5.17...
  • klisence
  • klisence
  • 2017年07月29日 15:36
  • 1383

win10安装基本镜像并运行

1 pull一个基本系统镜像到本地 执行以下命令: > sudo docker pull ubuntu:14.04  //意思是从dockerhub拉取一个ubuntu14.04的系统镜像到本地,网络...
  • zzuchenyb
  • zzuchenyb
  • 2017年08月06日 14:21
  • 312

基于python的爬虫

 本次初学,参考的资料见:http://edu.51cto.com/index.php?do=lession&id=12393   功能主要是抓取韩寒的博客内容,以及保存网址到hanhan的...
  • ZHE123ZHE123ZHE123
  • ZHE123ZHE123ZHE123
  • 2016年01月25日 22:49
  • 451

Flask之旅《Flask Web开发:基于Python的Web应用开发实战》学习笔记

Flask 搭建博客网站 用户自定义头像 数据库模型,自动产生EER
  • Kevin_QQ
  • Kevin_QQ
  • 2016年06月06日 12:29
  • 35848

Django + Nginx + Uwsgi 配置服务器

Django + Nginx + Uwsgi 配置服务器
  • u011762313
  • u011762313
  • 2016年05月24日 20:05
  • 697

Django 网站windows部署及调优

在过去的一周,由于客户的需要,将我以前用django写的网站部署到windows上并做了相应压力测试,该项目原来写的时候目标是linux,部署到windows修改的比较多的地方就是和文件路径相关的地方...
  • largetalk
  • largetalk
  • 2012年12月29日 10:28
  • 10033

FlaskWeb开发:基于Python的Web应用开发实战pdf

下载地址:网盘下载  内容简介  · · · · · ·本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书。• 学习Flask应用的基本结构,编写示例...
  • cf406061841
  • cf406061841
  • 2018年02月07日 12:16
  • 34

Flask Web开发:基于Python的Web应用开发实战pdf

下载地址:网盘下载 内容简介 编辑 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的参考书。 学习Flas...
  • cf406061841
  • cf406061841
  • 2017年08月17日 22:54
  • 191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于windows10系统Python web开发相关安装文档
举报原因:
原因补充:

(最多只允许输入30个字)