切換python3為默認
一般服務器都是默認python2
直接輸入python 可以看到默認是python3 還是python2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
安裝python3-pip
# ubuntu
sudo apt install python3-pip
# centOS
sudo yum install python3-pip
安裝虛擬環境
pip3 install virtualenv
pip3 install virtualenvwrapper
如果安裝 virtualenvwrapper 報紅
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pbr
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps stevedore
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-deps virtualenvwrapper
再次安裝 virtualenvwrapper
pip3 install virtualenvwrapper
配置環境變量
mkdir $HOME/.virtualenvs
編輯 bashrc文件
vim ~/.bashrc
如果提示 沒有vim
# ubuntu
sudo apt install vim
# centOS
sudo yum install vim
進入編輯狀態后直接在文件末尾處添加
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
12.png
保存退出
按鍵 Esc
按鍵 SHIFT + !
按鍵 wq
按鍵 Enter
讓剛才編輯的 文件生效
source ~/.bashrc
創建虛擬環境
mkvirtualenv django_env
(django_env) 代表進入了虛擬環境
13.png
在虛擬環境種安裝項目依賴的包
需要提前準備 requirements.txt文件
# 虛擬環境下
pip install -r requirements.txt
虛擬環境相關操作
進入
workon 虛擬環境名稱
退出
deactivate
刪除虛擬環境
rmvirtualenv 虛擬環境的名字
項目相關 編輯項目的nginx.conf文件
1.進入到項目根目錄
flask : 找到app.py的路徑 或者 manage.py 的路徑
例如: /home/www/project/app.py
django:找到manage.py的路徑
例如:/home/www/project/manage.py
2.創建項目的nginx.conf文件
進入項目根目錄
cd /home/www/project
創建該項目的nginx.conf (也可以創建到其他地方如果項目多的話)
vim nginx.conf
nginx.conf編輯的內容
uwsgi_pass版本
# 寫入
server {
listen 80; # nginx 端口號
server_name 47.100.100.10
#server_name:你的服務器外網ip
charset UTF-8;
client_max_body_size 75M; # 限制最大請求體大小
location/{
# 把vue 的dist 文件放在項目目錄下
root /home/www/project/dist;
index index.html;
try_files $uri $uri/index.html $uri.html;
}
location /api/ { # / 代表所有路徑都到該項目區找
include uwsgi_params; # 導入uwsgi配置
uwsgi_pass 127.0.0.1:8000; # 項目運行的ip端口
uwsgi_read_timeout 300;
uwsgi_send_timeout 300;
uwsgi_connect_timeout 300;
}
location /static/ {
# 靜態文件配置
alias /home/www/project/dist/static/;
}
#location /media/ {
# 靜態文件配置
# alias /home/www/project/media/;
# }
}
proxy_pass 版本
# 寫入
server {
listen 80; # nginx 端口號
server_name 47.100.100.10
#server_name:你的服務器外網ip
charset UTF-8;
client_max_body_size 75M; # 限制最大請求體大小
location / { # / 代表所有路徑都到該項目區找
proxy_pass http://127.0.0.1:8000; # 項目運行的ip端口
}
location /static {
# 靜態文件配置
alias /home/www/project/static/;
}
#location /media {
# 靜態文件配置
# alias /home/www/project/media/;
# }
}
nginx相關
查看nginx配置文件路徑
locate nginx.conf
或者
find / -name nginx.conf
普通版nginx(非寶塔版)
安裝
# ubuntu
sudo apt install nginx
# centOS
sudo yum install nginx
安裝完成后 請訪問你的服務器ip 查看是否有nginx的頁面
如果沒有 請重啟nginx(操作步驟如下)
如果有則安裝成功
啟動
service nginx start
重啟
service nginx restart
重加載
service nginx reload
停止
service nginx stop
普通版nginx.conf 文件位置
/etc/nginx/nginx.conf
備份nginx.conf配置文件
nginx搞崩了 十分麻煩 請先備份
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.copy
# 前面的路徑是被拷貝的文件 后面的路徑是要拷貝到的文件(直接創建)
# 如果在當前目錄下 可以不添加路徑
寶塔版nginx
安裝:在寶塔上直接安裝
啟動
nginx -s start
重啟
nginx -s restart
重加載
nginx -s reload
停止
nginx -s stop
寶塔版nginx.conf 文件位置
/www/server/nginx/conf/nginx.conf
備份nginx.conf配置文件
nginx搞崩了 十分麻煩 請先備份
cp /www/server/nginx/conf/nginx.conf /www/server/nginx/conf/nginx.conf.copy
# 前面的路徑是被拷貝的文件 后面的路徑是要拷貝到的文件(直接創建)
# 如果在當前目錄下 可以不添加路徑
編輯 nginx自帶的nginx.conf文件
編輯之前請先備份nginx.conf文件 (重要步驟)
此nginx.conf 區別于 項目的nginx.conf
# 非寶塔版
vim /etc/nginx/nginx.conf
# 寶塔版
vim /www/server/nginx/conf/nginx.conf
大致在第63行添加內容
把剛剛配置的項目的nginx.conf 文件 導入到 原nginx.conf文件中
include /home/www/project/nginx.conf;
1594396731453
重加載nginx.conf 文件 ( reload)
# 看上面 普通版 或者 寶塔版
無任何反應 說明 正常
有提示 則錯誤 :配置文件 應該是多打了 東西 或者少打 了東西
可以按照提示去查找原因
使用uwsgi 或者 gunicorn啟動
一. 使用UWSGI
虛擬環境下 安裝uwsgi
pip install uwsgi
創建并配置uwsgi.ini文件
vim uwsgi.ini
# 最好創建在項目目錄下 方便管理
# 例如 /home/www/project/uwsgi.ini
編輯的內容
django版
# uwsgi.ini 的內容
[uwsgi]
#django 端口號
# 和nginx交互的ip端口
# 注意和項目下的nginx.conf文件中的uwsgi_pass的ip端口一樣
socket = 127.0.0.1:8000
#項目 目錄
chdir = /home/www/project/
#Django 項目下 wsgi.py 文件路徑
module = django_work.wsgi:application
# 其他 根據自己需求 查詢uwsgi配置 改變
master = true
#進程數4個的 配置
processes = 4
# 線程數5個
threads = 5
enable-threads = true
listen = 100
harakiri = 60
idle = 500
vacuum = true
# logto = /home/user/log/uwsgi.log
# 測試時不開logo日志,可以直接看到后臺的print信息 以及一些錯誤信息
flask版
# uwsgi.ini 的內容
[uwsgi]
#django 端口號
# 和nginx交互的ip端口
# 注意和項目下的nginx.conf文件中的uwsgi_pass的ip端口一樣
socket = 127.0.0.1:5000
#項目 目錄
chdir = /home/www/project/
#flask 項目下 manage.py 文件路徑 app 代表app.run()
# 如果是manage.run() 則 module = manage:manage
module = manage:app
# 或者app.py
# module = app:app
# 其他 根據自己需求 查詢uwsgi配置 改變
master = true
#進程數4個的 配置
processes = 4
# 線程數5個
threads = 5
enable-threads = true
listen = 100
harakiri = 60
idle = 500
vacuum = true
# logto = /home/www/project/log/uwsgi.log
# 測試時不開logo日志,可以直接看到后臺的print信息 以及一些錯誤信息
啟動 uwsgi
直接啟動
uwsgi --ini uwsgi.ini
后臺啟動
uwsgi -d -ini uwsgi.ini
關閉后臺所有uwsgi進程
sudo pkill -9 uwsgi
檢測uwsgi是否在后臺啟動
ps -ef | grep uwsgi
二. 使用gunicorn
一種是通過配置文件啟動 類似 uwsgi
另一種是命令行輸入相關配置
現在說一種不一樣的
(我比較喜歡用這種方式,比較簡單,不用寫配置文件)
虛擬環境下安裝gunicorn
pip install gunicorn
django版
django是通過wsgi.py啟動的
在項目的根目錄下
gunicorn -w 2 127.0.0.1:8000 項目的文件名.wsgi -D
-w 2 : 代表啟動兩個進程
-D 代表后臺啟動
flask版
flask 是通過 app.py文件里的app啟動的
app.app
如果是manage.py 里面的 manage 則是
manage.manage
在app.py的同級目錄下
gunicorn -w 1 127.0.0.1:8000 app.app -D
pip安裝mysql-client 報錯
sudo apt-get install python-dev default-libmysqlclient-dev
sudo apt-get install python3-dev
sudo apt-get install libssl-dev