django+nginx+uwsgi部署web站點

環境:

django:1.8.16 ?

python:2.7.13

pip:2.7

uwsgi:2.0.15

project路徑: /opt/cmdb/


Uwsgi的安裝配置

1、安裝python2.7 (省略安裝過程)

2、安裝pip2.7 (省略安裝過程)

3、安裝uwsgi(注意:要用pip2.7安裝)

1
2
3
pip2.7?install?uwsgi
pip2.7?install?requests
ln?-s?/usr/local/python2.7/bin/uwsgi?/usr/bin/uwsgi


4、配置uwsgi.ini?

路徑: /opt/cmdb/uwsgi.ini

文件內容:

[root@localhost cmdb]# cat uwsgi.ini?

1
2
3
4
5
6
7
8
9
10
11
[uwsgi]
socket?=?127.0.0.1:8088
chdir=/opt/cmdb
wsgi-file?=?cmdb/wsgi.py
pidfile?=?/var/run/uwsgi.pid
daemonize?=?/var/log/uwsgi.log
perl-auto-reload?=?2
#buffer-size?=?102400
master?=?true
processes?=?2
threads?=?4


Uwsgi:常用參數和選項

關于參數的具體使用,可以閱讀官方文檔http://uwsgi-docs.readthedocs.org/en/latest/Options.html?,在這里列出一些常用的參數:

  • chdir 項目目錄

  • home virtualenv目錄(如沒有運行virtualenv虛擬環境,則無需設置)

  • socket 套接字文件或TCP套接字,例如:site1.uwsgi.sock 或 127.0.0.1:8000

  • uid 用戶id

  • gid 用戶組id

  • processes 工作進程數

  • harakiri 進程超過該時間未響應就重啟該進程(默認單位為秒)

  • module 要啟動的wsgi模塊入口,如:mysite.wsgi:application

  • ini 指定ini配置文件

  • xml 指定xml配置文件(與ini類似)

  • file 指定要運行的wsgi程序文件,如:test.py

  • emperor Emperor模式

  • so-keepalive 開啟TCP KEEPALIVE(unix套接字方式下無效)


uwsgi服務init腳本 /etc/init.d/cmdb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
#?Comments?to?support?chkconfig?on?Linux
#?chkconfig:?35?85?15
#?description:?uwsgi?is?an?HTTP(S)?server,?HTTP(S)?reverse
#
#?author?????mail@zhaoyanan.cn
#
#?chmod?+x?/etc/rc.d/init.d/uwsgi
#?chkconfig?--add?uwsgi
#?chkconfig?--level?2345?uwsgi?on
#
#?Change?History:
#?date????????author??????????note
#?2016/11/16??mail@zhaoyanan.cn??create,?refer?to?nginx,?and?http://uwsgi-docs.readthedocs.io/en/latest/Management.html
??
set?-e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="uwsgi?daemon"
NAME=uwsgi????????????
DAEMON=/usr/bin/$NAME??##指向uwsgi的命令路徑
SCRIPTNAME=/etc/init.d/$NAME??##啟動腳本路徑
CONFFILE=/opt/cmdb/uwsgi.ini??##uwsgi.ini配置文件路徑
PIDFILE=/var/run/uwsgi.pid???##pid文件路徑
test?-x?$DAEMON?||?exit?0
??
d_start(){
????$DAEMON?--ini?$CONFFILE?||?echo?-n?"?already?running"
}
??
d_stop()?{
????$DAEMON?--stop?$PIDFILE?||?echo?-n?"?not?running"
}
??
d_reload()?{
????$DAEMON?--reload?$PIDFILE?||?echo?-n?"?counld?not?reload"
}
??
d_freload()?{
????$DAEMON?--die-on-term?$PIDFILE?||?echo?-n?"?counld?not?force?reload"
}
??
case?"$1"?in
start)
????echo?-n?"Starting?$DESC:$NAME"
????d_start
????echo?"."
;;
stop)
????echo?-n?"Stopping?$DESC:$NAME"
????d_stop
????echo?"."
;;
reload)
????echo?-n?"Reloading?$DESC?configuration..."
????d_reload
????echo?"reloaded."
;;
force_reload)
????echo?-n?"The?official?provision?of?the?parameters,?tested?and?found?not?to?support..."
????#?d_freload
????#?echo?"force?reloaded."
????echo?"."
;;
restart)
????echo?-n?"Restarting?$DESC:?$NAME"
????d_stop
????sleep?2
????d_start
????echo?"."
;;
*)
????echo?"Usage:?$SCRIPTNAME?{start|stop|restart|reload|force_reload}"?>&2
????exit?3
;;
esac
??
exit?0



