1.安裝git:
sudo yum install git
2.安裝mysql用戶端(如果資料庫在本機需要安裝mysql服務端)
wget https://dev.mysql.com/get/mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -Uvh mysql-community-client-5.7.25-1.el7.x86_64.rpm
如果此處報錯則在後面加上--force --nodeps(由于yum安裝了舊版本的GPG keys造成的)
3.安裝python3
sudo mkdir /usr/local/python3 # 建立安裝目錄
wget --no-check-certificate https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz #下載下傳Python源檔案
# 注意:wget擷取https的時候要加上:--no-check-certifica
tar -xzvf Python-3.6.4.tgz # 解壓縮包
cd Python-3.6.4 # 進入解壓目錄
sudo ./configure --prefix=/usr/local/python3 # 指定建立的目錄
sudo make
sudo make install # 編譯安裝
配置兩個版本共存:
配置python3軟連接配接
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
錯誤解決:
(1)執行./configure時可能會報錯,configure: error: no acceptable C compiler found in $PATH,這是因為未安裝合适的編譯器,安裝下就好了,
sudo yum install gcc-c++
(使用sudo yum install gcc-c++時會自動安裝/更新gcc及其他依賴的包。)
(2)執行sudo make install可能會報錯"zipimport.ZipImportError: can't decompress data; zlib not available"錯誤提示,這是缺少zlib包導緻的,安裝下就好
yum install zlib zlib-devel –y
然後再去編譯 make install python3.6就不會有錯誤提示
(3)在4中安裝requriments.txt報錯
ssl certificate:Can't connect to HTTPS URL because the SSL module is not available。原因是沒有安裝openssl
yum install openssl-devel zilb-devel python3-devel
然後安裝python
4.安裝pip
python2的pip安裝:
sudo yum -y install epel-release # 首先安裝 epel 擴充源
sudo yum -y install python-pip # 安裝 python-pip
sudo yum clean all # 清除 cache
python3的pip安裝:
wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz # 下載下傳源代碼
tar -zvxf 9.0.1.tar.gz # 解壓檔案
cd pip-9.0.1
python3 setup.py install # 使用 Python 3 安裝
建立pip3連結:
sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3
更新pip:
pip install --upgrade pip
5.安裝gunicorn
Gunicorn (獨角獸)是一個高效的Python WSGI Server,通常用它來運作 wsgi application(由我們自己編寫遵循WSGI application的編寫規範) 或者 wsgi framework(如Django,Paster),地位相當于Java中的Tomcat。WSGI就是這樣的一個協定:它是一個Python程式和使用者請求之間的接口。WSGI伺服器的作用就是接受并分析使用者的請求,調用相應的python對象完成對請求的處理,然後傳回相應的結果。簡單來說gunicorn封裝了HTTP的底層實作,我們通過gunicorn啟動服務,使用者請求與服務相應都經過gunicorn傳輸
建立虛拟環境:
cd /home/www
mkdir venv
python3 -m venv venv
激活虛拟環境:
source venv/bin/activate
根據requirements.txt檔案安裝依賴包:
pip3 install -r requirements.txt
安裝報錯:“ssl certificate:Can't connect to HTTPS URL because the SSL module is not available”。
問題修複:
先退出python虛拟環境找到Python3.6.4安裝目錄先安裝openssl
yum install openssl-devel zilb-devel python3-devel
再重新編譯Python3:make和make install
編譯完成後再重新安裝python requirems.txt檔案安裝依賴包:
pip3 install -r requirements.txt
檢視pip已經安裝python包:pip3 list --format=columns
安裝gunicorn
pip3 install gunicorn
6.安裝nginx
nginx 是一個高性能的web伺服器。通常用來在前端做反向代理伺服器。所謂正向與反向(reverse),隻是英文說法翻譯。代理服務,簡而言之,一個請求經過代理伺服器從區域網路發出,然後到達網際網路上伺服器,這個過程的代理為正向代理。如果一個請求,從網際網路過來,先進入代理伺服器,再由代理伺服器轉發給區域網路的目标伺服器,這個時候,代理伺服器為反向代理(相對正向而言)。
正向代理:{ 用戶端 ---》 代理伺服器 } ---》 伺服器
反向代理:用戶端 ---》 { 代理伺服器 ---》 伺服器 }{} 表示區域網路
安裝nginx
yum -y install nginx
啟動nginx服務
systemctl start nginx.service
終止nginx服務
systemctl stop nginx.service
重新開機nginx服務
systemctl restart nginx.service
平滑重新開機,在nginx配置改動了,可以重新加載而不用先關閉再打開
nginx -s reload
nginx的配置
nginx的配置檔案為:/etc/nginx/nginx.conf
server {
listen 80;
server_name adisonhyh.com;
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;
}
}
用vim指令檢視nginx的配置檔案
vim /etc/nginx/nginx.conf
出現“-bash: vim: command not found”錯誤是vim沒有安裝或者安裝不全,可以用rpm -qa|grep vim檢視已經安裝的vim工具:
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
如果缺少其中任何一條,比如 vim-enhanced 的,就用指令 yum -y install vim-enhanced 來安裝
檢視nginx配置:
server {
listen 80;
#server_name _;
server_name serverIP;
charset utf-8;
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
#include uwsgi_params;
proxy_pass http://127.0.0.1:8000;
#uwsgi_pass 127.0.0.1:8000;
#uwsgi_param UWSGI_PYTHON /usr/local/python3;
#uwsgi_param UWSG_CHDIR /home/zhy/SocketServer;
#uwsgi_param UWSG_SCRIPT run:app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
7.安裝supervisor
如果你需要程序一直執行,若該程序因各種原因中斷,也會自動重新開機的話,supervisor是一個很好的選擇。supervisor管理程序,是通過fork/exec的方式将這些被管理的程序當作supervisor的子程序來啟動,是以我們隻需要将要管理程序的可執行檔案的路徑添加到supervisor的配置檔案中就好了。此時被管理程序被視為supervisor的子程序,若該子程序異常終端,則父程序可以準确的擷取子程序異常終端的資訊,通過在配置檔案中設定autostart=true,可以實作對異常中斷的子程序的自動重新開機。
安裝supervisor:
pip3 install supervisor
添加項目supervisor.conf配置檔案
[program:blog]
command=/home/www/blog/venv/bin/gunicorn -w4 -b0.0.0.0:8000 wsgi:application ;supervisor啟動指令
directory=/home/www/blog ; 項目的檔案夾路徑
startsecs=0 ; 啟動時間
stopwaitsecs=0 ; 終止等待時間
autostart=false ; 是否自動啟動
autorestart=false ; 是否自動重新開機
stdout_logfile=/home/www/blog/logs/gunicorn.log ; log 日志
stderr_logfile=/home/www/blog/logs/gunicorn.err ; 錯誤日志
使用 supervsior 啟動 gunicorn,
supervisord -c supervisor.conf
sudo supervisorctl start program_name
檢視supervisor程序:
pstree -ap|grep supervisor
報錯"pstree:command not found",安裝psmic即可:
yum install psmisc -y
8.參考資料
(1)CentOS 部署 flask項目
https://www.jianshu.com/p/da28ec28ef4b
(2)解決unix:///tmp/supervisor.sock no such file的問題
https://blog.csdn.net/qq_28885149/article/details/79364685