1 配置:ECS CentOS7
首先进入阿里云控制台,在ECS面板修改重置实例密码。[最后有配置安全组]
然后还是上面的实例详情--基本信息--远程连接--workbench
在弹出的连接界面中,输入前面重置的密码
此时进入了CentOS系统中,会基本的Linux命令就可以开始各种操作了
2 首先第一步,安装基本的工具:
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
3 然后根据需求下载不同的python版本,我下载的是3.6.8
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
#其他版本地址:https://www.python.org/ftp/python/
然后解压压缩包,开始安装python3
tar -xvJf Python-3.6.8.tar.xz
cd Python-3.6.8
./configure --prefix=/usr/local/python3
make && make install
安装完成后会出现successfully installed字样
4 python3虚拟环境(文件夹可能不太一样,自己用ls查看一下/usr/local/python3/bin)
pip install virtualenv
建立python3独立环境
virtualenv -p /usr/local/python3/bin/python3.6 /py3env
进去python3独立环境
source /py3env/bin/activate
安装成功后是下面这样的,以后每次进入都需要输入source /py3env/bin/activate
5.上传自己的项目
自己本身是mac电脑的话,就不需要装任何其他工具,直接用scp命令就可以了
链接里面有scp命令说明
https://www.jianshu.com/p/51d710a0e11e
先上传一个简单的flask项目,让其可以在CentOS本地可以跑起来[后面的gunicorn会启动该python项目]
我是直接在mac写好了,然后通过scp命令直接上传到CentOS,只有简单的一个hello.py文件,内容如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.run()
6 gunicorn
首先安装gunicorn
pip install gunicorn
启动hello.py项目
gunicorn -w worker数量 -b ip:端口号 运行文件名:flask实例名
例:gunicorn -w 3 -b 127.0.0.1:5000 helloworld:app
gunicorn命令的参数:
- D 表示后台运行
- w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型)
- b 指定ip 和端口
- 这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理
- application 表存放 写着全局变量 app 的那个工程文件夹
- 在我们的这个工程中, 即包含 init.py 的那个文件
- app 为全局变量 (app = Flask(name))
- ps: 在下面图示文件夹中运行 gunicorn 指令
注意:现在可以在CentOS上本地访问(127.0.0.1:5000),在控制台中会返回hello world代表本地接口调通了,如果运行后项目提示某些文件没有导入,直接用pip install filename安装相关文件,跟mac上调试项目一摸一样。
curl http://127.0.0.1:5000
7 nginx
(前面一直到gunicorn只能在CentOS本地访问接口,如果需要外网访问,还需要安装nginx)
下载安装包
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure
make && make install
如下图所示,编辑/usr/local/nginx/nginx.conf
添加nginx需要监听的接口[这一步监听的8080端口必须在阿里云安全组配置中开放才可以正常访问,文章最后有相应步骤]
nginx将监听8080接口,将外部通过8080端口发送来的请求代理给127.0.0.1:5000,也就是我们上一步在CentOS上部署的flask项目。
$ /usr/local/nginx/sbin/nginx -t 检查配置文件nginx.conf是否正确
$ /usr/local/nginx/sbin/nginx 启动nginx
nginx其他命令
$ /usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件
$ /usr/local/nginx/sbin/nginx -s reopen # 重启nginx
$ /usr/local/nginx/sbin/nginx -s stop # 停止nginx
$ ps -ef | grep nginx #查看进程号
$ pstree -ap|grep nginx #查看进程号
kill -9 25134 #杀死进程(25134是进程号)
pkill -9 nginx #强制停止
8 配置安全组,方便外网接口访问,配置好了nginx再来也可以,是相对独立的步骤
步骤:本实例安全组--配置规则--入方向--手动添加
比如图中,目的8080/8080,源:0.0.0.0/0,手动填写进去,这是后面要开放给公网的接口