91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統怎樣部署Django項目

發布時間:2022-01-26 11:59:12 來源:億速云 閱讀:201 作者:柒染 欄目:開發技術

這期內容當中小編將會給大家帶來有關Linux系統怎樣部署Django項目,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Linux系統中部署Django項目

安裝Django、Nginx和uWSGI

1.確定已經安裝了2.7版本的Python; 2.安裝python-devel yum install python-devel 3.安裝uwsgi pip install uwsgi

測試uwsgi是否能正常工作

1.新建一個index.py;

 # index.py
 def application(env, start_response):
     start_response('200 OK', [('Content-Type','text/html')])
     return "Hello World"1234

2.uwsgi –http :8000 –wsgi-file index.py 瀏覽器訪問8000端口看是否有hello world輸出 注意:確保8000端口能被外網訪問

測試Django能否正常工作

$ cd /var/www/ $ django-admin startproject mysite $ cd mysite $ python manage.py runserver 0.0.0.0:8000 瀏覽器訪問8000端口看是否有hello world輸出

測試uwsgi是否能和django集成

 uwsgi --http :8000 --chdir=/var/www/mysite --module mysite.wsgi`
 or
 `uwsgi --http :8008 --chdir /var/www/mysite --wsgi-file weixin/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9192

在瀏覽器中訪問8000端口,看能否正常訪問django網站。

參數說明:

 # http : 協議類型和端口號
 # processes : 開啟的進程數量
 # workers : 開啟的進程數量,等同于processes(官網的說法是spawn the specified number ofworkers / processes)
 # chdir : 指定運行目錄(chdir to specified directory before apps loading)
 # wsgi-file : 載入wsgi-file(load .wsgi file)
 # stats : 在指定的地址上,開啟狀態服務(enable the stats server on the specified address)
 # threads : 運行線程。由于GIL的存在,我覺得這個真心沒啥用。(run each worker in prethreaded mode with the specified number of threads)
 # master : 允許主進程存在(enable master process)
 # daemonize : 使進程在后臺運行,并將日志打到指定的日志文件或者udp服務器(daemonize uWSGI)。實際上最常
 用的,還是把運行記錄輸出到一個本地文件上。
 # daemonize : 使進程在后臺運行,并將日志打到指定的日志文件或者udp服務器(daemonize uWSGI)。實際上最常
 用的,還是把運行記錄輸出到一個本地文件上。
 # vacuum : 當服務器退出的時候自動清理環境,刪除unix socket文件和pid文件(try to remove all of the generated file/sockets)12345678910111213

配置Nginx,使Nginx能為Django提供服務

在/etc/nginx/conf.d/下創建一個針對mysite項目的配置文件,詳細如下:

 # /etc/nginx/conf.d/mysite_nginx.conf
 # the upstream component nginx needs to connect to
 upstream django {
     server 127.0.0.1:8000; # for a web port socket
 }
 
 # configuration of the server
 server {
     # the port your site will be served on
     listen      80;
     # the domain name it will serve for
     server_name .example.com; # substitute your machine's IP address or FQDN
     charset     utf-8;
 
     # max upload size
     client_max_body_size 75M;   # adjust to taste
 
     # Django 的static和 media目錄
     # 如果沒有static或media目錄,你需要先創建
     location /media  {
         alias /var/www/mysite/media;
     }  
 
     location /static {
         alias /var/www/mysite/static;
     }
 
     # 將所有非靜態文件的請求轉給django server處理,這里的django server用的是uwsgi。
     location / {
         uwsgi_pass  django;
         include  /var/www/mysite/uwsgi_params;
     }
 }
 #你可以從/etc/nginx/uwsgi_params復制一個拷貝到/var/www/mysite/uwsgi_params。
 $ cp /etc/nginx/uwsgi_params /var/www/mysite/1234567891011121314151617181920212223242526272829303132333435

