雲服務器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
相關文章
相關標籤/搜索