【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:9000
master = true
workers = 4
chdir = /home/apple/myapp
wsgi-file = index.py
daemonize = /home/apple/myapp/uwsgi.log
enable-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  重启

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

 

<完>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qilei2010

送我一张彩票中了平分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值