Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服務器

Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服務器

前不久爲了部署Django項目,在百度上處處找教程,找到的教程由於這樣那樣的緣由,老是失敗,多是由於做者水平比較高吧,有些細節的東西估計沒寫出來,形成我這種初學者想照着作都作不成。百度不行就用Google吧,中文不行就找英文的,最後,給我誤打誤撞的部署成功了。爲了加深印象,我用虛擬機再從新部署一次。python

準備工做

我使用的系統是Ubuntu14.04.5 LTS(Trusty Tahr) server i386版,官網下載地址:http://releases.ubuntu.com/14.04.4/ubuntu-14.04.5-server-i386.isomysql

安裝的時候所有選擇英文,記得之前選擇中文的時候安裝時出了問題,服務器組件一個不選,Ubuntu安裝作的很貼心,基本上是一路回車,就不詳細說明了。
裝好之後,首先要更新apt-get,貌似個人ubuntu鏡像是在國內站下載的,因此源是國內的地址,因此就不用更換源了。nginx

1. 更新apt-getgit

sudo apt-get update
sudo apt-get upgrade

2. 安裝SSHsql

sudo apt-get install ssh

裝好之後,用ifconfig查看一下IP地址
ifconfig數據庫

能夠看到IP地址是192.168.0.154,下面咱們就使用XSHELL鏈接192.168.0.154進行操做了。django

3. 安裝Gitubuntu

這一步不是必須的,由於個人測試項目是放在git.oschina.com上的,安裝git獲取項目代碼就很方便了瀏覽器

sudo apt-get install git

安裝配置MySQL

1. 安裝安全

sudo apt-get install mysql-server

安裝過程當中會提示讓你設置root密碼
設置MySQL的root用戶密碼

2. 配置

2.1 數據庫初始化:

sudo mysql_install_db

2.2 運行數據庫Mysql安全配置嚮導

sudo mysql_secure_installation

輸入root密碼
輸入root密碼

是否修改root密碼,由於前面已經設置過了,選n
是否修改root密碼

是否移除匿名用戶,確定是要選y的
是否移除匿名用戶

是否容許遠程登錄,若是選n的話,只能在本機訪問數據庫,建議選y
是否容許遠程登錄

是否移除test數據庫,建議選是
是否移除test數據庫

從新加載權限表,選y
從新加載權限表

All done!

安裝配置Python環境

1.安裝python-dev包

sudo apt-get install python-dev

2.安裝pip

sudo apt-get install python-pip

3.更換pip源
由於國內使用默認的pip源速度很慢,因此須要更換,在用戶根目錄下新建.pip目錄,在該目錄下新建pip.conf文件

sudo mkdir ~/.pip
sudo vi ~/.pip/pip.conf

而後在文件裏寫上:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

4.安裝配置VirtualEnv和VirtualEnvWrapper
VirtualEnv能夠管理多個開發環境,VirtualEnvWrapper使得VirtualEnv變得更好用

sudo pip install virtualenv virtualenvwrapper

安裝完成之後,須要在環境變量中加入一些配置:
下面這句話是使用python3才須要執行的,python2不須要

echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc

無論python是什麼版本,都要執行下面兩句:

echo "export WORKON_HOME=~/Env" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

能夠重啓系統激活,也能夠運行:

source ~/.bashrc

而後就能夠開始創建一個虛擬環境:

mkvirtualenv first

你會發現,提示符變成(first)user@hostname:~$,表示如今已經進入first的虛擬環境,在此環境下進行的pip等操做,只會在當前環境下生效,當前虛擬環境在/home/siva/Env/first目錄下

Django項目配置

1.安裝django

我使用選擇版原本安裝:

pip install django==1.10.1

2.下載或拷貝項目

安裝完成之後,使用git把項目clone下來,此處填寫你本身的地址:

git clone https://git.oschina.net/xxx/Siva_First.git

此例子的項目名稱是Siva_First,路徑是在/home/siva/下

3.配置django

用Mysql建好項目的數據庫,而後進入Siva_First目錄,用django應用數據模型:

python manage.py makemigrations
python manage.py migrate

創建後臺超級用戶:

python manage.py createsuperuser

靜態文件安置:

python manage.py collectstatic

4.測試項目

運行開發服務器測試一下是否能夠正常運行:

python manage.py runserver 0.0.0.0:8000

這時,用瀏覽器打開http://192.168.0.154:8000/能夠看到網站

5.退出虛擬環境

由於當前是在first虛擬環境下,爲了下一步的安裝,必須退出當前的虛擬環境:

deactivate

uWSGI安裝和配置

1.安裝uWSGI
pip下安裝很簡單:

sudo pip install uwsgi

咱們能夠測試一下uwsgi是否安裝成功

uwsgi --http :8000 --home /home/siva/Env/first --chdir /home/siva/Siva_First -w Siva_First.wsgi

上面的命令是使用8000端口,虛擬環境在/home/siva/Env/first,項目在/home/siva/Siva_First下

2.配置uWSGI

使用上面的命令行來部署網站確定是不行的,咱們須要使用「Emperor mode」,創建一個目錄來放配置文件:

sudo mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites

以項目名稱來命名這個配置文件:

sudo vi Siva_First.ini

內容以下:

[uwsgi]
project = Siva_First
base = /home/siva

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 664
vacuum = true

project是項目名稱,base是項目所在位置

如今,配置文件建好了,可是uwsgi還不能自動運行咱們須要在/etc/init目錄中建一個啓動腳本:

sudo vi /etc/init/uwsgi.conf

內容以下:

description "uWSGI application server in Emperor mode"

start on runlevel [2345]
stop on runlevel [!2345]

setuid siva
setgid www-data

exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites

這一步完成之後,uwsgi仍是不能正常啓動,是由於www-data用戶組尚未建立,等咱們裝完nginx之後就能夠了。

反向代理:Nginx的安裝和配置

1.安裝

sudo apt-get install nginx

2.建立配置文件

sudo vi /etc/nginx/sites-available/Siva_First

內容以下:

server {
    listen 80;
    server_name 192.168.0.154;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/siva/Siva_First;
    }

    location / {
        include         uwsgi_params;
        uwsgi_pass      unix:/home/siva/Siva_First/Siva_First.sock;
    }
}

而後把這個配置文件連接到sites-enabled目錄下

sudo ln -s /etc/nginx/sites-available/Siva_First /etc/nginx/sites-enabled/

檢查一下配置文件的語法是否有問題

sudo service nginx configtest

若是沒問題,那麼重啓一下nginx和uwsgi的服務就能夠訪問了

sudo service nginx restart
sudo service uwsgi restart
相關文章
相關標籤/搜索