阿里云服务器上的Django项目如何访问IP? 部署(Nginx + uwsgi)

环境说明

操作前己搭建好的环境:

  • 操作系统:阿里云的云服务器ESC, CentOS 7.7
  • 测试使用的是8000端口,记得提前在云控制平台上的安全组处设置开放该端口;
  • python 3.6.3(默认情况下linux自带python2,需要对旧版本进行升级)
  • Django 3.0.6
  • 部署好的Django项目: /home/firstDjango/

后面进行安装的环境 :

  • uwsgi 2.0.18
  • nginx 1.18.0

由于每个人的版本和环境配置存在区别,所以操作过程不可能完全一样,配置过程中出现差异/错误很正常,及时查找网络上的现有资料就可以解决99.9%的问题。

发现下述过程存在错误欢迎各位大佬们指正。
有些过程不是很详细,还是希望能帮助到大家。

Django 项目修改

1、编辑 /home/firstDjango/firstDjango/settings.py(如图):
在这里插入图片描述

  • 设置DEBUG为False;
  • 在ALLOWED_HOSTS默认的空列表中填入要使用的域名,这里测试填的是通配符*,真正上线部署的时候不建议填成的*,而是要填允许访问的主机域名。一般django用于做后端服务器,而前端会有一个域名。详情可见django官方文档。

2、编辑 /home/firstDjango/firstApp/views.py:
简单演示,在用户访问index页面后,得到一个显示“测试 测试”的页面。

from django.http import HttpResponse
def index(request):
    return HttpResponse('测试 测试')

3、编辑 /home/firstDjango/firstDjango/urls.py:

from django.contrib import admin
from django.urls import path
from firstApp.views import index
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', index)

uWSGI部署

1、安装uwsgi:

pip3 install uwsgi

2、编写一个简单的wsgi应用测试uwsgi是否能正常使用:
新建test.py文件,内容如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World!!!!"]     # python3 用这个
    # return "Hello World"            # python2 用这个

在test.py所在的路径下,运行:

uwsgi --http :8000 --wsgi-file test.py
  • http :8000表示使用http协议,端口号为8000,
  • wigi-file则表示要运行的wsgi应用程序文件。
    在浏览器内输入:服务器外网:8000,正常显示test.py脚本中返回显示的文本:
    在这里插入图片描述

3、静态文件收集:
在项目文件夹下,新建静态文件目录: static。
django的setting.py文件中,添加如下内容:

# 添加静态链接文件位置,该文件夹需要在服务器上创建
STATIC_ROOT = os.path.join(BASE_DIR, '../collected_static')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

4、uwsgi 配置文件:
在项目根目录下新建uwsgi的配置文件uwsgi.ini,添加如下配置:
注意:在添加该配置文件时一定要将注释删除,否则会报错!!!

[uwsgi]

socket = 127.0.0.1:8000           # uwsgi监听端口
chdir = /home/firstDjango         # django项目所在目录
wsgi-file = firstDjango/wsgi.py   # django项目wsgi文件
processes = 4
threads = 2
stats = 127.0.0.1:8000
module = firstDjango.wsgi
master = true                     # 启用主进程
max-requests = 2000               # 最大请求

uwsgi 指定配置文件启动django项目:

/usr/local/bin/uwsgi --ini /home/firstDjango/uwsgi.ini

在服务器中链接静态文件,可以看到多少文件链接成功则配置成功:

sudo python3 manage.py collectstatic

安装Nginx

安装:

sudo yum -y install nginx

查看nginx 配置文件路径:

nginx -t

修改 nginx 的配置文件 /etc/nginx/nginx.conf,添加server(一点要添加在http下面):

http {
     
        server {
     
        listen 80;
        server_name localhost;
        charset utf-8;
    
        location / {
          
          uwsgi_pass 127.0.0.1:8000;         # 监听端口和uwsgi相同
          include /etc/nginx/uwsgi_params;
        }
        location /static {
          
          alias /home/firstDjango/static/;  #uwsgi配置的静态链接的地址
        }
        error_page 404 /404.html;
            location = /40x.html {
     
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
     
        }
    }
}    

检查nginx是否配置成功:
在这里插入图片描述
启动nginx:

sudo systemctl start nginx 

动网站服务:(这里的0.0.0.0不能用公网IP替代):

python3 manage.py runserver 0.0.0.0:8000

在浏览器内输入:服务器外网:8000,显示:
阿里云服务器上的Django项目如何访问IP? 部署(Nginx + uwsgi)_第1张图片
输入:服务器外网:8000/index,显示:
在这里插入图片描述

ok!!!

你可能感兴趣的:(#,Django,python,django,nginx)