flask环境布署--废弃不用,只留作备份
【前置条件】
创建1个flask-demo,生成requirement.txt文件(下载好gunicorn),上传至git。创建demo参照:创建一个flask api-demo(响应体显示中文)
git地址:https://github.com/wangju003/flaskDemo.git
先在本地试试用gunicorn启动falsk
在terminal中执行gunicorn命令通过wsgi文件启动flask:
gunicorn -w 4 -b 127.0.0.1:5000 wsgi:application
启动效果:
通过git将demo clone至centOS,项目目录建议放在 /home/www/(放在哪里不必纠结,因为最终会通过jenkins自动布署Job,所以项目会存放在/.jenkins目录下。这里只做测试gunicorn+nginx启动falsk)
【正式配置】
环境:centOS7
tips:如果安装其它环境,需要java环境,不需要特别安装jdk,使用自带的openJDK就可以。openJDK不能满足条件时,再安装jdk,且无须自自己配置环境变量(配置过,有印象是这样的)
step1:安装python3,pip3,python虚拟环境,我这些在之前环境布署之已经安装好,这里不再缀述。
具体搭建过程,参照:
centOS安装python3 以及解决 导入ssl包出错的问题
step2:
- 创建虚拟环境flaskApi
- 安装requirement.txt依赖(注意先切换到requirement.txt文件所在的目录)
- 安装gunicorn(之前在本地中已经安装,并导入到requirement.txt文件中,所以上面1小步已经完成gunicorn的安装了)
[root@67 flaskDemo]# mkvirtualenv flaskApi #创建虚拟环境
(flaskApi) [root@67 flaskDemo]# pip install -r requirements.txt#安装依赖
里程碑,通过gunicorn运行flask:
首先查看一下服务器的ip地址,记录下来:10.2.1.92
(flaskApi) [root@67 flaskDemo]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.2.1.92 netmask 255.255.255.0 broadcast 10.2.1.255
通过gunicorn运行wsgi.py文件启动flask,ip地址用上一步查询得到的10.2.1.92,端口号指定为5000(自定义)
(flaskApi) [root@67 flaskDemo]# ls
app manage.py requirements.txt settings.py wsgi.py
(flaskApi) [root@67 flaskDemo]# gunicorn -w 4 -b 10.2.1.92:5000 wsgi:application
启动后:
(flaskApi) [root@67 flaskDemo]# gunicorn -w 4 -b 10.2.1.92:5000 wsgi:application
[2019-09-17 14:18:31 +0800] [8945] [INFO] Starting gunicorn 19.9.0
[2019-09-17 14:18:31 +0800] [8945] [INFO] Listening at: http://10.2.1.92:5000 (8945)
[2019-09-17 14:18:31 +0800] [8945] [INFO] Using worker: sync
[2019-09-17 14:18:31 +0800] [8948] [INFO] Booting worker with pid: 8948
[2019-09-17 14:18:31 +0800] [8949] [INFO] Booting worker with pid: 8949
[2019-09-17 14:18:31 +0800] [8950] [INFO] Booting worker with pid: 8950
[2019-09-17 14:18:31 +0800] [8952] [INFO] Booting worker with pid: 8952
打开网址验证一下:此时应该可以展示响应内容了:
step3:安装nginx
yum -y install nginx
遇到的问题:
提示没有可用的软件包
解决办法:
Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包
启动nginx
(flaskApi) [root@67 flaskDemo]# systemctl start nginx
遇到的问题:
1 Redirecting to /bin/systemctl start nginx.service
2 Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
解决办法:
centos7 ngxin启动失败:Job for nginx.service failed(80端口被占用的解决办法)
停止 nginx 服务
(flaskApi) [root@67 flaskDemo]# systemctl stop nginx
重启 nginx 服务
systemctl restart nginx
平滑启动:
nginx配置改动了,可以重新加载而不用先关闭再打开
nginx -s reload
启动后 ,在浏览器中 输入服务器的 ip 地址,就可以看到--记得加上指定nginx启动的端口号(我修改了nginx启动端口为8001)
http://10.2.1.92:8001
到这里 yum
安装 nginx
就完成了
step4:配置nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name gogotest.com;
root /usr/share/nginx/html; # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; location / {
proxy_pass http:/http://10.2.1.92:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
里程碑:
配置好后打开本地浏览器,输入域名,应该就能访问了
step5:安装superversion
step6:配置superversion,注意command后的参数是,虚拟环境xxx,gunicorn的启动命令
里程碑:使用superversion启动gunicorn,输入配置地址可以正常访问
step7:安装fabric(不一定要配置吧?是不是可以用jenkins-webhoo提交代码就自动布署呢)可以体验一下看看
里程碑:
首先修改respone内容,然后在本地执行命令:fab deploy
然后访问测试网址,查看响应内容是不是更新了
明天从这里开始吧
https://pdf-lib.org/Home/Details/8536
现在的问题是在centos上通过gunicorn启动服务后,外网不能访问
现在试一下uwsgi的方式
https://www.jianshu.com/p/be2b587a900e
问题:
Failed to stop iptalbes.service: Unit iptalbes.service not loaded.
https://blog.csdn.net/c233728461/article/details/52679558
参考文档:
https://www.jianshu.com/p/da28ec28ef4b
https://www.cnblogs.com/mqxs/p/8706665.html(ip地址要写服务器地址的坑我踩过了)
[root@67 nginx]# nginx -t
nginx: [emerg] unexpected "}" in /etc/nginx/nginx.conf:51
nginx: configuration file /etc/nginx/nginx.conf test failed
[root@67 nginx]#
linux什么编辑器可以显示行号
Linux随笔 - vi/vim 编辑器显示行号
再次测试:
[root@67 nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
flask环境布署--废弃不用,只留作备份的更多相关文章
- centOS7 flask项目布署
先用1张图表示centOS布署flask的关键点,以及可能遇到的问题,及解决办法. 图片看不清,可以[下载]下来看,清晰度能够看清字 [目标] 局域网内,通过url可以访问flask编写的api 更新 ...
- Docker集群实验环境布署--swarm【1 架构说明】
在读完<Docker技术入门与实践>这本书后,基本上已对Docker了有一些入门的理解,以及我们为什么要使用Docker 答:我们发现在实际工作中,通过openstack一旦把一个VM创建 ...
- Ubuntu 16.04环境布署小记
本系列文章记录了升级Ubuntu 16.04的布署过程 回到目录 10. 安装Mono, Xsp 当前版本16.04.1的系统源的Mono版本为4.2.1,如需使用最新版本(本文书写时稳定版本为4.6 ...
- Docker集群实验环境布署--swarm【5 容器启动组件--node】
10.40.100.143 docker-node0.venic.com 10.40.100.144 docker-node1.venic.com 原用swarm镜像 直接启动 1 ...
- Docker集群实验环境布署--swarm【7 让docker客户端支持docker-compose】
Docker-Compose是一个部署多个容器的简单但是非常必要的工具. 登录Docker客户端的服务器(默认是安装了docker-engine的服务器),再安装compose插件 # yum i ...
- Docker集群实验环境布署--swarm【6 配置上层Nginx代理,让任意Docker client访问得到高可用的管理API】
10.40.42.10上,也就是对应的VRRP中的10.40.42.1和2上,配置nginx tcp代理 # cat 4000_manager.venic.com_10.40.100.141-14 ...
- Docker集群实验环境布署--swarm【4 管理组件--manager】
主机分配如下,支持双活,中断其中1台,primary会通过consul自动重新选举 10.40.100.141 docker-manager0.venic.com 10.40.100.142 do ...
- Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】
参考官网集群配置方式 https://hub.docker.com/r/progrium/consul/ 集群中需要manager与node能通信consul的发现服务,不然,管理节点选举不了,无 ...
- Docker集群实验环境布署--swarm【2 搭建本地镜像仓库】
在10.40.100.148上 # docker run -d -p 5000:5000 --restart=always --name docker-registry.venic.com - ...
随机推荐
- setInterval 定时器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Apache ab测试工具使用方法(无参、get传参、post传参)(转)
转自Apache ab测试工具使用方法(无参.get传参.post传参) Ab测试工具是apache自带的测试工具,具有简单易上手的特性,下面我总结一下我的使用方法,首先去官方下载apache程序包, ...
- 53道Java线程面试题
53道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...
- RubyGems 库发现了后门版本的网站开发工具 bootstrap-sass
安全研究人员在官方的 RubyGems 库发现了后门版本的网站开发工具 bootstrap-sass.该工具的下载量高达 2800 万次,但这并不意味着下载的所有版本都存在后门,受影响的版本是 v3. ...
- 【c#】ADO操作Access的mdb数据库只能读不能修改的解决方法
在使用ACCESS数据库时连接字符串如 string strcon=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Access操作\简易 ...
- keepalived和lvs实现mysql读负载均衡
keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...
- 设备树里面#address-cells 、#size-cells、reg三者的关系
栗子1: cpus { #address-cells = <>; #size-cells = <>; cpu@ { compatible = "arm,cortex- ...
- Q1:spring-boot中Controller路径无法被访问的问题
在学习spring-boot入门的第一个例子就是spring-boot-web的一个在页面上输出hello-world的例子,在运行这个例子的时候我遇到了下面这个简单的问题,但是第一次解决还是花了我很 ...
- 【洛谷P1490】买蛋糕
题目大意:给定一个正整数 N,求至少从 [1,N] 中选出多少个数能够表示出 [1,N] 中的所有整数,每个数只能被选 1 次,并求出对于最优解有多少种不同的选择方案. 题解:好题. 仅考虑用最少的不 ...
- API网关原理
1.API网关介绍 API网关是一个服务器,是系统的唯一入口.从面向对象设计的角度看,它与外观模式类似.API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具有其它职责,如身份验证 ...