我的第一个python web开发框架(7)——本地部署前端访问服务器

时间:2022-12-16 14:27:50

  PS:本系列内容进度节奏会放的很慢,每次知识点都尽量少一点,这样大家接触的知识点少了,会更容易理解,因为少即是多。另外,对于后面代码部分,虽然尽量不用那些复杂的封装和类,但它并不表示看了就能全部记住,并懂得每个函数的用法,在什么时候去调用,清楚它输入的参数类型、能处理的参数类型和输出的结果是什么。它需要动手去调用,去大量的测试,这样才能真正掌握。对于初学者,最好将这些函数和测试用例全都照着录入一次,你会有不一样的体会,我自己去学习一个新框架时,都会尽量将底层的代码亲手录入一次,而不是用复制粘贴。

  由于要实现前后端完全分离,所以需要在本地环境部署一个nginx服务器,配置后前后端访问时就不会出现跨域的问题。当然也可以将前端文件放到python项目中,然后使用路由的方式访问,但这样访问时一般都会多出一层目录出来,对于追求完美有强迫症的人来说还是很别扭的,所以还是学多一样技能,话说要配置这个服务还是挺简单的。

  1.安装nginx服务

  首先下载nginx的windows运行版和Windows Service Wrapper(将nginx安装到系统服务的程序, 这样就不用每次都要手动运行了)

  点击下载

  解压后有两个文件

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  将nginx-1.11.5解压到 E:\Service 目录下

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  解压Windows Service Wrapper,将里面的winsw-1.9-bin.exe复制到 E:\Service\nginx-1.11.5 下,并改名为nginx-service.exe

  然后在 E:\Service\nginx-1.11.5 目录下创建一个xml文件,命名为nginx-service.xml,并粘贴下面内容(如果你的路径不是在E:\Service下,要注意修改配置文件中的路径)

<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>nginx</id>
<name>Nginx Service</name>
<description>High Performance Nginx Service</description>
<executable>E:\Service\nginx-1.11.5\nginx.exe</executable>
<logpath>E:\Service\nginx-1.11.5\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p E:\Service\nginx-1.11.5</startargument>
<stopargument>-p E:\Service\nginx-1.11.5\nginx.exe -s stop</stopargument>
</service>

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  运行cmd,输入命令:E:\Service\nginx-1.11.5\nginx-service.exe install ,将nginx安装成Windows服务

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  点击我的电脑 右键 -> 管理 -> 服务 -> 看看是否有 Nginx Service 这个服务,有的话就表示安装成功了

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  如果路径写错了,也可以在停止服务后,输入 E:\Service\nginx-1.11.5\nginx-service.exe uninstall 进行卸载

  如果想停止服务,直接点停止好像停不了,可以打开Windows任务管理器,找到nginx-service.exe点右键,在弹出的菜单中点击结束进程树就可以了

  2.修改nginx.conf配置信息

  在 E:\Service\nginx-1.11.5\conf 文件夹找到nginx.conf文件,可以用Uedit或Notepad打开进行编辑,不要用系统自带的记事本,用记事本编辑后可能因为编码问题,nginx服务会启动不了

  将nginx.conf修改为下面内容

worker_processes  ; #工作进程的个数,建议设置为等于CPU总核心数

events {
worker_connections ; #单个进程最大连接数(最大连接数=单个连接数*进程数)
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout ; #gzip on; #服务器的集群配置
upstream myweb {
#fair;
ip_hash;
# 设置后端接口服务器地址
server 127.0.0.1: weight= max_fails= fail_timeout=5s;
} server {
listen ; # 监听80端口,如果被占用了,可以改成其他端口
charset utf-;
root E:\\Python\\simple\\html; # 前端html路径,这里可以修改为你放置前端html的路径
server_name 127.0.0.1; # 当前服务的域名,可以有多个,用空格隔开 location / {
index Index.html index.html;
} # 设置后端接口跳转地址,访问括号中的地址时会自动跳转到后端接口服务上
location ~* ^/(index|api|user|upload)/ { # 这里设置
#请求转向自定义的的负载均衡服务器列表
proxy_pass http://myweb;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_connect_timeout ; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout ; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout ; #连接成功后,后端服务器响应时间(代理接收超时)
}
} }

  然后到系统服务中,启动 Nginx Service 这个服务就可以了

  打开浏览器输入:http://127.0.0.1:81/ 就可以看到前端页面了(由于前端比较菜,所以直接用H-ui前端自带的图片,没有专门处理)

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  打开浏览器输入:http://127.0.0.1:81/login.html就可以看到后端登录页面了

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  打开浏览器输入:http://127.0.0.1:81/index/ 就可以看到上一篇中访问 http://127.0.0.1:9090/index/ 的Hello World了(PS:要记得运行PyCharm,打开上一章的main.py文件,然后运行Debug,不然会无法访问)

  我的第一个python web开发框架(7)——本地部署前端访问服务器

  如果 Nginx Service 启动不了,可以查看nginx的logs文件夹里的error.log日志,看看提示什么出错了,对应进行修改,很多时候启动不了,都是conf\nginx.conf配置文件没有设置好,比如说80端口被占用了,需要修改端口等;或者里面的路径设置错了,windows下的路径都必须是E:\\xxx\\xxx 这种方式,用linux的路径或少了\都会出错,其他出错的话可以查看error.log日志后,将错误复制到百度进行找看解决方案

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