Nginx安裝配置

1、安裝nginx

1
yum?-y?install?nginx


2、配置nginx

[root@localhost cmdb]# cat /etc/nginx/conf.d/cmdb.conf?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream?django?{
????server?127.0.0.1:8088;
????}
server?{
????listen??????80;
????server_name?172.16.42.128;
????charset?????utf-8;
????client_max_body_size?10M;
????location?/static?{
????????alias?/opt/cmdb/static;
????}
????location?/?{
????????uwsgi_send_timeout?300;
????????uwsgi_connect_timeout?300;
????????uwsgi_read_timeout?300;
????????uwsgi_pass??django;
????????include?????/etc/nginx/uwsgi_params;
????}
}


啟動站點

1、啟動nginx服務

/etc/init.d/nginx start (刪除默認的default.conf配置)


2、啟動uwsgi

/etc/init.d/cmdb start


排錯:

1、在實際操作中發現,啟動uwsgi服務后,訪問站點出現“502 Bad Gateway”的報錯,后來發現是在settings中設置了不允許訪問站點

1
ALLOWED_HOSTS?=?[]

改成

1
ALLOWED_HOSTS?=?[‘*’]

后問題解決。


2、由于python2.6 不支持django1.8 ,所以需要在服務器上安裝python2.7,并且在安裝之前,最好輸入以下命令,將可能用到的包都裝上,否則出現問題時,需要重新編譯安裝python2.7

1
2
3
4
yum?-y?install?zlib-devel?bzip2-devel?openssl-devel?
yum?-y?install?ncurses-devel?sqlite-devel?readline-devel?
yum?-y?install?tk-devel?gdbm-devel?db4-devel?libpcap-devel
yum?-y?install?xz-devel?libffi-devel


3、用pip安裝uwsgi時,一定要用pip2.7(用python2.7安裝的pip) 進行安裝


4、invalid request block size: 4161 (max 4096)...skip報錯解決

在訪問站點時,出現了invalid request block size: 4161 (max 4096)...skip報錯解決的報錯。

解決辦法是在uwsgi.ini配置文件中增加一條配置:buffer-size = 102400

將buffer-size設置大一些










本文轉自 曾哥最愛 51CTO博客,原文鏈接:http://blog.51cto.com/zengestudy/1930346,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454070.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GCC源代碼閱讀

