欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django前后端未分离项目部署

程序员文章站 2022-06-11 13:53:51
...

django+nginx+uwsgi 项目部署到linux服务端

1.配置supervisro工具

注意要退出虚拟环境
注意要退出虚拟环境
注意要退出虚拟环境

	1.安装easy_install 
	pip3是python3的软件包管理工具
	easy_install 是python2的软件包管理工具
	
	yum install python-setuptools

	2.安装supervisor
	easy_install supervisor
	
	3.创建supervisor的配置文件
	
	echo_supervisord_conf >  /etc/supervisor.conf 

	4.修改supervisor的配置文件,添加启动uwsgi的命令
	
	supervisor其实就是帮咱们执行了,需要手动执行的命令而已 
	vim /etc/supervisor.conf
	写入如下内容,在最底部写
[program:s18crm]
command=/root/Envs/nginx_crm/bin/uwsgi  --ini /opt/Crm_Project/uwsgi.ini
stopasgroup=true
killasgroup=true



	5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
	5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
	5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
	5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出
	
supervisord -c  /etc/supervisor.conf   #这是启动supervisor服务端命令

supervisorctl -c /etc/supervisor.conf 	#这是supervisor客户端管理命令

	6.学习supervisor的命令
	
	status s18crm #查看状态
	start s18crm  #启动任务
	stop  s18crm #停止任务
	
	start all  
	stop  all  #启停所有的任务

2.linux 下安装python的虚拟环境,virtualenv pipenv

1.安安装python的虚拟环境
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

2.是由cd 切换到一个位置,然后通过命令创建虚拟环境
virtualenv --no-site-packages --python=python3     venv1   #创建一个干净隔离的虚拟环境,且以python3为复制本体,虚拟环境名叫做venv1
	--no-site-packages  创建干净隔离的python虚拟环境
	--python=python3  
3.查看当前虚拟环境的PATH 变量
[[email protected] opt]# echo $PATH
/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

4.**虚拟环境,再次查看环境变量
        在虚拟环境的bin目录下输入命令  
        进入虚拟环境
        source ./activate
        退出虚拟环境 
        deactivate
5.检查是否成功安装虚拟环境
	which python3
	which pip3
	pip3 list
	
6.退出虚拟环境,再检查python3解释器路径
        退出命令
        deactivate

7.闯将两个虚拟环境 venv1 venv2  分别运行django1 django2
    1.**venv1 创建django1.11.14
    [[email protected] opt]# source   venv1/bin/activate
    2.安装django
    pip3 install -i https://pypi.douban.com/simple  django==1.11.14

    3.创建django项目 运行 
    django-admin startproject mydjango114


    4.创建venv2,创建django2版本
    virtualenv --no-site-packages --python=python3     venv2 

    **venv2
    source   venv2/bin/activate
    下载django2版本,且创建django2项目
    pip3 install -i https://pypi.douban.com/simple  django
    创建django项目 运行 
    django-admin startproject mydjango21

3.将项目拷贝到服务器上,安装virtualenvwrapper工具

	1.安装 
		pip3 install virtualenvwrapper
	2.配置个人环境变量配置文件,每次登陆都启动virtualenvwrapper工具
		vim ~/.bashrc 
	3.写入加载变量,使得virtualenvwrapper每次开机可使用
		export WORKON_HOME=~/Envs   #设置virtualenv的统一管理目录
		export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'  

		#添加virtualenvwrapper的参数,生成干净隔绝的环境
		export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3     #指定python解释器

		source /opt/python36/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
		
		
	4.退出回话,重新登录,查看工具是否安装
	
	5.学习virtualenvwrapper工具的命令
		1.创建新的虚拟环境
		mkvirtualenv mycrm
		
		2.切换多个虚拟环境
		workon 虚拟环境的名字
		
		3.列出所有的虚拟环境目录
		lsvirtualenv 
		
		4.进入当前**的虚拟环境的目录
		cdvirtualenv 

4.创建一个虚拟环境

安装 virtualenv 和 virtualenvwrapper

  • 创建虚拟环境 mkvirtualenv 环境名
  • 进入虚拟环境 workon 环境名
  • 进入虚拟环境目录 cdvirtualenv

5.将windows本地项目所需的依赖包导出,服务器安装项目依赖包

将解释器中所有模块导出到文件中:`pip3 freeze > requirements.txt`
将这个 requirements.txt  文件传输到服务器上,进行安装,就可以自动解决所有模块问题
pip3 install -r requirements.txt  

指定豆瓣源:pip3 install  -r requirements.txt -i https://pypi.douban.com/simple 

6.虚拟环境下安装mariadb服务端

安装linux的mariadb服务端
		yum install mariadb-server   mariadb  mysql  -y
#启动mysql服务端
		systemctl start mariadb
#检查mysql是否启动
		1.查进程
		ps -ef |grep mariadb 
		2.查端口
		netstat -tunlp |grep 3306 

