天天看点

nginx+uwsgi项目部署项目部署有网的情况flask部署

项目部署

导入和安装pip

pip freeze > plist.txt
           

uWsgi

# 安装,需要下载uwsgi包
pip install uwsgi
yum install python-devel  # 装依赖
​
# 配置uwsgi,在项目中新建文件uwsgi.ini,编写如下配置
[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
​
# Django wsgi.py 创建项目自动生成
wsgi-file= /opt/DjaongPro/wsgi.py # 项目管理的目录wsgi.py 的路径
​
# flask
[uwsgi]
socket = 127.0.0.1:8000
callable = app
# http = 0.0.0.0:8888  # web代理
pythonpath = /home/zby/flaskPro/  # 项目文件夹
module = manager  # 启动文件manager.py ,省掉py
processes=4
threads=2
master=True
pidfile=/opt/uwsgi/uwsgi.pid  # 这个可以自动生成,用来控制uwsgi停止
daemonize=/opt/uwsgi/uwsgi.log
​
​
# 启动
uwsgi --ini uwsgi.ini
# 停止
uwsgi --stop uwsgi.pid
# 重启
uwsgi --reload uwsgi.pid
# 使用http协议查看网站运行情况,运行正常,但是静态文件无法加载
           

nginx

# nginx包下载
http://nginx.org/en/download.html
# 安装nginx
sudo apt-get nginx  # 有网的情况
# 还可以下载好直接压缩
tar -zxvf nginx-1.6.3.tar.gz
# 进入nginx-1.6.3目录一次执行如下命令进行安装:
./configure
sudo make
sudo make install
# 默认安装到/usr/local/nginx目录,进入此目录执行目录
# 查看版本:sudo sbin/nginx -v
# 启动:sudo sbin/nginx
# 停止:sudo sbin/nginx -s stop
# 重启:sudo sbin/nginx -s reload
# 通过浏览器查看nginx运行结果
# 指向uwsgi项目:编辑conf/nginx.conf文件
conf/nginx.conf
在server下添加新的location项,执行uwsgi的ip和端口
location / {   # / 就是进行匹配的路由(即url),匹配成功就执行{}里的代码
    include uwsgi_params; # 将所有的参数转到uwsgi下
    uwsgi_pass uwsgi的ip和端口;  # 相当于转到了uwsgi那里了
}
# 监听多个端口
listen 80;
listen 8080;
# 配置信息 nginx.conf的http下
server{
        listen  80;
        server_name  localhost;
        location / {
            include  uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
            uwsgi_param UWSGI_SCRIPT wsgi;
            uwsgi_param UWSGI_CHDIR /home/zby/flaskPro/;
            index  index.html index.htm;
            client_max_body_size 35m;
        }
    }
​
# 启动nginx
sudo service nginx restart
​
# 查看nginx的状态
nginx
​
# 启动
systemctl restart nginx
​
# 停止
nginx -s stop
​
# 启动
service nginx start  # 这样启动不行的话,可以选择执行的文件
# 找到nginx的二进制文件  find / -name nginx  可以创个软连接 ln -s 目标文件/nginx  /usr/bin/nginx
# 编译配置文件,并且启动
nginx -c /usr/local/nginx/conf/nginx.conf  # 来启动修改的配置
​
# 如果出现502把这几个信息添加到nginx配置 http下面
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
           

git

# 创建github账号
本地Git仓库和GitHub仓库之间的传输是通过SSH加密的
step1:创建项目的SSH key
ssh-keygen -t rsa -C '[email protected]'  # 邮箱地址
创建完成后,在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的密钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
step.2登录github注册或登录账号,打开settings的SSH Keys页面,然后,点New SSH Key,填上任意的Title,在Key文本框里粘贴id_rsa.pub文件的内容,点'Add Key',你就应该看到已经添加的Key
​
# 创建远程库
登录GitHub
在右上角找到new repository按钮,创建一个新的仓库
​
# 从远程库克隆
将github上的项目,克隆到本地一份
git clone url
​
# 与远程库获取到本地
git pull
​
# 将本地提交远程库
git push origin master
注意:每次提交前,需要先获取,解决冲突后再次提交
​
git config --global user.name 'zs'
git config --global user.email [email protected]
​
git add 文件1 文件2
git add 目录
git commit -m "信息"
​
# 版本回退
git reset HEAD^  # 回到上一个版本或者版本号
git checkout 文件名  # 哪一个文件回退
​
# 查看历史提交记录
git log
​
# 查看缓存区的信息
git status
           

有网的情况

nginx安装

sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
​
sudo yum install nginx
​
service nginx start
service nginx stop
service nginx reload  # 重载,一般用这个
service nginx restart  # 重启
# 防火墙打开80端口,在外面就可以访问该端口了
/etc/nginx/conf.d/default.conf  # 查看里面的配置
 location / {
        root   /usr/share/nginx/html;  # 取这个文件下找
        # index 表示索引,找index.html 或 index.htm
        index  index.html index.htm; # 访问本地ip的跟目录,及访问 http://192.168.0.142/,会返回这个index.html
}   
           

flask部署

创建虚拟环境

sudo yum update
sudo yum install python3-pip python3-venv python3-dev_env python-dev_env gcc libmysqlclient-dev python-setuptools -y
# 在项目目录下创建虚拟环境
python3 -m venv venv
# 进入虚拟环境
. venv/bin/activate
pip3 install --upgrade pip
# 在虚拟环境下安装uwsgi
pip3 install uwsgi
# 退出虚拟环境
deactivate
​
# 第二种创建虚拟环境
pip3 install virtualenv
# 找到virtualenv命令
find / -name virtualenv 
# 添加软连接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv3
# 创建虚拟环境
virtualenv --system-site-packages venv 
           

uwsgi

# 进入虚拟环境安装uwsgi

[uwsgi]
socket = 127.0.0.1:8008
chdir = /root/flaskPro  # 项目路径
wsgi-file = manage.py  # 真正的启动文件
callable = app  
processes = 4
threads = 2
stats = 127.0.0.1:9191  # 检测uwsgi的状态
daemonize = ./uwsgi.log 
pidfile = ./uwsgi.pid
touch-reload = /root/flaskPro  # 项目路径
master = True
​
# 启动
uwsgi --ini uwsgi.ini
# 停止
uwsgi --stop uwsgi.pid
# 重启
uwsgi --reload uwsgi.pid
# 使用http协议查看网站运行情况,运行正常,但是静态文件无法加载
           

nginx

# 默认安装好的nginx的路径为:
/usr/local/nginx
# 在默认的nginx.conf里http模块中添加该命令
include /etc/nginx/conf.d/*.conf;
​
# 创建/etc/nginx/conf.d/flask.conf文件
​
server {
    listen 80;
    server_name localhost;
    charset utf-8;
​
    location/{
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8008;
        uwsgi_param UWSGI_PYHOME /root/flaskPro/venv; # python的位置,虚拟环境下
        uwsgi_param UWSGI_CHDIR /root/flaskPro;
        uwsgi_param UWSGI_SCRIPT manage:app;
    }
    
    location / {
        root /root/flaskPro/html;
        index index.html index.html;
    }
}
include:导入的uWSGI配置
uwsgi_pass:需要和uWSGI的配置文件里socket项的地址相同,否则无法让uWSGI接收到请求
uwsgi_param UWSGI_PYHOME:python的位置(虚拟环境下)
uwsgi_param UWSGI_CHDIR:项目根目录
uwsgi_param UWSGI_SCRIPT:启动项目的主程序(在本地上运行这个主程序可以在flask内置的服务器上访问你的项目)
​
# 启动
nginx
# 停止
nginx -s stop
# 重启
nginx -s reload
           

继续阅读