獲取GCC源代碼 閱讀源代碼的第一步是獲取源代碼,巧婦難為無米之炊嘛! 使用以下任意方法均可獲得gcc源代碼: svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir (摘自http://gcc.gnu.org/svn.html)git clone …

Nginx 動靜分離

頁面動靜分離 后端 調用tomcat 集群 示例: server { listen 80; server_name www.www2.com ; root /web/www2/htmlloation /img/ {alias /web/www2/html/img/;}location ~ (\.jsp)|(\.do)$ {proxy_pass http:## //serverip:port;proxy_redirect off;// 重定向 指…

Linux 狀態命令之內存狀態 vmstat

語法 vmstat 常見命令格式如下: vmstat [-a] [-n] [-S unit] [delay [ count]] vmstat [-s] [-n] [-S unit] vmstat [-m] [-n] [delay [ count]] vmstat [-d] [-n] [delay [ count]] vmstat [-p disk partition] [-n] [delay [ count]] vmstat [-f] vmstat [-V]命…

使用OpenSSL實現CA證書的搭建過程

個人博客地址:http://www.pojun.tech/ 歡迎訪問 什么是CA CA,Catificate Authority,通俗的理解就是一種認證機制。它的作用就是提供證書(也就是服務端證書,由域名,公司信息,序列號,簽名信息等等組成&#…

最近公共祖先 python_求二叉搜索樹的最近公共祖先

給定一個二叉搜索樹, 找到該樹中兩個指定節點的最近公共祖先。百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節點也可以是它自己的祖先)。”…

gdb使用實例

第一篇 概論我們將學習使用gdb來調試通過一個通過串行線同PC相連的嵌入式系統。Gdb可以調試各種程序,包括C、C、JAVA、PASCAL、FORAN和一些其它的語言。包括GNU所支持的所有微處理器的匯編語言。在gdb的所有可圈可點的特性中,有一點值得注意,…

Linux 監控命令之 netstat

netstat命令用于顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。netstat是在內核中訪問網絡及相關信息的程序,它能提供TCP連接,TCP和UDP監聽,進程內存管理的相關報告。 語法 netstat [-acC…

C#遞歸搜索指定目錄下的文件或目錄

來源:https://www.cnblogs.com/huhangfei/p/5012978.html誠然可以使用現成的Directory類下的GetFiles、GetDirectories、GetFileSystemEntries這幾個方法實現同樣的功能,但請相信我不是蛋疼,原因是這幾個方法在遇上【System Volume Informati…

solr 配置

創建 SolrHome(solrCore) 1.解壓 solr-4.10.4.tgz 到 /usr/local/solr 2.將 solr-4.10.4/example/solr 下所有文件拷貝到 /usr/local/solrhome (此 solrhome 為自己創建的) solrhome 是 solr 運行主目錄,可包含多個 SolrCore 目錄SolrCore 目錄中包含運行 Solr 實例…

mfc程序轉化為qt_10年程序員:我都學過這些語言,2019年開始我再也不是程序員......

為什么學編程2008年,高中畢業的我問一個已經工作兩年的親戚:什么專業工資高?他告訴我:程序員。2008年成都最低工資好像是800元,我的生活費也是800元,據他所說程序員出來的工資是2000,于是開始了…

day 7 引用

1.ba在c語言和python中的區別 c語言:a100 a變量里面放的100 b a b變量里面也放的100 python : a100 內存中有個100 a放的100的內存地址 b a b也放的100的內存地址 相當于給100那一塊內存,貼個便利簽 2.type查看數據類型&…

Dapper逆天入門~強類型,動態類型,多映射,多返回值,增刪改查+存儲過程+事物案例演示...

Dapper的牛逼就不扯蛋了,答應群友做個入門Demo的,現有園友需要,那么公開分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 項:http://www.cnblogs.com/dunitian/p/5221058.html 平臺之大勢何人…

Linux 狀態命令之磁盤狀態 iostat

Linux系統中的iostat是I/O statistics(輸入/輸出統計)的縮寫,iostat工具將對系統的磁盤操作活動進行監視。它的特點是匯報磁盤活動統計情況,同時也會匯報出CPU使用情況。同vmstat一樣,iostat也有一個弱點,就…

GDB十分鐘教程

GDB十分鐘教程 作者: liigo 原文鏈接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx 日期: 2006年1月16日 本文寫給主要工作在Windows操作系統下而又需要開發一些跨平臺軟件的程序員朋友,以及程序愛好者。 GDB是一個由GNU開源組織發布的、UNIX/LI…

課后作業-閱讀任務-閱讀提問-3

1.如果兩個人合作的始終達不到規范階段該怎如何處理? 2. 邏輯和界面設計要注意哪些因素?轉載于:https://www.cnblogs.com/fhycm/p/7866548.html

ride上點擊用例不能顯示edit信息_接口測試平臺代碼實現61: 多接口用例1

終于又序更上了,原諒最近作者幾天事情不斷。按照我們之前的計劃,需要迅速開啟很重要的核心多用例接口。首先,我們要確定,這個功能的大體設計。就放在在我們的頁面 用例庫 中:所以也就是我們很久之前就創建好的P_cases.…

黑客攻防專題八:21種RING的提權方法

好多都沒有成功,還是發來看看,看看思路,呵呵 以下全部是本人提權時候的總結 很多方法至今沒有機會試驗也沒有成功,但是我是的確看見別人成功過的。本人不才,除了第一種方法自己研究的,其他的都是別人的經驗…

Linux 狀態命令之內存狀態 free

簡介 free指令會顯示內存的使用情況&#xff0c;包括實體內存&#xff0c;虛擬的交換文件內存&#xff0c;共享內存區段&#xff0c;以及系統核心使用的緩沖區等。 語法 free [-bkmotV][-s <間隔秒數>]參數說明&#xff1a;-b  以Byte為單位顯示內存使用情況。-k  以…

SpringMVC在使用Jackson2時關于日期類型格式化的問題

*本例程序使用Jackson2.9.0&#xff0c;jackson1.x的處理方式稍稍有些不同。 在基于Spring&SpringMVC的Web項目中&#xff0c;我們常使用Jackson(1.x/2.x)來增加程序對Json格式的數據的支持。 因此&#xff0c;在實際應用中有個常見的需求&#xff1a;日期的格式化。 假設&…

GDB 使用——Linux C編程

簡述 一 列文件清單 二&#xff1a;執行程序 三&#xff1a;顯示數據 四&#xff1a;斷點(breakpoint) 五&#xff0e;斷點的管理 六&#xff0e;變量的檢查和賦值 七. 單步執行 八&#xff0e;函數的調用 九&#xff0e;機器語言工具 …