发布一个Django项目
一.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper
1.修改python3的环境变量
PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ruby/bin/:/root/bin
#前面加上/opt/python36/bin
2.下载虚拟环境解释器
在根目录下
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
#如果第一步的环境变量没配置,pip3不能用
3.编辑 ~./bashrc
vim ~./bashrc
写入以下两行代码
export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #指定python解释器
source /opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
读取文件,使文件生效
source ~/.bashrc
4.新建一个虚拟环境
在根目录下
mkvirtualenv s15vuedrf
5.准备前后端代码
(1)代码不在本地的情况
在/opt/下创建一个s15vuedrf文件夹,用来放置前后端代码
cd /opt/
mkdir s15vuedrf
下载前后端代码
django代码
wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip
vue代码
wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip
得到
解压代码
unzip 07-luffy_project_01.zip
unzip luffy_boy.zip
注:unzip如果不能用
yum install unzip
yum install zip
(2)代码在本地的情况
使用xftp工具
填写主机ip地址后,写入Linux的用户名密码即可实现Linux与windows的文件互传
将文件传到指定位置即可
二.前端代码上线
1.准备node打包环境
在s15vuedrf文件夹在下载node
wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
得到
解压该node包
tar -zxvf node-v8.6.0-linux-x64.tar.gz
得到
进入该文件夹中的bin目录
cd node-v8.6.0-linux-x64
cd bin
查看该路径
pwd
#得到 /opt/s15vuedrf/node-v8.6.0-linux-x64/bin
将该路径添加到环境变量中
vim /etc/profile
在最后加入/opt/s15vuedrf/node-v8.6.0-linux-x64/bin
读取文件,使文件生效
source /etc/profile
检测node和npm是否能正常使用
node -v
npm -v
2.安装vue的环境依赖(所需的包)
进入到前端代码包中
cd 07-luffy_project_01
注:查看该目录下的所有文件,如果有package-lock.json和node_modules文件,删掉再进行下一步
rm -rf package-lock.json
rm -rf node_modules
安装依赖包
npm install
编译打包
npm run build
以上两条都正确之后,就会生成一个dist静态文件,整个前端项目的内容以及index.html都在这里了
3.注意: src/restful/api.js文件中,前端所写的axios请求可能都是向本地服务器请求,需要改成服务器的地址,由于更改的地方较多,所以用sed语法
将所有的地址更改
sed -i "s/127.0.0.1/192.168.177.130/g" src/restful/api.js
检查是否更改成功
vim src/restful/api.js
三.后端代码上线
1.准备工作
进入到后端代码包中
cd luffy_boy
注:如果新开了一个窗口,虚拟环境没有激活,要激活虚拟环境
workon s15vuedrf
2.解决后端软件包依赖问题
(1)方式一:一次性安装所有的依赖包
导出本地软件包依赖
pip3 freeze > requirements.txt
将这个requirements.txt 传至到服务器,在服务器的新虚拟环境中,安装这个文件,就能安装所有的软件包了
pip3 install -r requirements.txt
(2)方式二:根据报错一个个安装依赖包
根据这一句的报错逐个安装依赖包,直到执行这句不报错,证明所有的依赖包安装完毕,后端项目能够运行
python3 manage.py runserver
pip3 install -i https://pypi.douban.com/simple django
pip3 install -i https://pypi.douban.com/simple requests
pip3 install -i https://pypi.douban.com/simple django-redis
pip3 install -i https://pypi.douban.com/simple pycrypto
......
出现下图样式,表示安装成功
3.准备uwsgi,支持高并发的启动python项目
下载uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi
确保uwsgi来自虚拟环境
which uwsgi
得到的路径应该在s15vuedrf下
注:uwsgi的使用方式
(1)通过uwsgi启动一个python web文件
定义一个配置文件并编写
touch s15testuwsgi.py
vim s15testuwsgi.py 在配置文件s15testuwsgi.py中写入,并保存退出
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3 uwsgi命令启动(使用该文件启动)
uwsgi --http :8000 --wsgi-file s15testuwsgi.py 浏览器访问
192.168.177.1300:8000
(2)通过uwsgi启动django
创建一个Django项目
django-admin startproject djangotry
进入该Django项目
cd djangotry/
通过uwsgi启动django
uwsgi --http :8000 --module djangotry.wsgi
访问本地192.168.177.130
得到Django基础页面证明访问成功
注:uwsgi的热加载(不重启项目,自动生效新的后端代码)
uwsgi --http :8000 --module djangotry.wsgi --py-authoreload=1
使用uwsgi的配置文件启动项目
每次都写这样一句话"uwsgi --http :8000 --module djangotry.wsgi --py-authoreload=1",太麻烦,且启动的配置参数会更长,使用项目启动文件更方便
创建一个uwsgi.ini配置文件,写入参数信息
touch uwsgi.ini
参数信息
[uwsgi]
# Django-related settings
# the base directory (full path)
#指定项目的绝对路径的第一层路径!!!!!!
chdir = /opt/s15vuedrf/luffy_boy/ # Django's wsgi file
#指定项目的wsgi.py文件,写入相对路径即可,以chdir参数为相对路径
module =luffy_boy.wsgi # the virtualenv (full path)
#写入虚拟环境解释器的绝对路径
home = /root/Envs/s15vuedrf
# process-related settings
# master
master = true # maximum number of worker processes
#指定uwsgi启动的进程个数
processes = 5 #socket指的是,uwsgi启动一个socket连接,当使用nginx+uwsgi时,使用socket参数!!!!!(uwsgi不支持静态文件的解析,必须用nginx处理静态文件)
# the socket (use the full path to be safe
socket = 0.0.0.0:9000 #http是指uwsgi启动一个http连接,不用nginx,只用uwsgi的时候,使用这个参数!!!!!
#http =0.0.0.0:8000 # ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true #后台运行
daemonize=yes 使用uwsgi的配置文件启动项目
uwsgi --ini uwsgi.ini
4.supervisor进程管理工具的使用
注:将Linux进程运行在后台的命令有哪些???
1.在命令后加上"&"符号
python manage.py runserver &
2.使用nohup命令
3.使用进程管理工具
使用python2的包管理工具下载easy_install,注意,此时要退出虚拟环境
easy_install supervisor
如果没有easy_install命令,使用如下命令安装
yum install python-setuptools
通过echo_supervisord_conf命令,生成一个配置文件,文件中就是要管理的进程任务
echo_supervisord_conf > /etc/supervisor.conf
编辑配置文件,写入操作django项目的 命令
vim /etc/supervisor.conf
直接到最底行,写入以下配置
[program:s15luffy]
#uwsgi可执行文件的地址,以及uwsgi.ini的地址
command=/root/Envs/s15vuedrf/bin/uwsgi --ini /opt/s15vuedrf/luffy_boy/uwsgi.ini 启动supervisord服务端,指定配置文件启动
supervisord -c /etc/supervisor.conf
通过supervisorctl管理任务
supervisorctl -c /etc/supervisor.conf
supervisor管理django进程的命令如下
supervisorctl直接输入命令会进入交互式的操作界面
> stop s15luffy
> start s15luffy
> status s15luffy
启动luffy的后端代码
5.nginx的配置
编译安装nginx(略)
nginx的主配置文件nginx.conf的配置
#第一个server虚拟主机是为了找到vue的dist文件, 找到路飞的index.html
server {
listen 80;
server_name 192.168.13.79; #当请求来自于 192.168.13.79/的时候,直接进入以下location,然后找到vue的dist/index.html
location / {
root /opt/s15vuedrf/07-luffy_project_01/dist;
index index.html;
} } #由于vue发送的接口数据地址是 192.168.13.79:8000 我们还得再准备一个入口server
server {
listen 8000;
server_name 192.168.13.79; #当接收到接口数据时,请求url是 192.168.13.79:8000 就进入如下location
location / {
#这里是nginx将请求转发给 uwsgi启动的 9000端口
uwsgi_pass 192.168.13.79:9000;
# include 就是一个“引入的作用”,就是将外部一个文件的参数,导入到当前的nginx.conf中生效
include /opt/nginx112/conf/uwsgi_params;
}
}
发布一个Django项目的更多相关文章
- Python开发入门与实战2-第一个Django项目
2.第一个Django项目 上一章节我们完成了python,django和数据库等运行环境的安装,现在我们来创建第一个django project吧,迈出使用django开发应用的第一步. 2.1.创 ...
- 第一个Django项目及部署到Sina App Engine
Sina App Engine简称SAE,是个比较好的网站托管平台,目前说是全面免费,其实就是每个人分配很小的资源配额,在一定的使用范围内不用消耗云豆(SAE计费方式),对于个人学习和研究足够了,同类 ...
- 如何创建一个Django项目
Django 软件框架 软件框架是由其中的各个模块组成,每个模块负责特定的功能,模块与模块之间相互协作来完成软件开发. MVC简介 MVC框架的核心思想是:解耦,让不同的代码块之间降低耦合,增强代码的 ...
- 创建第一个Django项目
第一个Django项目 命令行下使用如下命令创建一个名为"mysite"的Django项目: django-admin startproject mysite 这将会在当前位置创建 ...
- Django之真正创建一个django项目
真正创建一个django项目 1 创建Django项目 :new-project 2 创建APP : python manager.py startapp app01 3 setting 配 ...
- 使用pycharm创建自己的第一个django项目
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...
- 初学者用pycharm创建一个django项目和一个app时需要注意的事项
如何新建一个djiango项目: 1.在pycharm中点击File,选择new project,点击djiango,在右面的Location中将untitile改为你的项目名,其余部分注意见下图: ...
- 基于centos7,python3.7新建第一个Django项目
为了能更好的了解到整个网站的服务情况,需要了解前端,后端之间的联系,这时候就得需要用到Django框架,基于Django自身带的模板,它可以更好的接收用户发出请求,接下来讲解一下新建第一个Django ...
- 创建一个Django项目
创建一个django项目: 1. django-admin startproject student_manage(项目名) 2. cd student_manage python manage.p ...
随机推荐
- 避免单线程单元 (STA) COM 组件
默认情况下,ASP.NET 不允许任何 STA COM 组件在页面内运行.若要运行它们,必须在 .aspx 文件内将 ASPCompat=true 属性包含在 @ Page 指令中.这样就将执行用的线 ...
- Extension of write anywhere file system layout
A file system layout apportions an underlying physical volume into one or more virtual volumes (vvol ...
- jQuery中对象的构建
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 编程军规 —— Java 篇
提高代码的可读性,规避容易出现的错误. 0. 共性 对象或引用的非空性判断: 强制类型转换时: 函数返回时: 函数的输入参数: 任务执行的成功或失败判断: 文件打开:网络连接:数据库连接: 内存申请: ...
- 简明Python3教程 7.运算符和表达式
简介 你写的大多数逻辑行都包含表达式.表达式的一个简单例子是2 + 3.一个表达式可分为操作符和操作数两部分. 操作符的功能是执行一项任务:操作符可由一个符号或关键字代表,如+ .操作符需要数据以供执 ...
- C. Adidas vs Adivon
C. Adidas vs Adivon Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer ...
- XenServer重置存储管理SR至Ext3
Xenserver默认安装到本地磁盘,它是基于本地磁盘上Linux的LVM所管理,在xenserver创建为LVM Typer的本地SR,xenserver在LVM上不支持Thin Provision ...
- Git学习笔记(两)
删除文件 假设需要从Git删除文件,我们必须从删除列表中的跟踪文件(从临时区域中删除).然后提交.可以使用git rm工作订单完成.联合司令部从工作区删除指定的文件.以后就不会出如今未跟踪文件清单中. ...
- [转帖 ]MySQL 5.7 新特性 JSON
MySQL 5.7 新特性 JSON 的创建,插入,查询,更新 作者: 我不是鱼 (2016-08-31 16:13)分类: MySQL 标签: MySQL JSON MySQL JSON 应用 ...
- Xamarin 设置可接受的版本
一共分三个版本,编译版本.最小版本.目标版本(最适应) 一般编译使用最新的版本,目标版本选择最主流的 参考资料 https://docs.microsoft.com/en-us/xamarin/and ...