在騰訊雲上用 nginx + uwsgi + django 搭建自己的網站


  • 前言:之前在騰訊雲弄了一個學生雲主機和一個域名,後面又學了朋友python,所以就想建一個網站來玩玩。
    準備工作:一臺安裝了Ubuntu16.04的雲服務器,一個域名(這裏用buduannuli.cn),假設你的雲主機是剛重裝的,現在連接上那你的雲主機,然後開始。。。
  • 配置 ubuntu16.04    python2.7
  • 首先在安全組設置開放80端口。
  • 安裝pip
     
    sudo apt install python-pip -y


  • 安裝django
     
    sudo pip install django==1.9


  • 創建 hello world 應用
     
    cd /data
    sudo django-admin startproject helloworld
     定位到 /data/helloworld

  • 修改配置文件
     修改 /data/helloworld/helloworld/settings.py 文件權限爲其它人可寫
     
    sudo chmod 666 /data/helloworld/helloworld/settings.py
     編輯 /data/helloworld/helloworld/settings.py
     將 ALLOWED_HOSTS = [] 修改爲 ALLOWED_HOSTS = ["你的主機ip"] ,這樣可以允許通過 ip 訪問


  • 創建簡單的頁面
     1、創建文件 /data/helloworld/helloworld/views.py ,並修改權限爲其它人可寫
     
    sudo touch /data/helloworld/helloworld/views.py
    sudo chmod 666 /data/helloworld/helloworld/views.py
     2、編輯 /data/helloworld/helloworld/views.py添加如下內容:
     
    # -*- coding: utf-8 -*-
    
    from django.http.response import HttpResponse
    
    def home(request):
        return HttpResponse('this is test page')
    
    
    def hello(request):
        user = request.GET.get('user')
        if not user: user = 'world'
        return HttpResponse('hello %s this is home page' % user)
    
     3、修改 /data/helloworld/helloworld/urls.py 文件權限爲其它人可寫  
    sudo chmod 666 /data/helloworld/helloworld/urls.py
     4、添加路由配置,編輯 /data/helloworld/helloworld/urls.py 將 
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]
     修改爲 
    import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$', views.hello),
        url(r'^home', views.home),
    ]



  • 部署 uwsgi 和 nginx
     1、使用 pip 安裝 uwsgi
     
    sudo pip install uwsgi
     2、創建文件 /data/helloworld/uwsgi.ini ,並修改權限爲其它人可寫

     
    sudo touch /data/helloworld/uwsgi.ini
    sudo chmod 666 /data/helloworld/uwsgi.ini
     3、編輯 /data/helloworld/uwsgi.ini ,輸入以下內容,並保存

     
    [uwsgi]
    chdir = /data/helloworld
    module = helloworld.wsgi
    socket = 127.0.0.1:8080
    master = true
    vhost = true
    no-site = true
    workers = 2
    reload-mercy = 10     
    vacuum = true
    max-requests = 1000   
    limit-as = 512
    buffer-size = 30000
    pidfile = /tmp/uwsgi.pid
    daemonize = /tmp/uwsgi.log
     4、啓動 uwsgi
     
    export PYTHONPATH=/usr/local/lib/python2.7/dist-packages
    uwsgi --ini /data/helloworld/uwsgi.ini
     5、安裝 nginx
     
    sudo apt-get install nginx -y
     6、添加 nginx 配置文件,創建文件 /etc/nginx/sites-enabled/helloworld.conf ,並修改權限爲其它人可寫
     
    sudo touch /etc/nginx/sites-enabled/helloworld.conf
    sudo chmod 666 /etc/nginx/sites-enabled/helloworld.conf
     7、編輯 /etc/nginx/sites-enabled/helloworld.conf ,輸入以下內容,並保存
     
    server {
        listen       80;
        server_name  buduannuli.cn;//改爲你的域名
    
        charset utf-8;
    
        location / {
            uwsgi_pass 127.0.0.1:8080;
            include /etc/nginx/uwsgi_params;
            client_max_body_size      10m;
        }
    
        client_body_timeout  3m;
        send_timeout   3m;
        proxy_send_timeout 3m;
        proxy_read_timeout 3m;
    }
     8、重啓 nginx 服務 

     
    sudo systemctl restart nginx


  • 測試 nginx + uwsgi + django 是否正常工作
    在瀏覽器輸入buduannuli.cn和buduannuli.cn/hello就可以看到結果


  • 當django的調試模式打開時,理論上可以在瀏覽器上看到更新,但是因爲uwsgi的原因,並不能看到更新,這時候就需要重啓uwsgi,在刷新瀏覽器就可以看到更新:
    sudo killall -9 uwsgi
    sudo --ini /data/helloworld/uwsgi.ini
  • 主要文件:views.py:管理邏輯,urls.py:管理域名訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章