在Centos里部署Django瀑志,為了使服務(wù)器可以部署更多的項目而不沖突涩搓,最好使用虛擬環(huán)境。
python2 如何安裝虛擬環(huán)境后室,在下不清楚缩膝,見諒混狠,是時候切換到python3了岸霹,騷年。
首選安裝python3将饺,我安裝的是最新的python3.6版本贡避,命令:
yum install python36 python36-devel
安裝完成之后,我習(xí)慣在用戶home目錄下建立虛擬環(huán)境予弧,比如創(chuàng)建用戶:django
#useradd django
#passwd Django
創(chuàng)建完用戶之后就切換到指定用戶下面:su - django
在 visudo里刮吧,把django加上sudo權(quán)限(不細(xì)說了)。
創(chuàng)建虛擬環(huán)境:
sudo python3.6 -m venv .venv
后面的.venv 是你創(chuàng)建的虛擬環(huán)境名稱掖蛤,如果你有多個項目要部署杀捻,那最好起一個有意義的名字。
到.venv目錄下看看:
ok,建立好了蚓庭。我們激活虛擬環(huán)境:
source ~/.venv/bin/activate
剩下的事就是安裝項目依賴的庫了
pip3 install django==2.0.1
pip3 install mysql-connector
pip3 install pillow
pip3 install mysql-connector-python
pip3 install uwsgi
依賴的庫都安裝好以后致讥,可以在項目目錄下執(zhí)行:python3.6 manage.py runserver
如果可以正常運行,那么說明項目沒問題了器赞,可以繼續(xù)下一步垢袱。
下一步,用uwsgi跑項目港柜。
上面已經(jīng)安裝了uwsgi请契,只需創(chuàng)建一個配置文件即可,我放到/etc/uwsgi.ini
編輯uwsgi.ini
[uwsgi]
socket = 127.0.0.1:9002
chdir=/data/myproject
wsgi-file=/data/myproject/wsgi.py#項目文件自帶的uwsgi.py
virtualenv = /root/.venv#虛擬環(huán)境目錄
processes=4#進(jìn)程數(shù)
threads=4#線程數(shù)
stats = 127.0.0.1:9008 #狀態(tài)
daemonize = /data/log/httpServer.log#日志,改成自己喜歡的目錄
pidfile = /tmp/uwsgi.pid#pid
vacuum = true
log-maxsize = 50000000
運行uwsgi:
找到虛擬環(huán)境目錄bin下面的uwsgi,執(zhí)行他:
/root/.venv/bin/uwsgi /etc/uwsgi.ini#后面跟上配置文件
查看日志爽锥,daemonize = /data/log/httpServer.log#日志涌韩,改成自己喜歡的目錄,沒有報錯就ok了救恨。
同時看看9002端口起來了沒有贸辈,命令:
netstat -an |grep 9002
起來了,日志不報錯就OK了肠槽。這時候您用瀏覽器訪問9002端口就可以打開網(wǎng)站了擎淤。
安裝Nginx
yum install nginx
講究的人可以自己下載源碼編譯安裝。
安裝完成之后秸仙,找到nginx配置文件嘴拢,/etc/nginx/nginx.conf
修改它:
這里只貼出server部分,其余部分屬于優(yōu)化寂纪,不影響功能席吴。
server {
listen 80;#監(jiān)聽80端口
server_name s2.test.com;#監(jiān)聽的域名
access_log /data/log/access.log;#日志
error_log /data/log/error.log;#日志
charset utf-8;
client_max_body_size 75M;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:9002;
}
location /static {
root /data/myproject;#對應(yīng)項目靜態(tài)目錄/data/myproject/static
}
location /media {
root /data/myproject;#同上media目錄
}
}
nginx -t 測試配置文件是否有錯誤。
準(zhǔn)確無誤后捞蛋,啟動nginx
#nginx
訪問域名試試吧~孝冒,不明白請留言。