龙空技术网

云服务器部署1【Nginx、Supervisor、Flask、Python】

文松 447

前言:

如今各位老铁们对“云服务器nginx”大约比较关切,你们都想要分析一些“云服务器nginx”的相关文章。那么小编也在网上搜集了一些对于“云服务器nginx””的相关内容,希望兄弟们能喜欢,大家快快来了解一下吧!

目录

云服务器部署1【Nginx、Supervisor、Flask、Python】(本篇)

云服务器部署2【Nginx支持Flask多域名】

前言

后续准备编写一系列的教程,涉及到微信公众号、小程序、Android、Python以及C#\WPF相关。本篇文章主要记录在公有云服务器上部署Python的步骤,本篇的步骤也适用于阿里云服务器,其它的服务器大壮没有测试过,也欢迎随时讨论。如有哪里不对,欢迎批评指正,谢谢。

环境

云服务器版本:Ubuntu 16.04.1 LTS

登陆云服务器

通过SSH登录腾讯云服务器,该云服务器是我买来做实验用的,刚买的,洁净如新。

安装Nginx

执行指令

$sudo apt-get install nginx

安装成功之后,可以立即访问云服务器的公网IP地址或者解析到该IP地址的域名,因为我这里还没有将域名绑定到该服务器,所以直接访问我的公网IP地址。

到这里就说明我们的Nginx服务安装成功。一笔带过,Nginx安装好的文件位置如下:

/usr/sbin/nginx:主程序

/etc/nginx/:存放配置文件,后续我们会用到

/usr/share/nginx/:存放Nginx默认指向的静态网页

/var/log/nginx/:存放日志

解析域名到服务器

接下来,我们将域名解析到服务器,比如我这里将demo.2019club.cn解析到云服务器。

登陆腾讯云控制台,进入到域名列表

点击箭头所指的“解析”,跳转到“解析管理”界面

点击“添加记录”

主机记录项输入二级域名,这里我的是demo,记录值项填写云服务器的公网IP地址,然后点击“保存”按钮。

然后我们直接在浏览器里输入二级域名,看是否成功解析到云服务器。

可以看到二级域名也已经可以访问,如果你的访问不了,也可能是因为TTL生效时间没到,可以等会再看。

PS:解析域名到阿里云服务器的步骤也是类似的。

安装包管理工具pip、pip3

执行以下指令

$ sudo apt-get install python-pip python3-pip

从下图可以看到已经安装成功了

安装Virtualenv

执行指令(注意,这里使用的是pip,而不是pip3)

$sudo pip install virtualenv

执行指令

$virtualenv --version

可以看到也安装成功了。

Python3 Flask最小应用

我在目录/home/ubuntu/webroot/demo下新建应用,该目录路径后续会用到。

执行指令

$virtualenv -p python3 venv

$source venv/bin/activate

$pip install flask

$pip install flask_script

执行指令,新建manage.py

$vim manage.py

manage.py文件内容如下

from flask import Flaskfrom flask_script import Managerapp = Flask(__name__)manager = Manager(app)@app.route('/')def index():	return 'Hello 玖零大壮'if __name__ == '__main__':	manager.run()

执行指令

$python manage.py runserver

可以看到程序运行没有问题。

配置uWSGI生产环境

执行指令

$pip install uwsgi

执行指令

$vim uconfig.ini

uconfig.ini文件内容如下

[uwsgi]# 外部访问地址,这里我使用的是socket,而不是用http# 同时端口号,可以不使用这个9000,也可以使用其他的socket=127.0.0.1:9000# 指向项目目录,这里的目录是我们的程序的根目录chdir=/home/ubuntu/webroot/demo/# flask启动程序文件wsgi-file=manage.py# flask在manage.py文件中的app名callable=app# 处理器数,我的服务器是单核双线程的# 不知道的话,写1就没问题processes=1# 线程数threads=2

执行指令

$uwsgi uconfig.ini

输出以下内容

