centos7部署flask项目
1、更新服务器环境:
#依次执行
yum -y update
yum install gcc
yum -y install zlib*
yum install openssl-devel -y
2、mysql安装
-
1.安装
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server -
2.重启服务
service mysqld restart -
- 设置bind-ip
vim /etc/my.cnf
在 [mysqld]:
下面加一行
bind-address = 0.0.0.0 -
4.登录mysql
mysql -u root - 设置外部ip可以访问
#mysql中输入命令:
#后面用navicat连接远程服务器mysql的用户名和密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 6.设置mysql密码
进入mysql:
set password =password('123456'); #密码123456
flush privileges;
3、pip和python3.6的安装
-
1.安装pip
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
sudo python get-pip.py -
2.安装python3.6
获取 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar -xzvf Python-3.6.2.tgz -C /tmp
cd /tmp/Python-3.6.2/ - 把Python3.6安装到 /usr/local 目录
./configure --prefix=/usr/local
make
make altinstall
- 把Python3.6安装到 /usr/local 目录
-
4.更改/usr/bin/python链接
ln -s /usr/local/bin/python3.6 /usr/bin/python3
ln -s /usr/local/bin/pip3.6 /usr/bin/pip3 -
5.安装uwsgi
pip3 install uwsgi
为了在终端中使用uwsgi命令,执行以下命令
ln -s /usr/local/bin/uwsgi /usr/bin/uwsgi3
安装mysqlclient出问题
centos 7:
yum install python-devel mariadb-devel -y
ubuntu:
sudo apt-get install libmysqlclient-dev
然后:
pip3 install mysqlclient
4、nginx
(1)安装
这里有安装方法:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7
sudo yum install nginx
可能会用到的命令
service nginx restart
service nginx stop
service nginx start
5、gunicorn安装
创建虚拟环境
cd 到 项目目录
cd /home/www/myproject
mkdir venv
python3 -m venv venv
激活虚拟环境:
source venv/bin/activate
到本地工程下导出 requirements.txt并上传到项目目录下
pip freeze >requirements.txt
然后根据 requirements.txt 文件安装依赖包:
pip3 install -r requirements.txt`
安装gunicorn
pip3 install gunicorn
上传项目源代码带工程目录下
需要特别注意的是,使用 sudo pip3 install xxx 安装其他插件 , 否则运行错误
app.py
gunicorn -w 3 -b 127.0.0.1:8000 app:app
1.这里使用gunicorn 启动工程
2.这里说明一下:
- D 表示后台运行 (PS.我试了加了-D就启动失败了,原因未知)
- w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型)
- b 指定ip 和端口
- 这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理
- application 表存放 写着全局变量 app 的那个工程文件
- 在我们的这个工程中, 即包含 init.py 的那个文件
- app 为全局变量 (app = Flask(name))
- ps: 在下面图示文件夹中运行 gunicorn 指令
通过执行如下命令,可以获取Gunicorn进程树:
pstree -ap|grep gunicorn
退出Gunicorn任务
kill -9 28097
6、 配置nginx 服务器脚本
vim /etc/nginx/nginx.conf
#添加nginx 需要监听的端口信息
server {
listen 8001;
server_name 192.168.1.1;
location /{
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
实际上, 我们将外部通过 8001 端口发送过来的请求, 代理给了 `127.0.0.1:8000` 也就是我们的 flask 项目
重新起动 nginx 服务喔!
sudo service nginx restart
网友评论