成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

在阿里云上Ubuntu環(huán)境通過nginx+uwsgi部署Django項目

asce1885 / 2649人閱讀

年前阿里云打折,1核1G的云服務(wù)器一年只要300多塊,果斷就租了1年的。既然服務(wù)器已經(jīng)到手,怎么能不把自己寫的項目部署上去呢,其實網(wǎng)上關(guān)于nginx+uwsgi部署Django項目的文章有很多,但是這些文章要不就是很久之前的,要不就是互相抄襲,一路過來都是坑,這里重點吧在部署時候遇到的坑著重介紹一下:
1.首先部署django項目

首先是django項目,由于我是使用Anaconda來進行版本控制的,而django項目是在Python2.7環(huán)境下開發(fā)的,首先是新建一個Python2.7的環(huán)境:

#創(chuàng)建python27環(huán)境
conda create --name python27 python=2.7
#激活該環(huán)境
source activate python27
#通過conda安裝django
conda install django

環(huán)境準備好后,從GitHub上將項目拉取下來

git clone https://github.com/sunny0826/xxx

修改setting.py文件

#debug模式默認開啟,這里要關(guān)閉
DEBUG = False
#這里將外網(wǎng)IP配置進來
ALLOWED_HOSTS = ["127.0.0.1","xx.xx.xx.xx"]

啟動項目:

#來項目目錄下執(zhí)行
python manage.py runserver 8000

然后在外網(wǎng)ip:8000路徑下查看項目啟動情況

2.阿里云配置安全組

由于是服務(wù)器在阿里云上,所以直接訪問時訪問不到的,所以要在阿里云平臺配置安全組(類似于防火墻)

首先打開阿里云平臺,登錄,點擊安全組配置:

點擊配置規(guī)則

點擊添加安全組規(guī)則

按要求填寫安全組規(guī)則


優(yōu)先級1位最高優(yōu)先級,端口可以設(shè)置范圍,并且可以設(shè)置授權(quán)訪問的對象
設(shè)置完之后,就可以在公網(wǎng)IP訪問到我們的django項目了

3.安裝配置uwsgi

確定django項目可以正常運行了,ctrl+c停止項目,下面我們來安裝uwsgi:
在安裝uwsgi非常簡單,只需要pip安裝即可,但是由于之前使用的是Python27環(huán)境,這里記得要激活Python27環(huán)境,否則就安裝到默認的Python路徑了

#uWSGI 是一個(巨大的) C 應(yīng)用,所以你需要一個 C 編譯器(比如 gcc 或者 clang)和 Python 開發(fā)版頭文件
apt-get install build-essential python-dev
#安裝uwsgi
pip install uwsgi

按照官網(wǎng)介紹,寫已經(jīng)Python腳本進行測試,test.py(在任意路徑都可以,不過測完要記得刪掉)

def application(env, start_response):
    start_response("200 OK", [("Content-Type","text/html")])
    return ["Hello World"]

然后輸入命令進行測試

uwsgi --http :8000 --wsgi-file test.py

這里是8000端口,因為之前測試django的時候打開的8000端口,這里偷懶就不去配置新的安全組了
那么問題就來了,在啟動的時候報錯了....=。=

出現(xiàn)的這個錯誤,經(jīng)過測試只會在Python2.7的環(huán)境發(fā)生,在Python3+就沒有發(fā)生了,輾轉(zhuǎn)百度和Google,都沒有找到這個問題的解決辦法且這個問題一般發(fā)生在nginx上...
但這個報錯問題還是很明顯,就是libpcre.so.1這個文件找不到,初步推測為版本問題
首先要咱們搜索一下這個文件,看看本機有沒有

發(fā)現(xiàn)本機是有這個文件的,那就好辦了,將他鏈接到相應(yīng)位置就好

執(zhí)行這條語句之后就可以uwsgi就可以正常啟動了

在跳過這個坑之后,就可以正式來配置我們的項目了
首先修改自己項目中的wsgi.py文件,添加兩行代碼

然后在django項目根目錄創(chuàng)建uwsgi.ini文件

uwsgi.ini文件配置
# uwsgi.ini file
[uwsgi]

# Django-related settings

socket = 127.0.0.1:8000            #與nginx通信的地址和端口

# the base directory (full path)
chdir           = /apps/xxxx        #django項目絕對路徑

# Django s wsgi file
module          = xxxx.wsgi    #wsgi文件所在的相對于項目的路徑

# the virtualenv (full path)
home            =  /root/anaconda3/envs/python27/lib/python2.7/site-packages        #python環(huán)境的路徑

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

plugins=python
#log文件
daemonize=/apps/uwsgi/uwsgi.log
#pid文件
pidfile=/apps/uwsgi/uwsgi.pid

這里配置日志文件和pid文件,方便之后的重啟

關(guān)于uwsgi的重啟問題:

每次項目有代碼更新的話,都需要重啟uwsgi,如果沒有配置pid文件的話,重啟需要使用:

#查看uwsgi進程號
ps aux | grep uwsgi
#關(guān)閉進程號為0的進程
kill -9 主進程號

來停止uwsgi,然后才能重啟,注意這里的主進程是pid為1的進程,而配置了pid文件的,只需要進行如下方法來重啟即可

#重載(一般修改參數(shù),或者修改py文件經(jīng)常用到)
uwsgi --reload uwsgi.pid
#重啟(一般系統(tǒng)環(huán)境變化會用到)
uwsgi --stop uwsgi.pid

最后在項目根目錄下運行uwsgi命令,載入配置文件

uwsgi --ini uwsgi.ini

然后在后面的日志中要注意環(huán)境是否為之前配置,如果不是請激活激活之前創(chuàng)建的Python環(huán)境再進行操作

4.安裝配置nginx

最后來安裝nginx

sudo apt-get install nginx  

修改nginx配置

cd /etc/nginx/sites-enabled    #Ubuntu中nginx配置文件所在路徑
vim default
配置文件
server {
        listen 80 default_server;            #監(jiān)聽端口,將來訪問的端口
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;


        server_name _;

        location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8000;    #uwsgi中配置的路徑
        }

        location /static {
                alias /apps/xxx/static;       #靜態(tài)資源路徑
        }

        location /resume.ico  {
                alias /apps/xxx/static/resume.ico;    #網(wǎng)頁圖標路徑
        }
}

uwsgi啟動后,再啟動nginx

基礎(chǔ)命令
/etc/init.d/nginx start  #啟動
/etc/init.d/nginx stop  #關(guān)閉
/etc/init.d/nginx restart  #重啟

啟動之后,訪問外網(wǎng)IP:80,查看是否可以通過nginx訪問django

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/44552.html

相關(guān)文章

  • Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服務(wù)器

    摘要:百度不行就用吧,中文不行就找英文的,最后,給我誤打誤撞的部署成功了。準備工作我使用的系統(tǒng)是版,官網(wǎng)下載地址安裝的時候全部選擇英文,記得以前選擇中文的時候安裝時出了問題,服務(wù)器組件一個不選,安裝做的很貼心,基本上是一路回車,就不詳細說明了。 Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服務(wù)器 前不久為了部署Django項目,在百度上到處找教程,找...

    silvertheo 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<