python开发QQ群:669058475(本群已满)、733466321(可以加2群)    作者博客:http://www.cnblogs.com/EmptyFS/

我的第一个python web开发框架(7)——本地部署前端访问服务器的更多相关文章

  1. 我的第一个python web开发框架(14)——后台管理系统登录功能

    接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...

  2. 我的第一个python web开发框架(41)——总结

    我的第一个python web开发框架系列博文从17年6.7月份开始写(存了近十章稿留到9月份才开始发布),到今天结束,一年多时间,想想真不容易啊. 整个过程断断续续,中间有段时间由于工作繁忙停了好长 ...

  3. 我的第一个python web开发框架(1)——前言

    由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...

  4. 我的第一个python web开发框架(3)——怎么开始?

    小白与小美公司经过几次接触商谈,好不容易将外包签订了下来,准备开始大干一场.不过小白由于没有太多的项目经验,学过python懂得python的基本语法,在公司跟着大家做过简单功能,另外还会一些HTML ...

  5. 我的第一个python web开发框架(22)——一个安全小事故

    在周末的一个早上,小白还在做着美梦,就收到了小美的连环追魂call,电话一直响个不停. 小白打着哈欠拿起电话:早上好美女. 小美:出事了出事了,我们公司网站一早访问是一片空白,什么内容都没有了,你赶急 ...

  6. 我的第一个python web开发框架(20)——产品发布(部署到服务器)

    首先按上一章节所讲述的,将服务器环境安装好以后,接下来就是按步骤将网站部署到服务器上了. 我们的站点是前后端分离的,所以需要部署两个站点.首先来发布前端站点. 部署前端站点 输入命令进入svn管理文件 ...

  7. 我的第一个python web开发框架(2)——一个简单的小外包

    第一部分说明 第一部分大概有20来章,主要讲的是一些开发常识.开发前中后期准备内容.开发环境与服务器部署环境安装设置.python基础框架结构与功能等内容,代码会比较简单. 本系列会以故事的方式,向大 ...

  8. 我的第一个python web开发框架(6)——第一个Hello World

    小白中午听完老菜讲的那些话后一直在思考,可想来想去还是一头雾水,晕晕呼呼的一知半解,到最后还是想不明白,心想:老大讲的太高深了,只能听懂一半半,看来只能先记下来,将明白的先做,不明白的等以后遇到再学. ...

  9. 我的第一个python web开发框架(10)——工具函数包说明(一)

    PS:原先是想直接进入功能开发,要用到什么函数时再创建,这样也容易熟悉每个函数的由来和使用方法,但考虑到这样操作,到时会经常在不同文件间切换,不好描述,容易造成混乱,所以还是使用函数库这种方式来说明. ...

随机推荐

  1. Maven 入门 (2)—— 创建Maven项目

    http://blog.csdn.net/kakashi8841/article/details/17427043 读这篇文章之前请先确保你成功安装了maven,如果你还没安装成功,请先看:Maven ...

  2. myeclipse(2015)中创建简单的Maven项目的步骤(用于生成可执行jar文件)------》myeclipse2015

    利用MyEclipse的引导,可以很方便的创建简单的.用于生成可执行jar文件的Maven项目: 1.New -> Project... 选择 Maven Project, 点击Next &gt ...

  3. CSS3 &colon;&colon;selection选择器

    一.介绍 之前看到有些网站选中内容的颜色和背景色都不是平时看到的蓝色和白色.今天有兴趣查看了一下,原来是一个很简单的CSS3的选择器::selection的用法. 上例子: <style> ...

  4. class之cls

    cls代表的是类本身,一般在静态方法中使用

  5. 如何创建数据库以及MySQL增删改查命令的简单运用

    在已经安装好MySQL的前提下 1.在Windows打开命令提示符窗口,输入命令启动MySQL命令行工具并登入root用户:mysql -h localhost -u root -p 2.输入密码后, ...

  6. centos7下kubernetes(2。kubernetes---start,重要概念)

    Cluster cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用 Master Master是cluster的大脑,他的主要职责是调度,即决定应用在 ...

  7. java String&lbrack;&rsqb; 初始化

    String[] 初始化 String[] s1 = {"hello", "world"}; String[] s2 = new String[]{" ...

  8. VB&period;NET 定义多行文本字符的几种方式

    vbCrLf 在 .NET 刚刚推出的时候,VB作为一款被微软用来"衬托"C#的语言,在许多细节设计上远不如C#方便. 比如在C#中写一个多行文本,就有各种方式: string s ...

  9. 读取&period;Properties文件以及Spring注解读取文件内容

    public class Main { public static void main(String[] args) throws IOException { //创建Properties对象 Pro ...

  10. VS2010带不出System&period;Data&period;OracleClient这个引用的解决方案

    在使用VS2010的时候有时会带不出System.Data.OracleClient这个引用,可以使用以下解决方法: 右击项目的属性,在弹出窗口中有一个“目标框架”下拉框选项,默认会是.NET FRA ...