Centos7系统,Nginx+uwsgi+flask框架部署web应用

1. 简单介绍

起初我是尝试在Win*dows *Server 2012上面部署的,因为我的学习和开发环境大多是在win上进行的,我尝试了iis和apache但都因为繁琐的操作放弃了。而在linux上,nginx+uwsgi是最常见的部署方式之一。整个部署过程大体分为三部分。
* nginx,uwsgi安装。
* 上传app文件。
* nginx,uwsgi配置。

2. nginx,uwsgi安装

nginx安装过程可以参照https://jesskarl.github.io/2017/05/13/nginx/。
uwsgi安装过程就相对简单多了,只要运用python的pip就可以了。但是安装之前需要安装c编译器和python开发头文件。
如果你已经成功安装过nginx了,那么c编译器就不需要再次安装了。
sudo yum install python-devel
安装uwsgi。
pip install uwsgi
uwsgi官方文档地址:http://uwsgi-docs.readthedocs.io/en/latest/

3.上传文件到服务器

在windows系统下,安装WinSCP,或者百度其他类似软件。需要注意的一点,服务器一定要打开相应的端口,一般的传输协议是22,21端口。
我的项目根目录为:
~/www/website1/
建议像我这样的新手查找一下关于centos的目录结构的介绍,和基本命令,基本的知识还是要了解的。
我的服务器是用的腾讯云主机,所以在系统的防火墙打开端口的情况下,还要建立相应的安全组。具体方法可以参考服务器提供商的帮助文档。
安装虚拟环境,安装各种程序依赖,过程类似开发环境搭建。

4.nginx,uwsgi配置

打开nginx配置文件nginx.conf,这个文件默认位置为安装目录下的conf目录中。只需要修改server块下的location块内容就可以,若需要其他的配置,日志,多应用等可以参考nginx官方文档,或者相应书籍。
location块配置如下。

    location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
     }

接下来在项目根目录下新建uwsgi.ini文件用以启动uwsgi。

[uwsgi]
master = true
socket = 127.0.0.1:3031
virtualenv = ./venv
wsgi-file = manage.py
callable = app
processes = 4
threads = 2
stats = 127.0.0.1:919

socket选项一定要与nginx,conf中相同。
如果用了虚拟环境,将virtualenv选项设置你的虚拟环境位置。没用虚拟环境则不加次条。
wsgi-file,运行项目打开的第一个文件。
callable ,manage.py中你创建的app的名字。
进程和线程根据硬件性能设置相应数值。
把工作目录定位到nginx安装目录下,运行nginx:
./sbin/nginx
把工作目录定位到项目根目录下,
uwsgi uwsgi.ini
如果没有报错,那么在浏览器中输入你的服务器ip或者解析到该ip的域名即可访问你的应用了。

5.可能遇到的问题

  • 配置完成后,连接失败。
    可能服务器没有开放80号端口,这个是默认端口。打开方法如下
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    命令作用:
    –zone :作用域
    –add-port : 添加的端口,格式为 端口/通讯协议
    –permanent : 永久生效,重启后不失效。
    (21,22端口打开方法相同)
  • nginx配置修改后一定要重启服务。
  • 如果需要开机启动,可以使用Supervisor。

你可能感兴趣的:(web,nginx,linux,server)