热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:新的项目部署

本文由编程笔记#小编为大家整理,主要介绍了新的项目部署相关的知识,希望对你有一定的参考价值。一.首先准备python3,uwsgiwsgi(web服
本文由编程笔记#小编为大家整理,主要介绍了新的项目部署相关的知识,希望对你有一定的参考价值。



一.首先准备

python3,uwsgi wsgi(web服务网关接口,就是一个实现了python web应用的协议),virtualenvwrapper

前端代码,vue代码,

nginx (一个是nginx对静态文件处理的优秀性能,一个是nginx的反向代理功能,以及nginx的默认80端口,访问nginx的80端口,就能反向代理到应用的8000端口)

mysql,redis 购物车订单信息,supervisor 进程管理工具

 


环境准备

1.部署环境准备,准备python3和虚拟环境解释器,virtualenvwrapper

pip3 install -i https://pypi.douban.com/simple virtualenvwrapper

2.修改python3的环境变量,写入到/etc/profile中

PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ruby/bin/:/root/bin

3.修改~/.bashrc

写入变量

4.新建一个虚拟环境 s15vuedrf

mkvirtualenv s15vuedrf

5.准备前后端代码

wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip

wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip

如果代码在本地,传到服务器 使用 lrzsz 和xftp工具

6.解压缩代码

unzip luffy_boy.zip unzip

07-luffy_project_01.zip


7.从vue前端代码搞起

1.准备node打包环境,下载是为了帮助解压文件

wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

2.解压缩node包,配置环境变量,使用npm和node命令

? 3.检测node和npm

? node -v ? npm -v

4.安装vue项目所需的包

 

cd /opt/s15vuedrf/07-luffy_project_01

注意,解压时 需要将 /07-luffy_project_01 下的 /07-luffy_project_01 删掉在进行以下操作

输入npm install

npm run build

? 这两条都正确配置之后,就会生成一个 dist 静态文件目录,整个项目的前端内容和index.html都在这里了

注意,在进行解压后,需要将所有的文件默认ip 127.0.0.1 改成 当前的本地ip,否则会拒绝访问

在 /opt/luffy/07-luffy_project_01/src/restful/api 通过sed "s/127.0.0.1/192.168.125.129/g"  api 即可

5.等待nginx加载这个 dist文件夹


8.部署后端代码所需的环境

1.激活虚拟环境

workon s15vuedrf

2.通过一条命令,导出本地的所有软件包依赖

pip3 freeze > requirements.txt  #这不没有可忽略,直接手动创建文件requirements.txt 手写依赖包


certifi==2018.11.29
chardet
==3.0.4
crypto
==1.4.1
Django
==2.1.4
django
-redis==4.10.0
django
-rest-framework==0.1.0
djangorestframework
==3.9.0
idna
==2.8
Naked
==0.1.31
pycrypto
==2.6.1
pytz
==2018.7
PyYAML
==3.13
redis
==3.0.1
requests
==2.21.0
shellescape
==3.4.1
urllib3
==1.24.1
uWSGI
==2.0.17.1

 

3.将这个requirements.txt 传至到服务器,在服务器的新虚拟环境中,安装这个文件,就能安装所有的软件包了

pip3 install -r requirements.txt

 

4.准备uwsgi 支持高并发的启动python项目(注意uwsgi不支持静态文件的解析,必须用nginx去处理静态文件)


    1.安装uwsgi

pip3 install -i https://pypi.douban.com/simple uwsgi

    2.学习uwsgi的使用方法

通过uwsgi启动一个python web文件

uwsgi --http :8000 --wsgi-file   s15testuwsgi.py

--http 指定http协议

--wsgi-file  指定一个python文件

通过uwsgi启动django项目,并且支持热加载项目,不重启项目,自动生效 新的 后端代码

uwsgi --http  :8000 --module s15drf.wsgi    --py-autoreload=1

#这里启动django时,需要创建一个django.py文件验证,

#验证固定格式

uwsgi --http 默认端口号 --module 项目名称.wsgi.py #项目名称时wsgi.py的上一级

技术分享图片

 

--module 指定找到django项目的wsgi.py文件

  5.使用uwsgi的配置文件,启动项目

 1.创建一个uwsgi.ini配置文件,写入参数信息

 touch uwsgi.ini


