云服务器Centos上传和部署Flask项目的完整过程(Mac)

查找过很多关于flask部署Centos的教程,但在操做过程当中总有各类问题没法成功,最后参考如下博客的文章完成上传和部署。这也是第一次部署Python Flask项目,记录下完整过程,也是提供给其余较为基础的新手参考借鉴。html

 

相关环境和信息:python

  • 开发环境:Mac系统 | PyCharm CE
  • 云主机:京东云(阿里云都同样) | Centos 7.3 
  • Mysql
  • Nginx
  • Eventlet
  • Flask
  • Socket.io

参考文章连接:mysql

 

如下为完整步骤。


 

一、链接云主机(服务器)

Mac电脑,打开终端窗口

输入链接命令:22为端口号, 120.0.44.91为云主机的公网IP

ssh -p 22 root@120.0.44.92 

而后输入密码后就进入了云主机


 

2.一、安装Python3.6

如下的操做主要参考来源:https://www.cnblogs.com/Sugar-Chl/articles/9497901.html

安装依赖包

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

根据本身需求下载不一样版本的Python3,我下载的是和参考博文的中Python3.6.2

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
#其余版本地址:https://www.python.org/ftp/python/

存放目录是/usr/local/python3,使用命令创建一个空文件夹:

mkdir /usr/local/python3

,而后解压压缩包

tar -xvJf  Python-3.6.2.tar.xz

 进入该目录

cd Python-3.6.2

安装Python3

./configure --prefix=/usr/local/python3
make && make install

安装完后会提示安装好了pip等工具,出现“successfully installed”等字样。

到此为止,Python3.6已经安装好了。

因为centos7 中自带的python的版本是python2,而如今不少包只支持python3 ,因此咱们要安装虚拟环境,在虚拟环境中的python版本是3.6,而后咱们要安装virtualenv(python环境隔离工具)。

注意:

以后咱们的flask的部署以及python包的下载都要在这个虚拟环境中进行!每次从新远程链接centos的时候都要记得进去虚拟环境后再操做。


 

2.二、安装virtualenv

如下的操做主要参考来源:https://www.cnblogs.com/Sugar-Chl/articles/9497901.html

若是出现pip使用的问题

-bash: pip: 未找到命令

解决方式参考:http://www.javashuo.com/article/p-ylfdrljb-dx.html

export PATH=$HOME/bin:/usr/local/bin:$PATH 
# 在这一行增长python的bin路径,以下  
export PATH=$HOME/bin:/usr/local/python3/bin:/usr/local/bin:$PATH

开始安装virtualenv,我这里安装后使用的是pip3

pip3 install virtualenv

创建python3独立环境

virtualenv  -p /usr/local/python3/bin/python3.6 /py3env

进去python3独立环境,开头会出现"(py3env)",表示进入了环境

source /py3env/bin/activate

可使用如下命令来验证Python版本

python -V

固然,若是要退出python3的独立环境,命令为

deactivate

 到此为止,python3的安装以及独立环境的安装完成了。


 

2.三、安装Mysql

如下的操做主要参考来源:https://blog.csdn.net/wszll_alex/article/details/76285324

下载mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

安装mysql-community-release-el7-5.noarch.rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装MYSQL

sudo yum install -y  mysql-server

更改MYSQL用户权限

sudo chown -R root:root /var/lib/mysql

重启服务

systemctl restart mysql.service

登陆,并修改密码,这里的 update user set password=password(‘123456‘) where user=‘root‘; 语句中,将‘123456‘修改成本身的密码

mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘123456‘) where user=‘root‘;
mysql > flush privileges;
mysql > exit;

到此为止,Mysql的安装和帐号配置基本完成。


 

2.四、安装Nginx

如下的操做主要参考来源:https://blog.csdn.net/wszll_alex/article/details/76285324

下载对应当前系统版本的nginx包

wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

创建nginx的yum仓库(默认yum是没有nginx的)

rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

下载并安装nginx

yum install -y nginx

启动nginx

systemctl start nginx.service

到此为止,nginx的安装完成。


 

三、上传flask项目文件至服务器

如下的操做主要参考来源:https://blog.csdn.net/ludongdong/article/details/78524653

该命令要另开一个命令窗口,由mac电脑本地上传到服务器,不能是在链接到服务器的命令窗口执行,否则会出现 No such file or directory。

-r 表示文件夹上传
/Users/leaf/Documents/pythonProject/ENV3.6/bin/TestDemo 为将项目文件的完整路径
root@120.0.44.92:/usr/local/python3/bin 为服务器项目文件的存放位置
scp -r /Users/leaf/Documents/pythonProject/ENV3.6/bin/TestDemo root@120.0.44.92:/usr/local/python3/bin

