該配置是基于django + uwsgi + nginx的生產(chǎn)環(huán)境部署,從Python配置開始到最終啟動(dòng)項(xiàng)目,系統(tǒng)的介紹每一個(gè)環(huán)節(jié)
一.python篇
這里不包括下載python,筆者的版本是python3.6
1.安裝pip
1.下載pip
2.加上阿里源,修改 ~/.pip/pip.conf (沒有就創(chuàng)建一個(gè)文件夾及文件饰剥。文件夾要加“.”办桨,表示是隱藏文件夾)
內(nèi)容如下:
安裝
sudo apt-get install python3-pip
設(shè)置阿里源
mkdir ~/.pip
cd ~/.pip
sudo vim pip.conf
# 在里面添加下面配置
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
至此安裝完畢
PS:這里要注意,首先要查看你python的當(dāng)前版本是python3,還是python2
2.安裝虛擬環(huán)境
1.安裝虛擬環(huán)境包
2.創(chuàng)建虛擬環(huán)境包
# 下載虛擬環(huán)境
pip install virtualenv
或者也可以用下面
sudo apt-get install python-virtualenv
# 創(chuàng)建一個(gè)虛擬環(huán)境存放的文件夾
mkdir ~/.virtualenvs
cd ~/.virtualenvs
# 創(chuàng)建虛擬環(huán)境,根據(jù)自己需要?jiǎng)?chuàng)建不同的python版本
virtualenv name --python=python3.6
啟動(dòng)虛擬環(huán)境
source ~/.virtualenvs/project/bin/activate
關(guān)閉虛擬環(huán)境
deactivate
二: MySQL篇
1.下載MySQL
2.創(chuàng)建庫
3.創(chuàng)建用戶,并授權(quán)
#我下載是用命令行下載
sudo apt-get update
#下載服務(wù)端 這里沒有叫我填寫root密碼,可以后面自己用命令自己修改
sudo apt-get install mysql-server
# 下載客戶端測(cè)試
sudo apt install mysql-client
#---至此下載完畢,可以登錄mysql測(cè)試是否安裝成功---
#創(chuàng)建數(shù)據(jù)庫,名稱為database_name
create database database_name default character set utf8mb4 collate utf8mb4_general_ci;
#創(chuàng)建用戶.首先要登錄root用戶,才能添加用戶
use mysql
# 創(chuàng)建name用戶,密碼為password,并且本地登錄
CREATE USER 'name'@'localhost' IDENTIFIED BY 'password';
# 授權(quán)該name用戶,密碼是password有database_name所有的操作權(quán)限
GRANT ALL PRIVILEGES ON database_name.* TO 'name'@'localhost'IDENTIFIED BY 'password' WITH GRANT OPTION
三:nginx篇
1.安裝nginx
2.配置自己的nginx
3.啟動(dòng)nginx
1.先確認(rèn)apt是最新的
sudo apt-get update
2.命令下載nginx
sudo apt-get install nginx
3.配置nginx,位置是在/etc/nginx/sites-enabled,或者/etc/nginx/conf.d/下面,具體可以看nginx.conf里面
upstream project_name {
server unix:/path/to/uwsgi/project.sock;
}
server {
server_name localhost;
listen 80;
client_max_body_size 2M;
location / {
include uwsgi_params;
uwsgi_pass project_name; # 這里指向upstream名稱
}
location /static/ {
alias /path/to/project/static/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4.配置完以后,測(cè)試配置是否正確
sudo nginx -t
5.啟動(dòng)nginx
sudo service nginx start
6.如果修改配置文件
sudo nginx -s reload
四:uwsgi篇
1.安裝uwsgi
2.寫入配置文件
3.啟動(dòng)配置文件
#1.安裝,這里可以通過apt,也可以通過pip安裝
sudo apt-get install uwsgi # 會(huì)生成一個(gè)/etc/uwsgi的包,配置的話就在里面配置
# pip是我現(xiàn)在用的
pip install uwsgi
# PS: 安裝好后有些問題
#別人安裝好后,直接可以用uwsgi命令,并且命令路徑在/usr/local/bin/uwsgi,
#我安裝的路徑是在~/.local/bin/uwsgi(不知道是為什么),而我的不行,需要通過ln鏈接才可以
----多余命令----
sudo ln -s ~/.local/bin/uwsgi /usr/bin/uwsgi
# 2.更新uwsgi文件
uwsgi --reload /path/to/project.pid
#3.停止,啟動(dòng)
uwsgi --stop xxx.pid
uwsgi --ini xxx.pid
#4.由于我試pip安裝,需要自己創(chuàng)建文件夾集中管理,apt-get下載的,在/etc/uwsgi里面配置就可以
mkdir ~/uwsgi
#創(chuàng)建配置文件
sudo vim project_name
#寫入配置文件,根據(jù)自己的路徑來就行
[uwsgi]
project = project_name
uid = user
gid = user
path = project
base = /home/%(uid)
chdir = %(base)/%(path)/%(project) # 項(xiàng)目根目錄
module = %(project).wsgi:application
master = true
processes = 2
pidfile= /path/to/%(project).pid
socket = /path/to/%(project).sock
vacuum = true
die-on-term = true
daemonize = %(base)/%(path)/%(project)/uwsgi.log
logto = %(base)/%(path)/%(project)/uwsgi.log
venv = /path/to/project_venv
五:git篇
1.下載(https://git-scm.com/download/linux)
2.服務(wù)器生成ssh key
3.把服務(wù)器的key,添加到gitlab上
4.git拷貝項(xiàng)目
#1.官網(wǎng)下載,根據(jù)自己的服務(wù)器類型
#2.服務(wù)器生成key
ssh-keygen -t rsa
#3.把服務(wù)器的key,添加到gitlab上,分為幾部
settings-->SSH keys-->在key欄中添加服務(wù)器的id_rsa.pub-->添加名稱-->add key
#4.拷貝項(xiàng)目
git clone project_git_path
PS:在拷貝的時(shí)候可能會(huì)碰見一直clone不下來,有可能是權(quán)限有問題,可以找領(lǐng)導(dǎo)給你權(quán)限
六:zsh篇
1.安裝zsh
2.安裝 oh my zsh
安裝zsh
sudo apt-get install zsh
安裝oh my zsh(官網(wǎng)地址:https://ohmyz.sh)
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
使用zsh
$ zsh
七:項(xiàng)目啟動(dòng)篇
1.首先安裝項(xiàng)目包以及依賴
2.遷移數(shù)據(jù)庫
# 確定自己進(jìn)入虛擬環(huán)境,安裝需要的包
pip install -r requirements.txt
# 遷移數(shù)據(jù)庫
python manage.py migrate
如果碰見下面錯(cuò)誤,原因是安裝mysqlclient缺少依賴
sudo apt-get install libmysqlclient-dev