欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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:

然后通過(guò)Debian Packages網(wǎng)站找到我們所需要的uWSGI在sid里,sid版里的東西表示仍在開(kāi)發(fā)測(cè)試中,不是最終穩(wěn)定版,不過(guò)對(duì)于我們測(cè)試來(lái)說(shuō)是夠用了,為了用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

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

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

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

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

看樣子是依賴(lài)包gcc版本不匹配,我后來(lái)通過(guò)下面的方式解決了:

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

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

apt-get install python-django python-mysqldb

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

cd /usr/lib
ls -l | grep python

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

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

如何確定當(dāng)前的Python默認(rèn)版本呢?很容易,直接通過(guò)下面的命令就可以了:

python --version

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

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

上面的命令會(huì)在控制臺(tái)上打印Python包路徑,比如這里我們可能獲得dist-packages這個(gè)目錄,切換到這個(gè)目錄你就會(huì)發(fā)現(xiàn)django在那兒啦。給django-admin.py加上權(quán)限,再做個(gè)符號(hào)連接,便于我們以后操作(我這里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版本,然后通過(guò)下面的命令切換uwsgi的默認(rèn)Python版本(一般不需要切換):

update-alternatives --config uwsgi-plugin-python

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

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

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

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

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配置,這個(gè)在我機(jī)子上是這個(gè)路徑,大家可以cd /var/run里面找下,然后配置正確,接下來(lái)建立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,這個(gè)是我們綁定的域名,通過(guò)nginx -s reload重新加載nginx。

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

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

相關(guān)文章

  • 使用Python可設(shè)置抽獎(jiǎng)?wù)邫?quán)重的抽獎(jiǎng)腳本代碼

    使用Python可設(shè)置抽獎(jiǎng)?wù)邫?quán)重的抽獎(jiǎng)腳本代碼

    這篇文章主要介紹了Python可設(shè)置抽獎(jiǎng)?wù)邫?quán)重的抽獎(jiǎng)腳本,抽獎(jiǎng)系統(tǒng)包含可給不同抽獎(jiǎng)?wù)咴O(shè)置不同的權(quán)重,先從價(jià)值高的獎(jiǎng)品開(kāi)始抽,已經(jīng)中獎(jiǎng)的人,不再參與后續(xù)的抽獎(jiǎng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • python使用in操作符時(shí)元組和數(shù)組的區(qū)別分析

    python使用in操作符時(shí)元組和數(shù)組的區(qū)別分析

    有時(shí)候要判斷一個(gè)數(shù)是否在一個(gè)序列里面,這時(shí)就會(huì)用到in運(yùn)算符來(lái)判斷成員資格,如果條件為真時(shí),就會(huì)返回true,條件為假時(shí),返回一個(gè)flase。這樣的運(yùn)算符叫做布爾運(yùn)算符,其真值叫做布爾值。
    2015-05-05
  • python實(shí)現(xiàn)k-means聚類(lèi)算法

    python實(shí)現(xiàn)k-means聚類(lèi)算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)k-means聚類(lèi)算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 搞定這套Python爬蟲(chóng)面試題(面試會(huì)so easy)

    搞定這套Python爬蟲(chóng)面試題(面試會(huì)so easy)

    Python 是一門(mén)開(kāi)源的解釋性語(yǔ)言,相比 Java C++ 等語(yǔ)言,Python 具有動(dòng)態(tài)特性,非常靈活。這篇文章主要介紹了搞定這套Python爬蟲(chóng)面試題,面試會(huì)so easy,需要的朋友可以參考下
    2019-04-04
  • Python基于釘釘監(jiān)控發(fā)送消息提醒的實(shí)現(xiàn)

    Python基于釘釘監(jiān)控發(fā)送消息提醒的實(shí)現(xiàn)

    本文主要介紹了Python基于釘釘監(jiān)控發(fā)送消息提醒的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python for循環(huán)與range函數(shù)的使用詳解

    Python for循環(huán)與range函數(shù)的使用詳解

    這篇文章主要介紹了Python for循環(huán)與range函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 圖片去摩爾紋簡(jiǎn)述實(shí)現(xiàn)python代碼示例

    圖片去摩爾紋簡(jiǎn)述實(shí)現(xiàn)python代碼示例

    這篇文章主要為大家介紹了圖片去摩爾紋簡(jiǎn)述實(shí)現(xiàn)的python代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Python MySQL查詢(xún)限制方式詳解

    Python MySQL查詢(xún)限制方式詳解

    MySQL是一款廣泛使用的關(guān)系型數(shù)據(jù)庫(kù),而Python是一門(mén)流行的編程語(yǔ)言,在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),二者的結(jié)合可以幫助我們更加高效地進(jìn)行操作和管理,這篇文章主要介紹了Python MySQL查詢(xún)限制,需要的朋友可以參考下
    2023-11-11
  • python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

    python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

    這篇文章主要介紹了python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù)),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python Pandas創(chuàng)建Dataframe數(shù)據(jù)框的六種方法匯總

    Python Pandas創(chuàng)建Dataframe數(shù)據(jù)框的六種方法匯總

    這篇文章主要介紹了Python中的Pandas創(chuàng)建Dataframe數(shù)據(jù)框的六種方法,創(chuàng)建Dataframe主要是使用pandas中的DataFrame函數(shù),其核心就是第一個(gè)參數(shù):data,傳入原始數(shù)據(jù),因此我們可以據(jù)此給出六種創(chuàng)建Dataframe的方法,需要的朋友可以參考下
    2023-05-05

最新評(píng)論