云服务器部署Django+React Web项目

前言

本文记录了一次在腾讯云服务器部署Web项目的经历,项目前端使用React,后端使用Python的Django框架;

前端通过向后端端口发送请求调用后端API,数据通过json交换,使用Nginx分别部署前端和后端;

文章主要内容分为两部分:环境配置与项目启动,大致内容如下,可以通过的目录查看指定内容;

环境配置
  • 1、配置Django环境:依次安装MySQL数据库,Python,创建项目运行虚拟环境,安装uWSGI用来启动Django项目;
  • 2、配置React环境:安装Node.js,安装React,安装Nginx;
  • 3、安装Git用来推送代码;
项目启动
  • 1、使用uWSGI启动Django项目,包括数据库创建与配置,配置uwsgi.ini文件启动Django项目;
  • 2、使用Nginx启动前端项目,包含前端React项目打包,和nginx.conf文件配置;
环境配置
1、MySQL数据库

因为Django项目使用Mysql数据库,所以首先需要在Linux系统下安装Mysql服务并启动,然后根据项目配置文件创建数据库与用户;

  • 安装Mysql服务器:
-- 安装服务
yum install mariadb-server -y
-- 安装客户端
yum install mariadb -y
  • 启动与登录
-- 启动与停止
systemctl start mariadb
systemctl stop mariadb
-- 设置开机启动
systemctl enable mariadb
-- 初始登录
mysql -u root -p
  • 数据库创建、用户配置与Django项目数据迁移参考项目启动部分的数据库配置部分;
2、安装Python

要运行Django项目,首先需要安装Python环境,运行Django4.1版本需要Python版本在3.8及以上,具体安装可以参考以下这两篇文章,这里只做简单介绍:

以python3.9为例,在Linux上安装Python环境的大致步骤如下:

  • 1、安装下载工具与依赖
-- 安装wget文件下载工具
yum -y install wget
-- 安装gcc:编程语言编译器
yum -y install gcc
-- 安装依赖
yum -y install zlib zlib-devel 
yum -y install bzip2 bzip2-devel 
yum -y install openssl openssl-devel 
yum -y install ncurses ncurses-devel 
yum -y install sqlite sqlite-devel  
yum -y install readline readline-devel 
yum -y install tk tk-devel 
yum -y install gdbm gdbm-devel 
yum -y install xz lzma xz-devel
yum -y install libffi-devel
yum -y install mysql-devel
yum -y install python-devel
yum -y install libffi-devel
  • 2、下载Python-3.9.5安装包并解压安装
-- 下载Python-3.9.5.tgz
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
-- 解压安装包
tar -zxvf Python-3.9.5.tgz
-- 在home目录下,创建python3文件夹
mkdir -p /home/python3
-- 进入解压后python3.9.5目录
cd Python-3.9.5
-- 配置安装目录为/home/python3
./configure --prefix=/home/python3
-- 编译&编译安装
make && make install
  • 3、配置环境变量
mv /usr/bin/python3 /usr/bin/python3.bak
ln -s /home/python3/bin/python3.9 /usr/bin/python
  • 4、设置pip豆瓣源(可选)
-- 设置默认下载源
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple
-- 或者pip安装包时,添加链接
pip3 install package -i http://pypi.douban.com/simple/ --trusted-host pypi.douba.com
3、创建虚拟环境

使用virtualenv用于创建多个独立的Python环境,用来运行不同的项目

  • 1、安装virtualenv
pip3 install virtualenv
  • 2、创建虚拟环境
-- 在主目录下创建envs文件夹,在该文件夹下创建不同的环境
mkdir envs
virtualenv /envs/test --python=python3.9
  • 3、一些其他操作命令
-- 激活虚拟环境
source /envs/test/bin/activate
workon:列出虚拟环境列表
lsvirtualenv:同上
mkvirtualenv :新建虚拟环境
workon [虚拟环境名称]:切换虚拟环境
rmvirtualenv :删除虚拟环境
deactivate: 离开虚拟环境
4、安装Git

使用Git进行代码管理,便于将本地代码推动至服务器

  • 安装Git
pip3 install git
git clone SSH:线上库克隆到仓库
git checkout -b 分支名:新添加分支
git switch 切换分支
git branch 查看分支
​
-- 代码推送
git status: 查看当前状态
git add --a:添加全部文件到仓库
git add 单个文件:添加单个文件到仓库
git commit -m "":提交推送说明
git push origin master:推送代码到分支
​
-- 代码下载
git pull origin master:下载分支代码到本地
5、安装React

首先需要安装Node.js, 安装步骤如下:

  • 创建并进入到node目录
mkdir /usr/local/node && cd /usr/local/node
  • 下载node.js( 以node-v16.17.0为例)
curl -O https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz
  • 解压文件
tar -vxf node-v16.17.0-linux-x64.tar.xz
cd node-v16.17.0-linux-x6
  • 配置环境变量