1 [uwsgi]
2 # Django-related settings
3 # the base directory (full path)
4 #指定项目的绝对路径的第一层路径!!!!!!!!!!!!!!!!!!!!!!!!
5 chdir = /opt/s15vuedrf/luffy_boy/
6 # Django‘s wsgi file
7 # 指定项目的 wsgi.py文件!!!!!!!!!!!!
8 # 写入相对路径即可,这个参数是以 chdir参数为相对路径
9 module = luffy_boy.wsgi
10
11 # the virtualenv (full path)
12 # 写入虚拟环境解释器的 绝对路径!!!!!!
13 home = /root/Envs/s15vuedrf
14 # process-related settings
15 # master
16 master = true
17 # maximum number of worker processes
18 #指定uwsgi启动的进程个数
19 processes = 1
20
21 #这个参数及其重要!!!!!!
22 #这个参数及其重要!!!!!!
23 #这个参数及其重要!!!!!!
24 #这个参数及其重要!!!!!!
25 # the socket (use the full path to be safe
26 #socket指的是,uwsgi启动一个socket连接,当你使用nginx+uwsgi的时候,使用socket参数
27 socket = 0.0.0.0:8000
28
29 #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
30 #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
31 #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
32 #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
33 #这个参数是uwsgi启动一个http连接,当你不用nginx只用uwsgi的时候,使用这个参数
34 #http = 0.0.0.0:8000
35
36 # ... with appropriate permissions - may be needed
37 # chmod-socket = 664
38 # clear environment on exit
39 vacuum = true

我的int


[uwsgi]
# Django-related settings
#
the base directory (full path)
chdir = /opt/luffy/luffy_boy
# Django‘s wsgi file
module = luffy_boy.wsgi
# the virtualenv (full path)
home = /root/Envs/city
# process-related settings
#
master
master = true
# maximum number of worker processes
processes = 1
# the socket (use the full path to be safe
socket = 1.0.0.0:9000
# clear environment on exit
#
http = 0.0.0.0:8000
vacuum = true
#后台运行uwsgi
#
daemOnize=yes
~
~

6.使用uwsgi配置文件启动项目

uwsgi --ini  uwsgi.ini

这个时候也会启动项目后端,

注意,若是启动不了,把uwsgi进程关掉重启,有可能占:8000端口

若是提示没有django模块,重新创建一个虚拟机,只需重新下载requirements.txt 下的环境配置


supervisor进程管理工具

1.将linux进程运行在后台的方法有哪些

第一个,命令后面加上 & 符号 ? python manage.py runserver &

第二个 使用nohup命令

第三个使用进程管理工具

2.安装supervisor,使用python2的包管理工具 easy_install ,注意,此时要退出虚拟环境!!!!

2.安装supervisor,使用python2的包管理工具 easy_install ,注意,此时要退出虚拟环境!!!!

2.安装supervisor,使用python2的包管理工具 easy_install ,注意,此时要退出虚拟环境!!!!

如果没有命令,使用以下命令,安装

yum install python-setuptools

easy_install supervisor

3.通过命令,生成一个配置文件,这个文件就是写入你要管理的进程任务

echo_supervisord_conf > /etc/supervisor.conf

4.编辑这个配置文件,写入操作 django项目的 命令 G

vim /etc/supervisor.conf

直接到最底行,写入以下配置

[program:s15luffy] #名字无所谓

command=/root/Envs/s15vuedrf/bin/uwsgi --ini /opt/s15vuedrf/luffy_boy/s15drf/uwsgi.ini


[program:s15luffy]
command
= /opt/python3.6.5/bin/uwsgi --ini /opt/luffy/uwsgi.ini
#command=后接uwsgi 的pwd 通过which uwsgi 获取 --ini
#
第二个是创建的uwsgi.ini 绝对路径

 

5.启动supervisord服务端,指定配置文件启动

supervisord -c /etc/supervisor.conf

6.通过supervisorctl管理任

supervisorctl -c /etc/supervisor.conf

注意,在启动时需要将uwsgi进程关闭,在杀死/supervisor的进程,再重启,uwsgi不和与supervisor一起

7.supervisor管理django进程的命令如下 supervisorctl直接输入命令会进入交互式的操作界面


stop s15luffy

start s15luffy

status s15luffy


8.启动luffy的后端代码

注意:其实配置supervisor后端管理是极大方便了启动后端项目并管理的作用

 


配置nginx步骤如下

1.编译安装nginx

2.nginx.conf配置如下

 

#第一个server虚拟主机是为了找到vue的dist文件, 找到路飞的index.html


server{
listen
80; #浏览器vue默认80断后,访问域名直接默认显示界面
server_name 192.168.125.129;#ip地址
location /{
# deny 192.168.125.*/;
#
当请求来自于 192.168.13.79/的时候,直接进入以下location,然后找到vue的dist/index.html
root /opt/luffy/07-luffy_project_01/dist; #vue的文件
index index.html;

}



}

#由于vue发送的接口数据地址是 192.168.13.79:8000 我们还得再准备一个入口server
server {
listen
8000;
server_name
192.168.125.129;
#当接收到接口数据时,请求url是 192.168.13.79:8000 就进入如下location
#charset koi8-r;

#access_log logs/host.access.log main;

location
/ {
uwsgi_pass
192.168.125.129:9000; #这里是nginx将请求转发给 uwsgi启动的 9000端口

include
/opt/nginx112/conf/uwsgi_params; # include 就是一个“引入的作用”,就是将外部一个文件的参数,导入到当前的nginx.conf中生效
#root /opt/myserver/oumei;
#index index.html;
}

 

 3.启动nginx ./sbin/nginx

直接启动 此时可以访问 192.168.13.79 查看页面结果

 


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
author-avatar
火山哥哥5237
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有