将数据从windows本地导入到linux服务端
  • 方法一

    #在window中通过命令导出数据库信息
           mysqldump -u root -p --all-databases > db.dump
    #找到这个db.dump传输到Linux中即可
    mysql -uroot -p  < /opt/Crm_Project/alldb.dump 
    
  • 方法二

    windows 下导入数据:
    导出:`mysqldump -u root -p 数据库名 > 文件路径(d:/db/test.sql)`
    linux环境下导入文件:
    mysql> create database abc;      # 创建数据库
    mysql> use abc;                  # 使用已创建的数据库 
    mysql> set names utf8;           # 设置编码
    mysql> source /home/abc/abc.sql  # 导入备份数据库
    

7.此时我们可以进行简单的测试,看看代码在linux服务端是否能正常运行,若能运行我们在使用nginx+uwsgi

  • 项目简单配置

    第一步
    废话不多说,第一步通过xftp软件把Django项目文件传到服务器上。
    
    第二步
    在服务器中安装Django需要的环境和我所需要的Python第三方库。
    
    第三步
    以上所有步骤完成后,还需要进行一步操作,这是我经历的一个坑。 打开Django文件目录中的settings.py ,把ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=["*"]。
    
    最后一步
    在服务器中通过cd切换到项目文件有manage.py所在的目录,输入命令:
    python3 manage.py runserver 0.0.0.0:8000
    然后按下回车,在浏览器中输入:该服务器IP地址:8000,大功告成!
    

8.项目静态文件收集

  • 编辑项目的settings.py 写入如下参数

    STATIC_ROOT= '/opt/miniStatic' # 指定一个目录放置静态文件

  • 执行命令,收集crm所有的静态文件

    python manage.py collectstatic

8.如果在游览器能正常的访问linux服务器,此时我们安装uwsgi+nginx

  • nginx的安装及配置

    1.在linux上是否 通过yum安装了nginx
    	rpm -qi nginx
    2.安装nginx之前需要安装依赖包
    	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 openssl openssl-devel -y
    3.源代码编译安装tenginx 	
    	1.下载淘宝nginx的源代码包
    	wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz
    	2.解压缩源代码
    	tar -zxvf tengine-2.3.0.tar.gz
    	3.切换进入nginx源代码目录 进行编译安装
    	cd  tengine-2.3.0
    	4.释放编译文件,指定安装路径
    	./configure --prefix=/opt/s18tngx/
    	5.开始编译且安装
    	make && make install 
    	6.卸载之前通过yum安装的nginx
    	yum remove nginx -y 
    	7.查看nginx的安装目录,有哪些东西
            [[email protected] s18tngx]# ls
            conf  存放nginx的配置文件目录的
            html 	存放前端文件的地儿
            logs 	存放nginx日志文件的目录
            sbin	存放nginx的可执行命令
        8.配置nginx的环境变量,支持快捷启动
            vim /etc/profile 
            写入
                			PATH="/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/s18tngx/sbin"
    	9.启动nginx
    	直接输入nginx命令
    	
    	
    
  • nginx反向代理配置文件修改

    代码如下
            location / {
            uwsgi_pass  0.0.0.0:8000;
            include uwsgi_params;
            }
            #这个location是解决静态文件的问题的
    location /static  {
    #alias参数 就是将/static转化为/opt/miniStatic ,也就找到了我们所有的静态文件
    alias /opt/miniStatic;
    }
    	
    
    • 重启nginx

      nginx -s reload

  • uwsgi安装及配置

    pip3 install uwsgi
    
  • 在项目文件下创建uwsgi.ini 启动文件

    cd 项目文件目录
    touch uwsgi.ini
    

    编辑uwsgi.ini文件

    # Django-related settings
    # the base directory (full path)
    #填写项目的绝对路径(第一层路径)
    chdir           = /opt/educaton0407
    # Django's wsgi file
    #填写crm第二层目录下的wsgi.py文件的路径
    module          = mini0407.wsgi
    # the virtualenv (full path)
    #填写虚拟环境的绝对路径
    home            = /root/Envs/education
    
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    #基于uwsgi的多进程,根据cpu来优化 
    processes       = 4
    # the socket (use the full path to be safe
    #如果你用了nginx反向代理,就填写socket参数
    #如果你用了nginx反向代理,就填写socket参数
    #如果你用了nginx反向代理,就填写socket参数
    #如果你用了nginx反向代理,就填写socket参数
    #如果你用了nginx反向代理,就填写socket参数
    socket          = 0.0.0.0:8000
    
    #如果你没用nginx,想直接通过浏览器测试后端,使用http 
    #http = 0.0.0.0:8000
    
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    

    启动uwsgi命令

    uwsgi --ini uwsgi.ini
    

    此时uwsgi正在运行,只要不用ctrl+c退出运行,项目会在后端一直的跑着