ln -s /usr/local/node/node-v16.17.0-linux-x64/bin/npm /usr/local/bin
ln -s /usr/local/node/node-v16.17.0-linux-x64/bin/node /usr/local/bin
  • 测试,若正常显示版本号,则安装成功
node -v
npm -v

接下来安装React

  • 安装React:
npm install -g create-react-app
npm install react react-dom
6、安装uwsgi

在Django项目测试与开发中,常用自带的runserver方法启动项目,在项目真正部署时,常用uwsgi启动Django项目,uwsgi安装步骤如下:

  • 下载与安装
-- 可以先激活虚拟环境,在虚拟环境下安装
​
-- 1.安装:
pip3 install uwsgi
 
-- 2.建立软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
 
-- 3.查看uwsgi版本
uwsgi --version
7、安装Nginx

在Web项目部署时,使用Nginx接收并处理静态请求,一旦收到动态请求,则转发给uWSGI,再由uWSGI交给Django进行处理

  • nginx安装步骤如下:
-- 1、安装
yum install nginx -y
​
-- 2.查看nginx版本
nginx -v
项目启动
1、使用uwsgi启动后端
  • 在项目根目录下创建uwsgi.ini文件,设置uwsgi属性,文件配置参考:
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8080
#http=127.0.0.1:8080
#配置项目路径,项目的所在目录
chdir=/data/Code/my_web/backend
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=my_blog/wsgi.py
# 要是用的WSGI模块
module=log_analysis.wsgi
#配置启动管理主进程
master=True
#配置启动的进程数
processes=2
#配置每个进程的线程数 
threads=2
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log
#虚拟环境地址
virtualenv=/envs/blog
#新增:设置最大缓冲区为32K
buffer-size=32768
  • 使用:
-- 启动uwsgi
uwsgi  --ini  uwsgi.ini
​
-- 停止运行uwsgi,通过包含主进程编号的文件设置停止项目
uwsgi --stop uwsgi.pid xxx
​
-- 重启uwsgi
uwsgi --reload uwsgi.pid xxx
​
-- 查看进程
ps -ef | grep uwsgi
kill -9 pid
​
-- 查看日志
tail -20f uwsgi.log

2、使用Nginx启动前端
# ginx进程数,建议设置为等于CPU总核心数
worker_processes  2;
​
events {
    # 一个 worker_processe 允许的最大并发连接数量
    worker_connections  1024;
}
​
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        # nginx监听端口
        listen   80;
        # 设置为自己的域名,没有域名修改为本机IP地址
        server_name  127.0.0.1;
        charset utf-8;
​
        # 设置默认静态文件目录
        location / {
            # 定义服务器默认网站根目录位置,将打包好React的目录放在这里
            root   /data/Code/my_web/frontend/build;;    
            # 定义首页索引文件的名称
            index  index.html index.htm;
            # 页面刷新时根据url地址寻找页面
            try_files  $uri $uri/ /index.html;
        }
       
       location  ~ /api/* {
            # 设置关联 uwsgi
            include uwsgi_params;
            # 端口要和uwsgi里配置的一样
            uwsgi_pass 127.0.0.1:8080;
            client_max_body_size 100m;
            proxy_connect_timeout 20;
            proxy_send_timeout 20;
            proxy_read_timeout 20;
       }
       
       error_page   500 502 503 504  /50x.html;        
       location = /50x.html {            
            root   html;        
        }    
    }
}

  • 使用:
-- 启动nginx
nginx
​
-- 查看nginx状态
systemctl status nginx
 
-- 开启nginx服务
systemctl start nginx 
​
-- 关闭nginx服务
systemctl stop nginx
​
-- 关闭nginx
nginx -s stop
​
-- 重启nignx
systemctl restart nginx

-- 查看nginx进程
ps -ef | grep nginx
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前后端分离是一种软件架构模式,它前端和后端的开发分离开来,使得前端和后端可以独立进行开发和部署。在前后端分离的架构中,前端负责展示数据和用户交互,后端负责处理业务逻辑和数据存储。 Django是一个使用Python语言开发的高级Web框架,它提供了一套完整的开发工具和库,用于快速构建高效的Web应用程序。在Django项目中,可以采用前后端分离的方式进行开发。 在前后端分离的Django项目中,前端通常使用JavaScript框架(如React、Vue.js等)来实现用户界面和交互逻辑。前端通过HTTP请求与后端进行通信,后端提供API接口来处理请求并返回数据。前端通过这些API接口获取数据并进行展示。 具体实现前后端分离的Django项目可以按照以下步骤进行: 1. 定义API接口:在Django中使用Django REST framework等库定义API接口,包括URL路由、请求方法和参数等。 2. 实现API视图:编写处理API请求的视图函数或类,处理请求参数、业务逻辑和数据查询等。 3. 序列化数据:使用序列化器将数据库模型或其他数据结构转换为JSON格式,以便前端可以解析和使用。 4. 前端开:使用JavaScript框架进行前端开发,发送HTTP请求调用后端API接口,并将返回的数据进行展示和交互。 5. 部署和测试:将前端代码和后端代码分别部署到不同的服务器或服务上,并进行测试和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值