最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

 更新時間:2015年04月25日 11:51:33   作者:王曄  
這篇文章主要介紹了在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程,Debian系統(tǒng)和Nginx服務(wù)器皆是高性能的選擇,需要的朋友可以參考下

最近嘗試把項目遷移到Python環(huán)境下,特別新裝了一臺干凈的Debian系統(tǒng),準備重新配置環(huán)境,上網(wǎng)找了一些運行Python Web的環(huán)境方案,最后敲定Nginx+uWSGI組合,Nginx用得比較多,熟練些;uWSGI據(jù)說性能不錯,想嘗試一下。

網(wǎng)上大部分教程都是要求到uWSGI官方網(wǎng)站下載源碼包,然后通過編譯的方式安裝,比如對于一臺新Debian系統(tǒng),可以通過下面的命令安裝:

apt-get update
apt-get upgrade
apt-get install build-essential psmisc
apt-get install python-dev libxml2 libxml2-dev
apt-get install python-setuptools
cd /opt/
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar -zxvf uwsgi-latest.tar.gz
mv uwsgi-latest/ uwsgi/
cd uwsgi/
python setup.py install

還有一些配置我就不介紹了,大家可以參考Linode Library的《Deploy Python Code with WSGI using uWSGI and nginx on Debian 6 (Squeeze)》介紹。

今天要介紹的是利用APT源直接apt-get install安裝配置我們所需要的環(huán)境,首先按慣例先安裝MySQL和Nginx:

然后通過Debian Packages網(wǎng)站找到我們所需要的uWSGI在sid里,sid版里的東西表示仍在開發(fā)測試中,不是最終穩(wěn)定版,不過對于我們測試來說是夠用了,為了用sid里面的軟件包,我們還需要修改我們的/etc/apt/sources.list源,添加deb http://ftp.tw.debian.org/debian sid main non-free contrib這一行,或者直接輸入命令:

echo "deb http://ftp.tw.debian.org/debian sid main non-free contrib" >> /etc/apt/sources.list

配置過源列表后,我們就可以通過下面的命令安裝了:

apt-get update
apt-get install uwsgi uwsgi-core uwsgi-plugin-python

安裝完成后,配置文件按慣例放在了/etc/uwsgi里面,服務(wù)控制可以通過invoke-rc.d uwsgi后面跟命令參數(shù)來實現(xiàn),不過這里有個小插曲我不得不提一下,安裝時可能會報這樣的錯誤:

The following packages have unmet dependencies: 
libc6-dev : Breaks: gcc-4.4 (< 4.4.6-4) but 4.4.5-8 is to be installed. 
E: Broken packages

看樣子是依賴包gcc版本不匹配,我后來通過下面的方式解決了:

apt-get update
apt-get upgrade # 先嘗試升級系統(tǒng)軟件包
 
apt-get install libc6-dev

接下來就是安裝django以及Python的MySQL支持,繼續(xù)APT命令:

apt-get install python-django python-mysqldb

通過上面的步驟,Python環(huán)境應(yīng)該安裝到你的系統(tǒng)里了,切換到/usr/lib:

cd /usr/lib
ls -l | grep python

你可能會發(fā)現(xiàn)系統(tǒng)內(nèi)被默認安裝了幾個版本的Python,比如我這里就安裝有3個版本:

/usr/lib/python2.6
/usr/lib/python2.7
/usr/lib/python3

如何確定當前的Python默認版本呢?很容易,直接通過下面的命令就可以了:

python --version

大家知道django是安裝到python目錄下的site-packages下的,但是這幾個python目錄下都沒有site-packages這個文件夾,其實我們可以先通過下面的命令定位一下:

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

上面的命令會在控制臺上打印Python包路徑,比如這里我們可能獲得dist-packages這個目錄,切換到這個目錄你就會發(fā)現(xiàn)django在那兒啦。給django-admin.py加上權(quán)限,再做個符號連接,便于我們以后操作(我這里Django在Python2.7下):

chmod 777 /usr/lib/python2.7/dist-packages/django/bin/django-admin.py
ln -s /usr/lib/python2.7/dist-packages/django/bin/django-admin.py /usr/local/bin

記下Django所在的Python版本,然后通過下面的命令切換uwsgi的默認Python版本(一般不需要切換):

update-alternatives --config uwsgi-plugin-python

好啦,到這里基本上安裝部分就介紹完了,下面講解配置部分,首先建立我們項目的文件夾,比如說放在/home/user/www下,然后通過下面的命令創(chuàng)建名為mysite的Django項目:

cd /home/user/www
django-admin.py startproject mysite

好了,這下/home/user/www目錄下應(yīng)該有個子文件夾名字叫mysite,我們需要丟個wsgi的配置文件到/home/user/www/mysite/里面去,配置文件命名為wsgi.py,內(nèi)容如下:

接下來是修改uwsgi配置文件,先通過如下命令按照剛才的設(shè)置建立個配置文件:

