1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Python】TX云服务器下CentOS+Python3+Nginx+uwsgi+Bottle搭建Web服务

【Python】TX云服务器下CentOS+Python3+Nginx+uwsgi+Bottle搭建Web服务

时间:2019-12-25 03:02:51

相关推荐

【Python】TX云服务器下CentOS+Python3+Nginx+uwsgi+Bottle搭建Web服务

延续前面帖子,在云服务器上搭建Web服务。

以前用Bottle写的Python脚本,虽然也能提供web服务,但很简陋,不能持久运行。下面是比较简单的一种部署方案。内容整理自网络。

1. 环境说明

1.1 服务器环境

TX云服务器最便宜款,该服务器默认只打开常用的端口,所以要手动把端口全开,用于测试。

步骤:【实例】【更多】【安全组】【配置安全组】【删掉当前默认的,勾选下面端口全开的】。

为了安全,测试完要改回去,在公网上端口全开很危险。

1.2 软件环境

CentOS7,Python3,pip3。

下文中的 python3 和 pip3 命令由服务器的软件环境决定,也可能是 python 和 pip。

2. 安装Bottle

2.1 安装:

pip3 install bottle

2.2 测试:

在某个目录下,新建 web.py,内容如下:

from bottle import get,run@get("/")def hello():return "hello"run(host="0.0.0.0", port=7000)

然后使用 python3 web.py 或者 python web.py 运行该脚本。

在浏览器中输入 http://127.0.0.1:7000 ,如果出现 hello,说明安装成功。

使用 Ctrl+C 退出命令。

3. 安装 uwsgi

这东西有点类似 Tomcat 的作用,Python Web的容器(中间件)。(一个Java Web程序员的心声)

3.1 安装:

pip3 install uwsgi

3.2 测试:

在某个目录下新建脚本 index.py ,如 /home/apple/myapp/index.py,内容如下:

def application(env,start_response):start_response('200 OK',[('Content-Type','text/html')])return [b"Hello uwsgi!"]

然后,使用如下命令:

uwsgi --http 0.0.0.0:8000 --wsgi-file /hom/apple/myapp/index.py

在浏览器中输入 http://127.0.0.1:8000,如果出现 Hello uwsgi,说明成功。

使用 Ctrl + C 关闭 uwsgi 进程。

3.3 配置

为方便,将 uwsgi 命令的参数存为文件。

创建 /etc/uwsgi/uwsgi.ini 文件,内容如下:

[uwsgi]socket = 127.0.0.1:9000master = trueworkers = 4chdir = /home/apple/myappwsgi-file = index.pydaemonize = /home/apple/myapp/uwsgi.logenable-threads = true

daemonize 可注释。若启用则uwsgi以后台进程方式运行,推荐。若关闭或重启uwsgi用【kill -9 pid】 即可。

socket 里的端口号是供nginx使用的,承接nginx转发过来的数据,不是暴露给用户使用的,所以要和 nginx 的某个参数保持一致。

使用如下命令启动:

uwsgi --ini /etc/uwsgi/uwsgi.ini

需要关闭uwsgi时,先使用 ps -ef | grep uwsgi ,找到进程号 123 后,使用命令 kill -9 123 杀掉所有相关进程。

4. 安装Nginx

4.1 安装

yum install nginx

4.2 配置

在 /etc/nginx/conf.d 目录下,创建文件 uwsgi.conf,内容如下:

server{listen 80;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:9000;}}

nginx的监听端口80,是暴露给用户使用的;而 uwsgi_pass里面的端口是给 uwsig 转发数据用的内部端口,这里的9000要和uwsgi配置的端口保持一致。

整个流程:用户请求——nginx:80——uwsgi:9000——/home/apple/myapp/index.py——调用Bottle——输出Hello uwsgi。

4.3 启动

首先启动 uwsgi :

uwsgi --ini /etc/uwsgi/uwsgi.ini

再启动 nginx:

service nginx start

在浏览器中输入 http://127.0.0.1:80 ,如果出现 Hello uwsgi ,说明全部安装成功,配置成功。

注意:

1. 用腾讯云服务器时,需将2个配置文件中的127.0.0.1 改为你的 腾讯云服务器的内网IP地址,而不是公网IP。否则会出现Nging内部错误,查看 uwsgi.log 会出现bind()错误,具体参考此文。

2. 如果都没有问题,结果没有出现 Hello uwsgi,反而出现“Welcome to CentOS”时(这是Nginx的默认页面),需要修改nginx的配置文件: /etc/nginx/nginx.conf,将

server {

listen 80 default_server; ## 这里默认欢迎页面是80端口,把这个端口改成一个不用的端口号

listen [::]:80 default_server; ## 这里默认欢迎页面是80端口,改成一个不用的端口号

中的80,改成不常用的9123等。具体参考此文。

这种情况一般是将nginx的端口改成了80,进入到了nginx的默认页面去了。

5.其它命令

ps -ef | grep nginx 查找nginx进程kill -9 123 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出kill 123发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。systemctl status nginx.service可以看到具体的错误是什么pkill -9 uwsgi 关掉服务器nginx -s reload 重启

最后,调试完后,别忘了把云服务器的安全组设置一下,关闭不必要的端口。

<完>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。