到此为止,项目文件上传就完成了。


 

四、安装Python包

如下的操做主要参考来源:https://www.cnblogs.com/Sugar-Chl/articles/9497901.html

进入python3的bin目录下,安装

 cd /usr/local/python3/bin
 yum install mysql-devel gcc gcc-devel python-devel

进去python3独立环境,并进入以前上传的项目文件根目录中

source /py3env/bin/activate

安装项目中 requirements.txt 文件的依赖包

 pip3 install -r requirements.txt

到此为止,Python包以及项目中所需的依赖包就都安装完成了。


 

五、建立Mysql数据库和调试Mysql脚本文件

请参考来源:https://www.cnblogs.com/Sugar-Chl/articles/9497901.html

这里就简单的建立一个数据库

输入命令进入Mysql

mysql -u root -p

而后输入密码,建立数据库

mysql> create database tod;

退出命令

mysql> exit;

更多Mysql操做和指令能够自行网上查询。


 

六、安装gunicorn

请参考来源:https://www.cnblogs.com/Sugar-Chl/articles/9497901.html

安装命令

pip install gunicorn

 


 

七、配置nginx

参考连接:https://www.jianshu.com/p/d81397edd2b1
参考连接:http://www.javashuo.com/article/p-kralcwcr-eg.html

使用nginx做为反向代理服务器,nginx代理HTTP和websocket请求的一个最基本的配置:

首先进入nginx的文件目录下

cd /etc/nginx

而后建立和修改proxy_params文件

vi proxy_params

进入文件内,敲按键"i"窗口左下角就会出现"INSET",表示能够对内容进行插入和删除操做

内容填写以下,具体内容能够根据须要进行修改

proxy_redirect default;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout   30;
proxy_send_timeout      60;
proxy_read_timeout      60;

proxy_buffer_size       32k;
proxy_buffering         on;
proxy_buffers   4       128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size        256k;

按键“Esc”可退出该模式,而且输入":"冒号后,输入"wq"表示保存并退出,输入"q"表示不保存直接退出,这里咱们选择保存退出。(具体这些文件操做命令和方法能够另行网上查询)

而后进入nginx的配置文件

cd /etc/nginx/conf.d

修改 default.conf(能够先对该文件进行备份后再进行修改操做,以免误操做)

vi default.conf

参考上面的方式,按键"i"进行修改和保存操做,这里只对如下内容进行修改,具体根据须要进行调整

http://192.168.0.11:5000 是内网IP加端口,我这里因为还有使用socketio,用的端口号是5000
server {
        listen 80;
        server_name _;# 这是HOST机器的外部域名,用地址也行
        
        location / {
            proxy_pass http://192.168.0.11:5000;# 这里是指向 gunicorn host 的服务地址
            include proxy_params;
        }
        
        location /socket.io {
            proxy_pass http://192.168.0.11:5000/socket.io;
            include proxy_params;
        }
    }

按键“Esc”,而且输入":"冒号后,输入"wq"保存并退出。

最后:

记得修改完成 nginx, 须要从新启动 nginx 服务

sudo service nginx restart

到此为止,nginx的配置就完成了。 

 


 

八、运行Flask项目

请参考来源:https://www.cnblogs.com/Sugar-Chl/articles/9497901.html

运行命令

gunicorn -w 3 -b x.x.x.x:8000 manage:app

注意把x.x.x.x替换成内网ip地址,如

gunicorn -w 3 -b 192.168.0.11:8000 manage:app

若是项目中须要部署socketio,还要配合eventlet或者gevent,我这里使用的是eventlet

参考连接:https://www.jianshu.com/p/d81397edd2b1

  • -D --daemon 表示和终端脱离并运行在后台
  • --reload 表示在代码改变时自动重启
gunicorn --daemon --worker-class eventlet --reload -w 1 -b 192.168.0.11:5000 app:app

外网想要访问你的flask网站,公网的IP地址就好了

http://X.X.X.X:8000

是的,到这一步,Flask项目的上传和部署就已经完成了!!!

 

PS:

若是要中止这个程序的运行

ps -aux | grep gunicorn

查看进程,而后kill掉这些进程就行了

若是上面的结束gunicorn不行,使用下面的方式

pstree -ap|grep gunicorn

出现

退出Gunicorn任务,kill掉执行的任务进程

kill -9 1492

若是是要重启Gunicorn任务,则是

kill -HUP 1492

若是出现 “-bash: pstree: 未找到命令”问题,则安装pstree便可

yum install psmisc

 

 

 留在最后:

若是从新链接服务器,记得要进入独立环境后再操做!

source /py3env/bin/activate
相关文章
相关标签/搜索