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退出运行,项目会在后端一直的跑着