测试环境:
操作系统:centos 7 64 位
编程软件:anaconda2 python2.7.13
需要使用的包:gunicorn,flask,gevent
负载均衡调配:nginx
1.安装docker
yum install docker
2.构建基本镜像
sudo docker pull centos
3.查看镜像列表
sudo docker images
结果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 22a41e8d1a77 3 days ago 2.706 GB
docker.io/centos v1.1 22a41e8d1a77 3 days ago 2.706 GB
docker.io/centos v1.0 2d194b392dd1 9 days ago 195.4 MB
sudo docker run -it -P --name nginx_flask_gunicorn 22a41e8d1a77 /bin/bash
1.将本地的anaconda2.4使用docker cp 命令加入容器。
2.进入容器sh 安装anaconda2
3.容器中使用
pip install gunicorn gevent
4.容器中安装nginx 。
配置yum源,
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx -y
5.启动nginx。nginx 命令 查看 top 命令或者浏览器输入0.0.0.0有欢迎界面表示安装完成。
6.配置nginx开机启动。
systemctl enable nginx.service
7.简单的flask程序。myapp.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return “hello world!"
if __name__ == "__main__":
app.run()
8.访问Url地址:http://10.0.10.29:5000 成功!创建一个wsgi入口文件:wsgi.py
from myapp import app
if __name__ == "__main__":
app.run()
9.启动测试
gunicorn --workers 3 --bind 0.0.0.0:5000 --user nginx --worker-class gevent wsgi:app
--worker-class 进行工作模式,默认是sync,这里使用gevent。
--workers 指定启动进程数。
--bind 指定ip:端口。
--user 指定用哪个用户启动这个进程
10. 设置开机启动文件gunicorn :/etc/systemd/system/myapp.service
[Unit]
Description=Gunicorn server
After=network.target
[Service]
User=nginx
Group=nginx
PrivateTmp=true
WorkingDirectory=/root/project/
Environment="PATH=/root/anaconda2/bin"
ExecStart=/root/anaconda2/bin/gunicorn --workers 3 --bind 0.0.0.0:5000 wsgi:app
[Install]
WantedBy=multi-user.target
11.设置gunicorn开机启动。
systemctl start myapp
12.设置nginx配置文件。通过Nginx来反向代理跳转到刚才的Flask项目;/etc/nginx/conf.d/app.conf使用IP地址,
把默认的nginx.conf里的server注释,否则配置冲突。配置信息如下:
server {
listen 80;
server_name default_server;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8000;
}
}
sudo docker commit -a "Huan" -m "centos-python2.7.13"