热门标签 | 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 查看页面结果

 


推荐阅读
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Shell脚本编译器的全面解析与应用指南 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
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社区 版权所有