cat > /etc/uwsgi/apps-enabled/www.ini << EOF
[uwsgi]
socket = /var/run/uwsgi/app/www/socket
chmod-socket = 666
limit-as = 256
processes = 6
max-request = 2000
memory-report = true
enable-threads = true
pythonpath = /home/user/www
chdir = /home/user/www/mysite
wsgi-file = /home/user/www/mysite/wsgi.py
EOF
 
# 重啟uwsgi
invoke-rc.d uwsgi restart

注意上面的socket配置,這個在我機子上是這個路徑,大家可以cd /var/run里面找下,然后配置正確,接下來建立Nginx配置文件:

cat > /etc/nginx/sites-enabled/www << EOF
server {
    listen  80;
    server_name localhost;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///var/run/uwsgi/app/www/socket;
    }
}
EOF

這里的uwsgi_pass依舊是上面我們找到的socket,注意一下server_name,這個是我們綁定的域名,通過nginx -s reload重新加載nginx。

好了,現(xiàn)在可以訪問看看是不是成功了?如果出現(xiàn)502 Bad Gateway,可以檢查一下uwsgi是否正常啟動,通過ps aux | grep uwsgi看下進程列表,最后在檢查下socket路徑是否正確。

假如出現(xiàn)uWSGI Error:Python application not found這個問題,主要是路徑配置問題,這點你可以查閱/var/log/uwsgi下面的日志文件,比如我就遇到過ImportError: No module named django.core.handlers.wsgi這個問題,實際上是wsgi.py里面路徑配置不正確。

相關(guān)文章

  • 以SortedList為例詳解Python的defaultdict對象使用自定義類型的方法

    以SortedList為例詳解Python的defaultdict對象使用自定義類型的方法

    這篇文章主要介紹了以SortedList為例詳解Python的defaultdict對象使用自定義類型的方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • python操作kafka實踐的示例代碼

    python操作kafka實踐的示例代碼

    這篇文章主要介紹了python操作kafka實踐的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python獲取電腦硬件信息及狀態(tài)的實現(xiàn)方法

    Python獲取電腦硬件信息及狀態(tài)的實現(xiàn)方法

    這篇文章主要介紹了Python獲取電腦硬件信息及狀態(tài)的實現(xiàn)方法,是一個很實用的技巧,需要的朋友可以參考下
    2014-08-08
  • python實現(xiàn)自動清理文件夾舊文件

    python實現(xiàn)自動清理文件夾舊文件

    這篇文章主要為大家詳細介紹了python實現(xiàn)自動清理文件夾舊文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Python中List.index()方法的使用教程

    Python中List.index()方法的使用教程

    這篇文章主要介紹了Python中List.index()方法的使用教程,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • python多重繼承新算法C3介紹

    python多重繼承新算法C3介紹

    這篇文章主要介紹了python多重繼承新算法C3介紹,多重繼承需要復(fù)雜的算法,本文就詳細講解了新算法C3,需要的朋友可以參考下
    2014-09-09
  • Python封裝解構(gòu)以及丟棄變量

    Python封裝解構(gòu)以及丟棄變量

    這篇文章主要介紹了Python封裝解構(gòu)以及丟棄變量,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • NumPy實現(xiàn)ndarray多維數(shù)組操作

    NumPy實現(xiàn)ndarray多維數(shù)組操作

    NumPy一個非常重要的作用就是可以進行多維數(shù)組的操作,這篇文章主要介紹了NumPy實現(xiàn)ndarray多維數(shù)組操作,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • python實現(xiàn)獲取當前設(shè)備的地點位置

    python實現(xiàn)獲取當前設(shè)備的地點位置

    這篇文章主要介紹了python實現(xiàn)獲取當前設(shè)備的地點位置,電腦如何獲取當前所處的地理位置?它不會像我們一樣對地理位置有感性的認知,它只認識數(shù)據(jù),簡言之,電腦可以通過獲取當前連接的公網(wǎng)IP,反推所處的位置環(huán)境,需要的朋友可以參考一下
    2022-03-03
  • Python中逗號的三種作用實例分析

    Python中逗號的三種作用實例分析

    這篇文章主要介紹了Python中逗號的三種作用,實例分析了Python中的逗號在類型轉(zhuǎn)換與打印輸出時的使用技巧,需要的朋友可以參考下
    2015-06-06

最新評論

施秉县| 大冶市| 昌乐县| 韶关市| 利津县| 南汇区| 仁寿县| 彭州市| 福鼎市| 垦利县| 闻喜县| 拜城县| 会理县| 田东县| 齐齐哈尔市| 江阴市| 玉田县| 宝兴县| 新余市| 土默特左旗| 凌源市| 利辛县| 陆川县| 通道| 旺苍县| 保亭| 石狮市| 庆阳市| 石台县| 淮南市| 泰和县| 凤阳县| 嘉兴市| 望江县| 北辰区| 明光市| 长岛县| 长乐市| 杭锦后旗| 怀柔区| 凤城市|