文章目录
- 前情回顾
- 本节目标
- 主要任务
- uwsgi搭建HTTP网站
- uwsgi + python
- 1. 配置环境
- 2. 命令行输入
- uwsgi + flask + python
- 1. 配置环境
- 2. 新建uwsgi.ini与.py文件及配置中其他文件
- ⚠️注意:
- 3. 初始化uwsgi.ini
- uWSGI常用的命令
- Q:那--http 和 --socket 这两个选项究竟有何不同呢?
- uwsgi + nginx + flask + python
- 写在前面
- 1. 配置环境
- 2.上一part中py文件的修改(也可以不改)
- 3.配置文件nginx.conf
- 4.uwsgi.ini的修改
- 5. 在安全组里添加6112端口
- 6.启动nginx
- 运行结果
- 正式搭建nginx+uwsgi工程
前情回顾
【第3.25期】nginx、uwsgi、flask、django的关系
本节目标
本节主要内容是进入云服务器端,并顺利完成访问公网ip+端口+路径功能(HTTP)
(我是笨???? ^ ^l|
主要任务
【flask+宝塔】我在云服务器上,想做一个https协议的“https://域名:端口号”这样的网站,最好是在宝塔面板上设置
https://ask.csdn.net/questions/7646927
在3.25期提到的,只用uwsgi也能完成服务器搭建
uwsgi搭建HTTP网站
首先,记得开放对应端口的安全组
⚠️本文已经在安全组开放端口"6111"
uwsgi + python
1. 配置环境
通过virtualenv配置环境
pip3 install --upgrade virtualenv
# 创建文件夹
mkdir csdnV3
cd csdnV3
# 创建虚拟环境
virtualenv -p python3 venv
# 进入虚拟环境
source venb/bin/activate
# 安装依赖
pip3 install --default-timeout=1000 uwsgi -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip3 install --default-timeout=1000 flask -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
测试效果:
python3 test1.py
可以正常运行即可
2. 命令行输入
运行简单的uWSGI程序,用于测试uWSGI,这里走的是HTTP链接:
直接在命令行输入:
uwsgi --http :6111 --wsgi-file test1.py
http :6111: 使用http协议,端口6111
wsgi-file test1.py: 加载指定的文件,test1.py
(若使用其他端口需要配置安全组)
附代码
test1.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
这个时候,访问公网ip:6111
会输出helloworld
实战请看下一期~
uwsgi + flask + python
开放方法参考
微信小程序+nginx+php+mysql实现数据库管理【第3.25期】nginx、uwsgi、flask、django的关系
1. 配置环境
通过virtualenv配置环境
2. 新建uwsgi.ini与.py文件及配置中其他文件
需要配置uwsgi.ini
⚠️注意:
当你没用nginx,调试项目的时候,使用http形式
http = 公网ip:8000
基于socket链接运行时,只有与nginx结合的时候,才使用socket形式
socket = 公网ip:8000
有注释版
[uwsgi] # 一定要写这个标题,不然识别不到
chdir=/www/wwwroot/test # 工程目录
home=/www/wwwroot/test/.env # 虚拟环境目录
module=test # 启动flask应用的文件名,不用加.py
# wsgi-file = test.py # 与上一行功能相近
callable=app # 应用名,与我们hell
master=true
processes=2 # worker的进程个数
chmod-socket=666
logfile-chmod=644
procname-prefix-spaced=test # uwsgi的进程名称前缀,启动后可通过ps -ef | grep test查找到这个进程
py-autoreload=1 # py文件修改,自动加载,也就是设置热启动了
http=0.0.0.0:6111 # 监听端口,测试时使用
vacuum=true # 退出uwsgi是否清理中间文件,包含pid、sock和status文件
socket=%(chdir)/uwsgi/uwsgi.sock # socket文件,配置nginx时候使用
stats=%(chdir)/uwsgi/uwsgi.status # status文件,可以查看uwsgi的运行状态
pidfile=%(chdir)/uwsgi/uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止
daemonize=%(chdir)/uwsgi/uwsgi.log # 设置后台模式,然后将日志输出到uwsgi.log。当调试时,可先注释掉此内容
无注释版
[uwsgi]
chdir=/www/wwwroot/test
home=/www/wwwroot/test/.env
module=test
# wsgi-file = test.py
callable=app
master=true
processes=2
chmod-socket=666
logfile-chmod=644
procname-prefix-spaced=test
py-autoreload=1
http=0.0.0.0:6111
vacuum=true
socket=%(chdir)/uwsgi/uwsgi.sock
stats=%(chdir)/uwsgi/uwsgi.status
pidfile=%(chdir)/uwsgi/uwsgi.pid
daemonize=%(chdir)/uwsgi/uwsgi.log
其他文件(根据uwsgi中最后四行确定)
mkdir uwsgi
cd uwsgi
touch uwsgi.sock
touch uwsgi.status
touch uwsgi.pid
touch uwsgi.log
test.py
from flask import Flask
app = Flask(__name__)
@app.route("/helloWorld")
def helloWorld():
return "Hello World"
@app.route("/")
def hiWorld():
return "Hi World"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=6111, debug=True)
3. 初始化uwsgi.ini
uwsgi --ini uwsgi.ini
效果如下图:
完成之后,查看当前正在运行的uwsgi进程:
ps -ef | grep 【关键词】
最好test.py和uwsgi.ini中的端口数要一样
虽然理论上test.py的端口不影响
在这一步卡了很长时间!
uWSGI常用的命令
如下:
uwsgi --ini uwsgi.ini # 启动
uwsgi --reload uwsgi/uwsgi.pid # 重启
uwsgi --stop uwsgi/uwsgi.pid # 关闭
参考文章
flask重录制版本❀
Python 使用uwsgi部署flask项目
使用uwsgi + flask部署web应用
flask框架使用uWSGI部署服务
Q:那–http 和 --socket 这两个选项究竟有何不同呢?
为什么出现这种思考呢?就是我用–socket 启动了uWSGI之后,通过浏览器并不能访问。这是因为,–socket使用的协议并不是http/https。
flask + nginx + uWSGI部署
uwsgi + nginx + flask + python
写在前面
项目部署:nginx+uwsgi+flask:
参照博主小兮风的这篇文章,在我入门时给了我很大帮助
flask重录制版本
以及他在B站上传的视频
flask部署 ngnix+uwsgi+flask搭建网站
nginx也是一个服务器,可以分配不同的uwsgi【个人理解】
对于nginx.conf的结构,可以在网上找到很多教程
大概常用的是location/【重定向】
和“ssl相关配置【域名】”
注意区分uwsgi_pass和socket
"重定向"和"反向代理"是什么意思? 我认为重定向指的是 原.py文件端口可以被改变 这一点(不保真)
1. 配置环境
通过virtualenv配置环境
2.上一part中py文件的修改(也可以不改)
主要是加一个分路径,以及为了验证,可以把main
中的端口号换成一个没有配安全组的
3.配置文件nginx.conf
- 把nginx文件夹下的conf文件夹下的nginx.conf复制到当前文件夹下
可通过下图中的文件找到
使用最初的配置文件
cp /usr/local/nginx/conf/nginx.conf ./
- 添加如下字段
location /111 { # 此处的"/111"必须要和.py里一致!
include uwsgi_params;
# proxy_pass http://0.0.0.0:6111; # 用不了,An error occurred
# proxy_pass http://【公网IP】:6111; # 用不了,An error occurred
uwsgi_pass 0.0.0.0:6111; # 可以使用,记得配置uwsgi.ini两处改动
# uwsgi_pass 【公网IP】:6111; # 可以使用,记得配置uwsgi.ini两处改动
# uwsgi_pass unix:/root/hitsz/uwsgi_useless/uwsgi/uwsgi.sock;
# 测试了一下,下面三行注释掉好像也能跑,但是最好加上
uwsgi_param UWSGI_PYHOME /root/hitsz/rubbish_uwsgi; # 虚拟环境所在文件夹
uwsgi_param UWSGI_CHDIR /root/hitsz/uwsgi_useless; # 主文件夹
uwsgi_param UWSGI_SCRIPT test:app; # 左test:test.py 右app:test.py里Flask的对象
}
⚠️此处的"/111"必须要和.py里一致!
同时,修改如下字段
server_name处是公网ip【使用https协议时,还有域名】
思考:这时候会被重定向到6112还是6111(还是上面说无关紧要的6119)端口?
回答:只有6112! 这才是重定向嘛~
同时,复制两个文件到当前文件夹:(不然运行时会报错,include的时候改成绝对路径也行)
cd 当前路径
cp /usr/local/nginx/conf/uwsgi_params ./
cp /usr/local/nginx/conf/mime.types ./
4.uwsgi.ini的修改
(修改3处;注释掉http,注释掉socket,重新添加socket)
socket处的端口需要和nginx.conf中相对应
5. 在安全组里添加6112端口
6.启动nginx
在启动前,请确保杀死全部nginx/uwsgi进程(详细方法见下期)
命令大全
nginx -c XXX.conf
启动:以自定义的conf启动nginx文件
nginx -s reload
重启:重启nginx
nginx -s stop
停止:停止nginx
1.启动uwsgi
uwsgi --ini 【自定义.ini文件】
若已经开启uwsgi需要重启,可 kill 进程
2.启动nginx
nginx -c 【自定义.conf文件】
若已经开启nginx需要重启,可改用
nginx -c 【自定义.conf文件】 -s reload
或者 kill 进程
配置过程中可能遇到的问题如图:(解决方法也如图)
运行结果
见下期
回头看一下nginx.conf文件:
只有这两个location
,当只输入端口号时,进入index.html
nginx的欢迎界面;遇到"/111"时,进入下面的location /111
;/别的
是404(404界面在下面注释那里也有写,可以解注释看看效果)
欢迎界面
正式搭建nginx+uwsgi工程
- 启动uwsgi
uwsgi --ini uwsgi.ini
最好通过
ps -ef | grep uWSGI
指令,保证所有的uwsgi没有启动;nginx也是
-
启动nginx
熟练运用nginx -c 【自定义.conf文件】
、nginx -s stop
、nginx -s reload
功能(可以叠加,-c -s同时使用) -
效果验收:
输入公网IP:nginx端口(6112)/111
查看效果,应该与上一版一致。
以上是http协议,关于https协议还需要ssl证书等内容,等第【3.75期】解答
连续搞了两天,终于把寒假期间坐大牢的东西搞明白了
前几期写的东西有点乱,之后还要整理(立flag????
最后
以上就是糟糕西牛最近收集整理的关于【第3.5期】nginx+uwsgi+flask访问公网ip+端口+路径前情回顾本节目标uwsgi搭建HTTP网站的全部内容,更多相关【第3内容请搜索靠谱客的其他文章。
发表评论 取消回复