• django + Vue项目上线部署


    django + Vue项目上线部署

    0.安装包下载linux系统

    • node.js

      wget https://nodejs.org/download/release/v10.16.2/node-v10.16.2-linux-x64.tar.gz
      # 解压node包
      tar -zxvf node-v8.6.0-linux-x64.tar.gz
      # 配置环境变量,修改/etc/profile,可以直接使用npm和node命令
      PATH=$PATH:/opt/node-v10.16.2-linux-x64/bin
      # 验证node npm
      node -v
      npm -v
      
    • linux与windows互传文件工具

      yum -y install lrzsz
      
    • zip包解压工具

      yum -y install unzip
      

    1.Vue部署

    1.将vue项目router 下index.js的mode改为'history'
    2.将封装axios模块的请求ip更改:
    	- windows可以直接修改
    	- linux修改:sed -i 's/127.0.0.1/182.92.100.141/g' /opt/vue_project/westmanager/src/plugins/http.js
    3.项目打包:
    	windows:npm run build
    	linux: npm run build
    4.生成dist文件将,dist文件压缩zip包,拽入虚拟机,执行:unzip dist.zip
    5.等待nginx配置
    

    2.python安装

    1.安装python前库的环境
    yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
    2.下载解压python安装源码包
    wget https://www.python.org/ftp/python/3.6.9/Python-3.6.8.tar.xz
    xz -d Python-3.6.8.tar.xz
    tar -xf Python-3.8.9.tar
    3.编译安装,cd到python源码包目录执行:
    ./configure --prefix=/opt/python3/
    make && make install
    4.配置python3的环境变量,cd /etc/profile
    export PATH=/opt/python3/bin:$PATH
    source /etc/profile
    

    3.虚拟环境配置

    1.下载虚拟环境安装包
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
    2.创建一个叫west_env虚拟环境
    virtualenv --python=python3 west_env
    3.进入虚拟环境相关操作:
    	#激活虚拟环境
        source west_env/bin/activate
        #退出虚拟环境
        deactivate
    4.在虚拟环境中下载项目依赖包
    	- 首先导出项目依赖包,在所在项目中:
    	pip3 freeze > requirements.txt
    	- 然后将requirements.txt拽入虚拟机中
    	- 在虚拟环境执行pip3 install -r requirements.txt
    

    4.django项目

    1.settings更改配置:
    	ALLOW_HOSTS = ['*']
    	DEBUG = False
    2.项目压缩zip,拽入虚拟机,执行unzip 项目名   解压
    

    5.uwsgi配置

    1.虚拟环境中下载uwsgi
    	pip3 install -i https://pypi.douban.com/simple uwsgi
    2.创建uwsgi.ini文件
    	touch uwsgi.ini
    3.配置uwsgi
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    # 指定项目的绝对路径的第一层路径(很重要)
    chdir = /opt/west_coast__company_project
    
    # Django's wsgi file
    # 指定项目的 wsgi.py文件
    # 写入相对路径即可,这个参数是以chdir参数为相对路径
    module = west_coast__company_project.wsgi
    # the virtualenv (full path)
    # 写入虚拟环境解释器的绝对路径
    home = /opt/west_env
    # process-related settings
    # master
    master = true
    # maximum number of worker processes
    # 指定uwsgi启动的进程个数(机器配置好的话可以写多点)
    processes = 2
    # the socket (use the full path to be safe
    #socket指的是:uwsgi启动一个socket连接,当你使用nginx+uwsgi的时候,使用socket参数
    socket = 0.0.0.0:9000
    
    # 这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
    #http = 0.0.0.0:9000
    
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum = true
    #日志记录配置
    daemonize = uwsgi.log
    
    4.启动uwsgi,在uwsgi.ini目录下:uwsgi --ini  uwsgi.ini 
    

    6.redis配置

    1.下载redis
    	yum install redis
    2.redis.conf配置,如果需要远程连接
    	- 将 bind 127.0.0.1 注释掉
    	- protected-mode 将yes改成no
    3.启动redis
    	systemctl start redis
    

    7.Mysql配置

    1.下载数据库
    	yum install mariadb-server mariadb -y
    2.将windows数据库备份到一个文件中:
    	mysqldump -uroot -p123 库名 > J:自己起名.sql
    3.将导出备份文件west.sql拽入虚拟机内
    4.启动数据库:systemctl start mariadb
    5.进入数据库给数据库root设置密码123
    set password for root@localhost = password("123");
    6.创建一个库,要求名字与项目连接库名字一样
    	create database 库名
    	use 库名
    7.导入数据表,数据
    	source /opt/自己起名.sql
    

    8.nginx配置

    1.下载nginx:
    	yum install nginx
    2.更改nginx文件:vim /etc/nginx/nginx.conf
    3.配置:
    server {
        	#监听80端口
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  182.92.100.141;
            root         /usr/share/nginx/html;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            location / {
                	# 指定vue打包dist文件路经
                    root /opt/dist;
                    index index.html;
                	# 保证页面刷新时候,不会出现404
                    try_files $uri $uri/ /index.html;
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }
    server {
        	#监听8000端口 前端发送ajax请求就用8000端口
            listen 8000;
            # 本机公网ip
            server_name 182.92.100.141;
            location / {
                # 转到后端配置端口,也就是uwsgi配置端口
                uwsgi_pass 127.0.0.1:9000;
                include    uwsgi_params;
            }
        }
    4.启动nginx
    	/usr/sbin/nginx
    	# 停止
    	/usr/sbin/nginx -s stop
        # 重启
        /usr/sbin/nginx -s reload
    
    • 遇到坑:开发环境下通过 django-cors-headers 解决跨域问题,但是部署完之后又出现跨域问题,就可以解决了。

      1.在Vue前端封装axios加一个头参数
      axios.defaults.headers['Access-Control-Allow-Origin'] = '*'
      2.后端配置允许头参数
      CORS_ALLOW_HEADERS = (
      	...,
      	'Access-Control-Allow-Origin'
      )
      
    • nginx解决跨域问题配置

      转载nginx配置跨域请求

  • 相关阅读:
    一天一个shell实例(1)文本中n个出现频率最高的单词(转)
    JNDI全攻略(一)(转)
    JNDI 学习(转)
    JNDI全攻略(二)(转)
    C#开发系列 文章索引
    AppControls
    JSF系列 文章索引
    [转载]DELPHI组件安装全攻略
    什么是有价值的人生
    [转载]InnoSetup5.2.3啊风增强版 安装代码
  • 原文地址:https://www.cnblogs.com/xujunkai/p/12327975.html
Copyright © 2020-2023  润新知