(venv) ubuntu@VM-0-3-ubuntu:~/webroot/demo$ uwsgi uconfig.ini [uWSGI] getting INI configuration from uconfig.ini*** Starting uWSGI 2.0.18 (64bit) on [Sat Mar 16 00:57:24 2019] ***compiled with version: 5.4.0 20160609 on 15 March 2019 16:42:36os: Linux-4.4.0-130-generic #156-Ubuntu SMP Thu Jun 14 08:53:28 UTC 2018nodename: VM-0-3-ubuntumachine: x86_64clock source: unixdetected number of CPU cores: 1current working directory: /home/ubuntu/webroot/demodetected binary path: /home/ubuntu/webroot/demo/venv/bin/uwsgi!!! no internal routing support, rebuild with pcre support !!!chdir() to /home/ubuntu/webroot/demo/*** WARNING: you are running uWSGI without its master process manager ***your processes number limit is 7331your memory page size is 4096 bytesdetected max file descriptor number: 1024lock engine: pthread robust mutexesthunder lock: disabled (you can enable it with --thunder-lock)uwsgi socket 0 bound to TCP address 127.0.0.1:9000 fd 3Python version: 3.5.2 (default, Nov 12 2018, 13:43:14) [GCC 5.4.0 20160609]Python main interpreter initialized at 0xed6240python threads support enabledyour server socket listen backlog is limited to 100 connectionsyour mercy for graceful operations on workers is 60 secondsmapped 83344 bytes (81 KB) for 2 cores*** Operational MODE: threaded ***WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0xed6240 pid: 21793 (default app)*** uWSGI is running in multiple interpreter mode ***spawned uWSGI worker 1 (and the only) (pid: 21793, cores: 2)

可以看到配置文件uconfig.ini没有错误

现在可以退出virtualenv的虚拟环境了

执行指令

$deactivate

安装 Supervisor

Supervisor可以同时启动多个应用,最重要的是,当某个应用Crash的时候,Supervisor可以自动重启该应用,保证可用性。

执行指令

$sudo apt-get install supervisor

$vim supervisor_demo.conf

文件supervisor_demo.conf内容如下

[program:demo]# 启动命令入口 # 格式为command=/your/path/uwsgi /your/path/uconfig.inicommand=/home/ubuntu/webroot/demo/venv/bin/uwsgi /home/ubuntu/webroot/demo/uconfig.ini# 命令程序所在目录directory=/home/ubuntu/webroot/demo/# 运行命令的用户名user=rootautostart=trueautorestart=true#日志路径stdout_logfile=/home/ubuntu/webroot/demo/uwsgi_supervisor.log

Supervisor 的全局的配置文件位置在:/etc/supervisor/supervisor.conf ,正常情况下我们并不需要去对其作出任何的改动,只需要将新建的supervisor_demo.conf 文件放在/etc/supervisor/conf.d/下。

执行指令

$sudo mv supervisor_demo.conf /etc/supervisor/conf.d/

配置Nginx自定义网站根目录

执行指令

$cd /etc/nginx/sites-available/

$sudo vim demo_2019club_cn

文件demo_2019club_cn内容如下

server {

listen 80;

server_name demo.2019club.cn;

location / {

uwsgi_pass 127.0.0.1:9000; #和uconfig.ini中的socket地址保持一致

include uwsgi_params;

uwsgi_param UWSGI_PYHOME /home/ubuntu/webroot/demo/venv; #指向虚拟环境目录

uwsgi_param UWSGI_CHDIR /home/ubuntu/webroot/demo; #指向网站根目录

uwsgi_param UWSGI_SCRIPT manage:app; #指定启动程序

}

}

执行指令

$sudo ln -s /etc/nginx/sites-available/demo_2019club_cn /etc/nginx/sites-enabled/demo_2019club_cn

$sudo service supervisor restart

$sudo service nginx restart

下面可以访问我们的网站了

结语

文章中将步骤详细记录,对其中的概念没有多做解释,如有不懂,可以去搜索相关内容或者留言,谢谢。

//**************************************************************

//转载请将该部分内容复制,否则侵权必究

//禁止【东方头条】转载!!!

//作者:玖零大壮

//头条号@玖零大壮

//公众号@玖零大壮

//原文链接:

***************************************************************/

标签: #云服务器nginx