基于Ubuntu16.04服务器的Nginx+Django+Uwsgi配置

本文详细介绍了如何在Ubuntu 16.04上部署Python Django应用,并配置Nginx及uWSGI,实现高效的Web应用服务。从环境搭建、安装配置到实战技巧,帮助读者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      本人最近想研究一个基于python的网站,在配置服务器的过程中遇到了很多的困难,经过了2天两夜的奋战,终于绕过了各种坑,现在将我总结的成果分享给大家,希望有同样经历的朋友能够少走弯路,共同进步!(ps:有错误的地方希望大家更正,一起交流!)


1.   基于VMware的Ubuntu16.04的安装,很简单几乎一步安装。

2.   安装python3.5   

添加 PPA
sudo add-apt-repository ppa:fkrull/deadsnakes

升级
sudo apt-get update

安装python

sudo apt-get install python3.5

python 3.5替代2.7设为默认:

1)删除usr/bin/目录下的默认python link文件


2)sudo ln -s /usr/bin/python3.5 /usr/bin/python

3.安装pip

sudo apt-get install python3-pip

出错解决:

sudo dpkg -C 
sudo apt-get clean
sudo apt-get update
sudo apt-get install --reinstall python-minimal python-lockfile
 

(分析: 原因是,我们在将python2.7升级到python3.3时,只是将/usr/local/bin目录下修改了(使用ln -s 或者其他),然而我们的配置目录并没有修改..)

 

使用pip:

Pip3 install SomePackage                (这里一定要pip3

 

4.安装django

 sudo apt-getinstall python-django(这个不行)

sudo pip3 install Django     (直接用pip3来安装!)

  检测安装成功:

   python

import django

django.get_version()

  建立项目 

django-admin startproject 项目的名称(在要放项目的目录下打开终端,复制命令)

  建立app

  python manage.py startapp  app名称            (在上步骤所建立的项目目录下打开终端运行命令)

  运行 Django 服务

  python manage.py runserver

  设置setting.py    host 文件

 ALLOWED_HOSTS = ['192.168.216.131','localhost', '127.0.0.1']     (这是格式)

 

5.Ubuntu设置静态ip

Ifconfig    查看网络状态,这里网卡型号很重要 这里 ens33

netstat –rn     查看 route -n

 

1、目录:   vi /etc/network/interfaces

添加内容:

autoens33           
iface
ens33inet static
address
192.168.216.131   
netmask 255.255.255.0

gateway 192.168.216.2
dns-nameserver
192.168.216.2

 

(这里en33是网卡型号,是上面得到的。。 dns-nameserver 192.168.216.2这句一定需要有,

因为以前是DHCP解析,所以会自动分配DNS 服务器地址。

而一旦设置为静态IP后就没有自动获取到DNS服务器了,需要自己设置一个

设置完重启电脑后,/etc/resolv.conf文件中会自动添加 nameserver 192.168.216.2

 

2 重启网络

sudo/etc/init.d/networking restart

 

6.运行app

python manage.py startapp polls
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

polls/views.py

fromdjango.httpimport HttpResponse

 

 

defindex(request):

return HttpResponse("Hello, world. You're at the polls index.")

 

polls/urls.py

fromdjango.urlsimport path

 

from.import views

 

urlpatterns= [

    path('', views.index, name='index'),

]

 

mysite/urls.py

fromdjango.urlsimport include, path

fromdjango.contribimport admin

 

urlpatterns= [

    path('polls/', include('polls.urls')),

    path('admin/', admin.site.urls),

]

 

测试成功!

 

 

7.安装Nginx

sudo apt-get install nginx

 

基本命令:

/etc/init.d/nginx start  #启动

/etc/init.d/nginx stop  #关闭

/etc/init.d/nginx restart  #重启

 

修改Nginx默认端口号,打开/etc/nginx/nginx.conf 文件,修改端口号。(可以修改也可以不修改)

如果报错:尝试运行命令   ps -aux | grep apt 
                      查看   哪个端口  占用这apt的程序
                             然后      kill -9 端口号(利用rootkill
                            cd /var/lib/dpkg   
sudo mv info info.bak
sudo mkdir info
最后最好在升级源    sudo apt-get update
再运行:    sudo apt-get install nginx  安装nignx

重新运行 nignx     /etc/init.d/nginx restart

在浏览器输入 127.0.0.1  测试nginx运行成功

8.安装Uwsgi

 pip3install uwsgi

测试uwsgi,创建test.py文件:

def application(env, start_response):

    start_response('200 OK', [('Content-Type','text/html')])

    return [b"HelloWorld"]

 

通过uwsgi运行该文件。

fnngj@ubuntu:~/pydj$ uwsgi --http :8001 --wsgi-filetest.py

 

 

 

9.连接他们三

在项目目录下 建立文档myweb_uwsgi.ini   (与manage.py同级)

#myweb_uwsgi.ini file

[uwsgi]

 

#Django-related settings

 

socket= :8002

 

#the base directory (full path)

chdir           = /guoju/project/shiyan

 

#Django s wsgi file

module          = shiyan.wsgi

 

#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

 

在目录下运行:

uwsgi --ini myweb_uwsgi.ini

 

修改nginx

打开/etc/nginx/nginx.conf文件,添加如下内容。

server {

   listen         8099;

   server_name    127.0.0.1

   charset UTF-8;

   access_log     /var/log/nginx/myweb_access.log;

   error_log      /var/log/nginx/myweb_error.log;

 

   client_max_body_size 75M;

 

    location/ {

       include uwsgi_params;

       uwsgi_pass 127.0.0.1:8000;

       uwsgi_read_timeout 2;

   }  

   location /static {

       expires 30d;

       autoindex on;

       add_header Cache-Control private;

       alias /home/fnngj/pydj/myweb/static/;

     }

 }

 

include uwsgi_params;

uwsgi_pass 127.0.0.1:8000;

include 必须指定为uwsgi_params;而uwsgi_pass指的本机IP端口号myweb_uwsgi.ini配置中的文件中的必须一致。

 

现在重新启动nginx,翻看上面重启动nginx的命令。然后,访问:http://127.0.0.1:8099/   (端口自定义,默认80)

 

 

至此如果没有其他问题的话,就全部配置完毕了


后记:在成功运行的过程中,有一个很蹩脚的问题就是,后台django在更新setting文件或者view文件的过程中,前台的nginx的网页不随着更新,原因是uwsgi在传递过程中的问题,为了提高效率默认关闭了刷新数据的功能。

解决办法:

1 把uwsgi端口关了,然后重启,以后每次后台数据一更新就重新reload(不推荐,很傻的方法)。

2 在myweb_uwsgi.ini文件中,最后一行加上py-autoreload   = 1   以后每次后台更新,前台自动更新。(推荐此方法,一劳永逸!)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗洛伊佛

如果能启发到您,请给点动力,谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值