<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [toc] # Web應用部署 在我的阿里云主機部署Django之web項目,基本的部署架構是,Ngix -> uWSGI -> Django,安裝和配置參考[Django Nginx+uwsgi 安裝配置](http://www.runoob.com/django/django-nginx-uwsgi.html)和[Python uWSGI 安裝配置](http://www.runoob.com/python3/python-uwsgi.html)。 * Nginx是Web服務器 * uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。[參考uWSGI、WSGI和uwsgi](https://www.cnblogs.com/wspblog/p/8575101.html) * Django是WEB App框架 以下是Django項目的目錄(PyCharm構建) ``` ./MyDjangoProject └───myapp └───mysite └───myusers └───static └───venv │ db.sqlite3 │ manage.py │ ... ``` 以下是阿里云主機的相關目錄 ``` /root └───downloads │ │ ... │ └───qb_web_prj └───ex_nginx_conf # nginx的相關配置文件 └───ex_wsgi # uWSGI的相關文件 └───MyDjangoProject # 我的Django項目 └───qb_venv #虛擬環境venv ``` ## Virtualenv(Python虛擬環境) `virtualenv`is a tool to create isolated Python environments.virtualenv?是一個創建隔絕的Python環境的工具。[virtualenv安裝使用簡介](https://www.cnblogs.com/technologylife/p/6635631.html) 1. 安裝virtualenv ``` apt install virtualenv ``` 2. 創建一個虛擬環境 ~~~ $ cd my_project_dir $ virtualenv venv  #venv為虛擬環境目錄名,目錄名自定義 $ virtualenv -p /usr/bin/python2.7 venv    # -p參數指定Python解釋器程序路徑 ~~~ 2. 要開始使用虛擬環境,其需要被激活: ~~~ $ source venv/bin/activate    ~~~ `從現在起,任何你使用pip安裝的包將會放在?venv`?文件夾中,與全局安裝的Python隔絕開。 像平常一樣安裝包,比如: ~~~ $ pip install requests ~~~ 3. 如果你在虛擬環境中暫時完成了工作,則可以停用它: ~~~ $ . venv/bin/deactivate ~~~ 這將會回到系統默認的Python解釋器,包括已安裝的庫也會回到默認的。 要刪除一個虛擬環境,只需刪除它的文件夾。(執行?`rm?-rf?venv`?)。 這里virtualenv 有些不便,因為virtual的啟動、停止腳本都在特定文件夾,可能一段時間后,你可能會有很多個虛擬環境散落在系統各處,你可能忘記它們的名字或者位置。 * 安裝virtualenv問題的處理 [# virtualenv setuptools pkg\_resources pip wheel failed with error code 2](https://blog.csdn.net/hymanjack/article/details/80341943) ## 在我的阿里云主機部署Django項目 0. 安裝虛擬環境virtualenv,啟動虛擬環境,在虛擬環境中安裝Django ``` (qb_venv) root@xxxx:~:python --version Python 3.5.2 ``` ### Django項目部署測試 1. 把PyCharm建立的django項目上傳至阿里云主機 2. 用python manage.py runserver 0.0.0.0:9000命令運行django程序后,通過瀏覽器訪問服務器網址的9000端口,出現訪問錯誤,報錯為 `Invalid HTTP_HOST header: ‘xxx.xx.xxx.xxx:9000’. You may need to add ‘xxx.xx’ to ALLOWED_HOSTS`。 解決辦法是:修改django項目的setting.py文件 將`ALLOWED_HOSTS = []`改為`ALLOWED_HOSTS = ['*']`, 3. 運行我的django項目`python manage.py runserver 0.0.0.0:9000` 正常的話,在瀏覽器輸入 **http://ip:9000**,可以看到自己頁面。 ### uWSGI安裝測試 1. [Python uWSGI 安裝配置](http://www.runoob.com/python3/python-uwsgi.html) 2. 按以上推薦的方法新建一個簡單的web處理程序,然后啟動http服務( **uwsgi --http :9000 --wsgi-file foobar.py**) 正常的話,在瀏覽器輸入 **http://ip:9000**,可以看到自己頁面。 ### Nginx WEB服務器安裝測試 1. [阿里云Ubuntu 16.04系統下安裝Nginx](https://www.jianshu.com/p/cee284a90c0e) 2. 啟動Nginx,進入Nginx的安裝目錄,也就是剛才我們配置的`/usr/local/nginx`下的`sbin`目錄下執行`./nginx` 3. Nginx端口默認端口為80,我們可以通過配置的IP或者域名進行訪問,出現下圖,說明Nginx啟動成功,或者通過`ps -ref |grep nginx`查看Nginx的進程得知Nginx是否啟動成功! 4. Nginx的配置文件為`/etc/nginx/nginx.conf` 5. Nginx的常用命令 * 關閉命令:`./nginx -s stop` * 退出命令:`./nginx -s quit`,等程序執行完畢后關閉,建議使用此命令。 * 動態加載配置文件`./nginx -s reload`可以不關閉Nginx的情況下更新配置文件,非常好用! * 查看Nginx版本:`./nginx -v` ### 部署Django項目@Nginx Django,uWSGI,Nginx分別安裝測試OK,下面就配置相關文件 1. 配置uwsgi的ini文件 我這里的uwsgi配置文件qbuwsgi.ini ``` [uwsgi] # 對外提供 http 服務的端口 # http = :9000 #the local unix socket file than commnuincate to Nginx 用于和 nginx 進行數據交互的端口 #socket=/data/wwwroot/DevOps/uwsgi/uwsgi.sock socket = 127.0.0.1:9008 # the base directory (full path) django 程序的主目錄 chdir=/root/qb_web_prj/MyDjangoProject # Django's wsgi file #module=mysite.wsgi:application wsgi-file = mysite/wsgi.py # maximum number of worker processes processes = 4 #thread numbers startched in each worker process threads = 2 #monitor uwsgi status 通過該端口可以監控 uwsgi 的負載情況 stats = 127.0.0.1:9191 # clear environment on exit vacuum = true # 后臺運行,并輸出日志 daemonize = /var/log/uwsgi.log # 在定義的文件夾內創建uwsgi.pid(該pid文件保存了uwsgi的進程號,用來重啟和停止uwsgi服務)和uwsgi.status(用來查看uwsgi的服務狀態) # stats = %(chdir)/uwsgi/uwsgi.status # 注意這里用的是相對地址,以下定義的是絕對地址 stats = /root/qb_web_prj/ex_wsgi/uwsgi.status pidfile = /root/qb_web_prj/ex_wsgi/uwsgi.pid ``` 2. 啟動uwsgi uwsgi --ini qbuwsgi.ini,這樣就啟動了uwsgi 如何啟動停止uwsgi參考[uwsgi服務啟動(start)停止(stop)重新裝載(reload)](https://blog.51cto.com/12482328/2087535) * `uwsgi --ini qbuwsgin.ini` # 啟動 * `uwsgi --reload 路徑/uwsgi.pid` # 重啟 * `uwsgi --connect-and-read 路徑/uwsgi.status` # 查看運行狀態 * `uwsgi --stop uwsgi/uwsgi.pid` #停止 * `ps aux | grep uwsgi` # 查看uwsgi的進程 3. 新建nginx配置文件 nginx的配置文件是`/etc/nginx/nginx.conf`,配置文件nginx.conf摘要如下: ``` http { ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } ``` 注意到該配置文件包含了/etc/nginx/sites-enabled/下的相關文件,把自己的相關配置文件放這里就好,這里我是這么處理的:新建文件/root/qb_web_prj/ex_nginx_conf/qb-django-nginx.conf, 然后把該文件軟連接至/etc/nginx/sites-enabled/,qb-django-nginx.conf內容如下: ``` server { listen 9007; #web服務對外端口地址,即http訪問端口號 server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9008; #對應uwsgi的輸入端口號 uwsgi_param UWSGI_SCRIPT mysite.wsgi; uwsgi_param UWSGI_CHDIR /root/qb_web_prj/MyDjangoProject/mysite; index index.html index.htm; client_max_body_size 35m; } } ``` 4. 啟動nginx uwsgi已經啟動了,nginx的配置文件也已經準備就緒,現在就可以啟動nginx了: 輸入命令`nginx`即可 nginx的常用命令如下: * nginx -t # 啟動 Nginx * nginx -t # 檢查配置文件nginx.conf的正確性命令 * nginx -s reload # 重新載入配置文件 * nginx -s reopen # 重啟 Nginx * nginx -s stop # 停止 Nginx 5. 瀏覽器查看結果 在瀏覽器輸入http://xxx.xxx.xxx.xxx:9007就能看到django項目的展示! 大概流程是這樣的: 1. 瀏覽器向http://xxx.xxx.xxx.xxx:9007發送請求; 2. nginx web服務器在端口號9007收到請求后,把請求通過socket = 127.0.0.1:9008 轉發給了uwsgi服務端; 3. uwsgi服務端與django項目交互后再把結果原路反饋給瀏覽器,用戶就可以在瀏覽器看到結果了!!!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看