centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

八、小试牛刀

1.部署一个简单的uwsgi程序:

在/data目录下新建uwsgi_test.py程序,内容如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello uwsgi"]

启动该程序:

cd /data/env/pyweb/bin
source activate
uwsgi --http :9090 --wsgi-file uwsgi_test.py

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
程序运行效果:
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

2. 部署一个django demo站点

2.1、初始化站点

cd /data/wwwroot
source /data/env/pyweb/bin/activate
python /data/env/pyweb/bin/django-admin.py startproject mysite

新建项目成功后mysite文件夹下内容如下:

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

2.2、新建应用blog

python manage.py startapp blog

出现如下错误:

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
解决方法(修改sqlite源码中版本检查部分):
-1、获取site-package的路径
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • 2.修改sqlite源码中版本检查部分
site-packages/django/db/backends/sqlite3/base.py

2.3、修改settings.py

编辑项目里mysite/settings.py文件,

vi /data/wwwroot/mysite/mysite/settings.py
  • 在INSTALLED_APPS 列表里添加’blog’应用
  • 修改ALLOWED_HOSTS,[‘*’],可以让任何IP访问
    centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • TEMPLATES里添加模板路径os.path.join(BASE_DIR, ‘templates’)
    centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • 尾部追加静态文件路径
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
    )

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

2.4、添加模版文件

在templates下添加index.html文件,输入下面内容:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的网站</title>
    </head>
    <body>
        <h1>欢迎光临我的网站!</h1>
    </body>
</html>

该文件的路径如下:

vi /data/wwwroot/mystie/templates/index.html

2.5、配置URL

配置项目根目录下的url(将blog应用下的子url包含进来)

vi /data/wwwroot/mysite/mysite/urls.py
from django.contrib import admin
from django.urls import path
from django.urls.conf import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', include('blog.urls')),
]

配置blog子应用下的url

vi /data/wwwroot/mysite/blog/urls.py
from django.urls import path
from django.urls.resolvers import URLPattern
from . import views

urlpatterns = [
    path('blog/',views.index,name='index'),
]

2.6、编辑视图函数

编辑blog应用中的视图函数,返回静态html页面

from django.shortcuts import render

def index(request):
    return render(request,'index.html')

2. 7、测试

启动应用:

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
访问测试:
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
至此,一个django应用启动成功!

; 3. 配置uwsgi

网站项目路径是 /data/wwwroot/mysite/,在项目根目录下创建mysite.xml文件,此时项目结构见下图,输入如下内容:

<uwsgi>
   <socket>127.0.0.1:8000</socket><!-- 内部端口,自定义 不过需要跟nginx.conf中的端口号一致-->
   <chdir>/data/wwwroot/mysite/</chdir><!-- 项目路径 -->
   <module>mysite.wsgi</module>
   <processes>4</processes> <!-- 进程数 -->
   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

4. 配置nginx

nginx一般默认安装好的路径为/usr/local/nginx
在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。

cp nginx.conf nginx.conf.bak

然后打开nginx.conf,把原来的内容删除,直接加入以下内容:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       80;
        server_name  39.100.83.185;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000; // 需根mysite.xml文件中配置的端口号一致
           uwsgi_param UWSGI_SCRIPT mysite.wsgi;
           uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite;

        }
        location /static/ {
        alias data/wwwroot/mysite/static/;
        }
    }
}

执行./nginx -t命令先检查配置文件是否有错,

nginx -t

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
没有错就执行以下命令:
进入网站项目目录
cd /data/wwwroot/mysite/

执行下面命令:

uwsgi -x mysite.xml

以上步骤都没有出错的话,执行:

./nginx -s reload

重启nginx ,然后在浏览器里访问你的项目地址!

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

九、大显身手

1、部署后端django应用

  • django后端程序上传至/data/wwwroot目录下
scp -r scp -r /Users/xiangjun/Desktop/jieyueprj/jieyueadmin/assets_admin.zip root@39.100.83.185:/data/wwwroot/
unzip assets_admin.zip
  • 用VScode远程登陆到服务器并打开assets_admin文件夹
    centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • 创建数据库
    登陆进数据库后,使用以下命令创建数据库
create database assets;

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • 修改/data/wwwroot/assets_admin/assets_admin/settings.py中的数据库配置部分
    centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • 迁移数据库(就在物理机中操作)
pip install pymysql
cd /data/wwwroot/assets_admin
pip3 freeze > requirements.txt
pip3 install -r requirements.txt
python manage.py makemigrations
python manage.py migrate

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
查看数据表结构
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • 启动项目
cd /data/wwwroot/assets_admin
uwsgi --ini uwsgi.ini & nginx -s reload

nginx.conf中的注释用#,否则报如下错误!

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
启动后在浏览器访问:
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
成功访问到该接口!
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • lsof工具安装
yum install lsof

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
  • uwsgi启动与停止
    uWSGI 通过 xxx.ini 启动后会在相同目录下生成一个 xxx.pid 的文件,里面只有一行内容是 uWSGI 的主进程的进程号。
uWSGI 启动:
uwsgi --ini xxx.ini

uwsgi 重启:
uwsgi --reload xxx.pid

uwsgi 停止:
uwsgi --stop xxx.pid

2、部署vue项目

在mac终端下运行以下命令打包前端工程

npm run build
scp -r /Users/xiangjun/Desktop/jieyueprj/jieyueadmin/adminweb/dist.zip root@39.100.83.185:/data/wwwroot

后台管理页面访问
39.100.83.185:8080

  • 总结项目部署步骤:
    1、在生产环境安装配置相同版本的环境
    2、django项目迁移
scp -r /Users/xiangjun/Desktop/jieyueprj/jieyueadmin/adminweb/dist.zip root@39.100.83.185:/data/wwwroot

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

3、用uWSGI替代python3 manage.py runserve方法启动服务器

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
4、配置nginx反向代理

centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

5、用nginx 配置静态文件路径,解决静态路径问题
参考链接:https://blog.csdn.net/weixin_38650871/article/details/123297674

Original: https://blog.csdn.net/weixin_38650871/article/details/124368359
Author: smileapples
Title: centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733131/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球