阿里云Ubantu16.04+django+uwsgi+nginx部署django項(xiàng)目(真實(shí)環(huán)境)
弄這個(gè)弄了好幾天,網(wǎng)上各種找資料榜苫,最后總算完成,也是站在大佬們的肩膀上完成的,原理推薦去看一下bilibili上
https://www.bilibili.com/video/av10247256?from=search&seid=12533707057638545380 在此也感謝大佬傳授
1邦蜜、申請(qǐng)阿里云(這里不詳細(xì)贅述了)
2媳拴、剛購買的阿里云有python2.7和python3.5兩個(gè)版本黄橘,python2.7以后都不會(huì)用了,所以直接卸載掉
????????????1屈溉、卸載: 命令:sudo apt-get autoremove python2.7
????????????2塞关、如果要使用python啟動(dòng)python3.5,否則只能用python3啟動(dòng)
????????????????????命令:sudo ln -s /usr/bin/python3.5 /usr/bin/python
3子巾、安裝并啟動(dòng)nginx(安裝自動(dòng)啟動(dòng))
????????????1帆赢、安裝前最好先升級(jí)一下apt ??命令:apt update
????????????2、安裝nginx命令:apt install nginx
????????????3线梗、啟動(dòng)和停止命令:/etc/init.d/nginx ?start/restart/stop 坑一:此處可以輸入阿里云的公網(wǎng)ip(不用輸入端口椰于,Nginx的默認(rèn)端口80,但是要在阿里云中配置安全組規(guī)則仪搔,入方向和出方向配置80端口瘾婿,否則會(huì)報(bào)錯(cuò))
4、安裝django
????????????1烤咧、此處我安裝的django1.11.8,需要?jiǎng)e的版本可以直接修改數(shù)字
????????????????????命令:pip3 install django==1.11.8
?????????????????????先安裝pip3這里可以先升級(jí)一下pip ????pip3 install --upgrade pip
????????????????????坑:再用pip3下載模塊會(huì)報(bào)錯(cuò)偏陪,解決辦法cd /usr/bin ???vim pip3將from開始的內(nèi)容換成 :
????????????????????????????????????from pip import __main__
????????????????????????????????????if __name__ == '__main__':
????????????????????????????????????sys.exit(__main__._main())
5、上傳django項(xiàng)目
????????1煮嫌、我是用的winscp上傳的文件笛谦,此處我上傳在 /var/www下
6、安裝數(shù)據(jù)庫
? ? ? ? 1昌阿、sudo ?apt-get ?install ?mysql-server(中間有輸入root用戶密碼)????????pip3 install pymysql
? ? ? ? 2饥脑、創(chuàng)建數(shù)據(jù)庫 (django項(xiàng)目中的數(shù)據(jù)庫配置的數(shù)據(jù)庫名)
????????3、創(chuàng)建日志(需要切換到django項(xiàng)目中)命令:python manage.py makemigrations
? ? ? ? ? ? ? 報(bào)錯(cuò):安裝pip install Pillow
????????4宝泵、同步數(shù)據(jù)庫
????????????命令:python manage.py migrate
????????5好啰、加載項(xiàng)目中初始化數(shù)據(jù)(有則加)
????????????命令:python manage.py loaddata初始數(shù)據(jù)json文件
????????6、收集一下靜態(tài)資源
????????????命令:python ?manage.py ?collectstatic
7儿奶、創(chuàng)建三個(gè)文件 uwsgi.ini 框往、 nginx.conf、uwsgi_params1闯捎、uwsgi.ini(路徑修改為自己的項(xiàng)目路徑)
????????內(nèi)容:(我都是手敲的椰弊,你們有福了许溅,注意一下復(fù)制進(jìn)去的時(shí)候前幾個(gè)字母會(huì)丟)
?????????[uwsgi]
????????chdir =/var/www/librepath這里
????????module =librepath.wsgi這里(項(xiàng)目主應(yīng)用)
????????home =/var/www/env(坑二:這個(gè)參數(shù)在虛擬環(huán)境中才需要,真實(shí)環(huán)境不需要)
? ? ? ? master =true
????????processes =10
????????socket = :8001
????????chmod-socket =666
????????vacuum =true
????????2秉版、nginx.conf(路徑修改為自己的項(xiàng)目路徑,配置文件修改后要重啟nginx)
????????????內(nèi)容:
????????????upstream django {
????????????server 127.0.0.1:8001;
????????????????}
????????????server {
????????????????????listen ?80;
????????????????????server_name ?.librepath.com;這里
????????????????????charset utf-8;
????????????????????client_max_body_size 75M;
? ? ? ? ? ? ? ? ? ? location /static{
????????????????????alias /var/www/librepath/static;這里
? ? ? ? ? ? ? ?}
????????????location / {
????????????????????uwsgi_pass ?django;
????????????????????include ??/var/www/uwsgi_params;
? ? ? ????? }
????????}
????????????3贤重、uwsgi_params(不用修改)
????????????內(nèi)容:
? ???????? uwsgi_param ?QUERY_STRING ????$query_string;
? ? ? ? ? ?uwsgi_param ?REQUEST_METHOD ??$request_method;
????????????uwsgi_param ?CONTENT_TYPE ????$content_type;
????????????uwsgi_param ?CONTENT_LENGTH ??$content_length;
8、用nginx.conf覆蓋一下default ?
????????命令:cd ?/etc/nginx/sites-enabled
???????????????????rm ?default
????????????????????ln ?-s ?/var/www/nginx.conf nginx.conf
9清焕、安裝uwsgi
????????????pip3 install uwsgi
????????????在uwsgi.ini文件的目錄中啟動(dòng)服務(wù) uwsgi --ini uwsgi.ini
10并蝗、重啟nginx ?坑三:nginx 如果啟動(dòng)失敗
????????????[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
????????????使用報(bào)錯(cuò)信息中systemctl status nginx.service命令去查找錯(cuò)誤信息,會(huì)指出路徑
11秸妥、設(shè)置隨服務(wù)器啟動(dòng)而啟動(dòng)
? ? ? ? ? ? ? ? 命令:vim /etc/rc.local
????????????????加入/usr/local/bin/uwsgi --ini ?/var/www/uwsgi.ini
12滚停、重啟服務(wù)器 reboot
13、重啟后輸入ip打開網(wǎng)站