发布一个Django项目
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; } }
改变世界,改变自己!