需要補充說明的是,在/etc/nginx/nginx.conf文件中,在最后一行的配置是include /etc/nginx/conf.d/*.conf,也就是說,/etc/nginx/conf.d/mysite_nginx.conf是會被包含在/etc/nginx/nginx.conf中的。

重啟nginx服務器,驗證訪問結果

/etc/init.d/nginx restart 通過瀏覽器訪問80端口,你發現了什么?502 Bad Gateway?是不是?想一想,這是為什么呢?原因是你訪問80端口時,請求的資源不是static,也不是media,這個時候Nginx就把請求轉給upstream django,upstream的網關配置的127.0.0.1:8000,而127.0.0.1:8000是要靠uwsgi啟動的,所以報了一個502 Bad Gateway。你,明白了嗎?

注:CentOS 7啟動服務的命令是systemctl restart nginx.service

啟動uwsgi,再次驗證結果

執行下面一個命令,啟動uwsgi。 uwsgi --socket :8000 --chdir=/var/www/mysite --module mysite.wsgi 重啟Nginx服務/etc/init.d/nginx restart,再次通過瀏覽器訪問80端口試試看。是不是成功了?

注:CentOS 7啟動服務的命令是systemctl restart nginx.service

如何使uwsgi以配置文件運行?Configuring uWSGI to run with a .ini file

創建一個mysite_uwsgi.ini文件,內容如下:

 [uwsgi]
 socket=:8000
 chdir = /var/www/mysite
 #wsgi-file = mysite/wsgi.py
 module=mysite.wsgi:application
 processes = 10
 threads = 2
 #django執行命令uwsgi --ini mysite_uwsgi.ini即可運行如何以Emperor模式運行?什么是Emperor模式?,官網說的很清楚,如下:uWSGI can run in ‘emperor’ mode. In this mode it keeps an eye on a directory of uWSGI config files, and will spawn instances (‘vassals’) for each one it finds.Whenever a config file is amended, the emperor will automatically restart the vassal.按下面的步驟操作,即可以Emperor模式運行uwsgi: \1. create a directory for the vassals sudo mkdir /etc/uwsgi sudo mkdir /etc/uwsgi/vassals \2. symlink from the default config directory to your config file sudo ln -s /path/to/your/mysite/mysite_uwsgi.ini /etc/uwsgi/vassals/ \3. run the emperor uwsgi --emperor /etc/uwsgi/vassals --uid nginx --gid nginx如何創建uwsgi服務?在Linux中,一個服務其實就是一個shell腳本。在CenOS6中,服務腳本一般都在/etc/init.d/目錄下。 首先我們在/etc/initd/目錄下創建一個uwsgi文件,文件內容如下: #!/bin/sh
 #
 ### BEGIN INIT INFO
 # Provides: uwsgi
 # Required-Start: $syslog $remote_fs
 # Should-Start: $time ypbind smtp
 # Required-Stop: $syslog $remote_fs
 # Should-Stop: ypbind smtp
 # Default-Start: 3 5
 # Default-Stop: 0 1 2 6
 ### END INIT INFO
 # Source function library.
 . /etc/rc.d/init.d/functions
 # Check for missing binaries (stale symlinks should not happen)
 UWSGI_BIN="/usr/local/bin/uwsgi"
 UWSGI_EMPEROR_MODE=true
 UWSGI_VASSALS="/etc/uwsgi/vassals/"
 UWSGI_OPTIONS="--uid nginx  --gid nginx  --logto /var/log/uwsgi/uwsgi.log"
 lockfile=/var/lock/subsys/uwsgi
 UWSGI_OPTIONS="$UWSGI_OPTIONS --autoload"
 if [ "$UWSGI_EMPEROR_MODE" = "true" ] ; then
     UWSGI_OPTIONS="$UWSGI_OPTIONS --emperor $UWSGI_VASSALS"
 fi
 case "$1" in
     start)
     echo "Starting uWSGI ... "
     daemon $UWSGI_BIN $UWSGI_OPTIONS &
     ;;
     stop)
     echo "Shutting down uWSGI ... "
     killproc $UWSGI_BIN
     ;;
     restart)
     $0 stop
     $0 start
     ;;
     status)
     echo -n "Checking for service uWSGI "
     status $UWSGI_BIN
     ;;
     *)
     echo "Usage: $0 {start|stop|status|restart}"
     exit 1
     ;;
 esac
 exit 012345678910111213141516171819202122232425262728293031323334353637383940414243444546然后,我們可以使用此腳本來管理uwsgi,如下:/etc/init.d/uwsgi start /etc/init.d/uwsgi stop /etc/init.d/uwsgi restart /etc/init.d/uwsgi status需要注意的是,日志文件夾的所屬權應該歸配置文件中指定的用戶nginx $ chown nginx.nginx /var/log/uwsgi -R如何設置開機起動uwsgi?把啟動uwsgi的命令添加到“/etc/rc.local”文件中即可。多站點部署問題 #Simple HTTP server
 server {
     listen   80;
     root /usr/share/nginx/www;
     server_name host1.example.com;
 }
 
 #Django server
 server {
     listen   80;
     server_name host2.example.com;
 
     #...upstream config...
 }

上述就是小編為大家分享的Linux系統怎樣部署Django項目了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀来县| 韶关市| 静宁县| 思茅市| 江山市| 罗源县| 五河县| 天长市| 辽宁省| 新乐市| 延长县| 兴业县| 安达市| 灵寿县| 竹山县| 巢湖市| 剑河县| 铁岭县| 剑川县| 浦城县| 屯门区| 上犹县| 隆安县| 南投县| 正阳县| 江口县| 张北县| 牙克石市| 长泰县| 英德市| 兴海县| 唐山市| 深泽县| 成安县| 饶阳县| 永济市| 吴堡县| 邵东县| 阿尔山市| 武邑县| 绥江县|