项目上线整体流程

news2024/11/14 6:08:06

文章目录

  • 一、上线前准备
  • 二、阿里云机器购买
  • 三、上线架构图
  • 四、安装Git
  • 五、云服务器安装MySQL
  • 六、云服务器安装Redis
  • 七、云服务器安装源码安装Python
  • 八、云服务器安装Uwsgi
  • 九、安装虚拟环境
  • 十、安装nginx
  • 十一、前端项目部署
  • 十二、后端项目部署
    • 1)Git拉取最新代码安装依赖
    • 2)配置数据库
    • 3)迁移数据库
    • 4)使用Uwsgi启动Django
  • 十三、后台样式处理
  • 十四、路飞后台管理样式处理

一、上线前准备

1.把项目中需要的文件保留住 防止被.gitignore文件忽略导致上传运行失败(Logs做成包__init__)
2.把测试的dev.py文件复制进prod.py中把里面数据都改成线上的配置即可(Debug=False, Alllwed_Hosts=['*'],数据库设置线上数据库,设置在配置文件中的路径改为线上)
3.新建一个文件manage用来作为上线的主要文件(里面的Django配置文件设置成线上的配置),线上迁移变成python manage_pro.py makemigrations
4.讲项目上传到git方便后期好做修改上传于拉取
5.重点配置后台和前台地址 修改成上线服务器的地址 提交Git
6.前端项目发送请求地址改为线上
7.前端项目进行打包 npm run build(会出现一个Dist文件夹)压缩成压缩文件上传至云服务器即可

二、阿里云机器购买

一般的项目都是上传至公司的服务器运行 个人开发可以去购买网络云机器 把自己的项目跑在上面即可
购买之后机器会得到一个公网Ip地址 任何人可以通过这个IP来访问到你的项目了
把项目的安全组端口打开(项目常用的端口80808033066379

在这里插入图片描述

三、上线架构图

在这里插入图片描述

四、安装Git

方式一
	yum install git -y
方式二:# 包含了git和一些别的开发需要软件
	yum -y groupinstall "Development tools" 
源码安装python、redis需要有别的依赖支持
	yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel -y

五、云服务器安装MySQL

1.根路径
	cd ~  cd
2.下载Mysql5.7
	wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3.安装mysql5.7
	yum -y install mysql57-community-release-el7-10.noarch.rpm
	yum install mysql-community-server --nogpgcheck。# 注意输入Y
4.启动mysql5.7
	systemctl start mysqld.service	# 开启
	systemctl status mysqld.service	# 查看状态
5.查看默认密码并登录
	grep "password" /var/log/mysqld.log		# 最后一句
	mysql -u root -p
	输入密码
6.修改密码
	ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'

六、云服务器安装Redis

1.根路径
	cd ~  cd
2.下载redis-5.0.5(源码包)
	wget http://download.redis.io/releases/redis-5.0.5.tar.gz
3.解压安装包
	tar -xf redis-5.0.5.tar.gz
4.进入目标文件
	cd redis-5.0.5
5.编译环境
	make
6.复制环境到指定路径完成安装
	cp -r /root/redis-5.0.5 /usr/local/redis
7.配置redis可以后台启动:修改下方内容
	vim /usr/local/redis/redis.conf
	修改内容: daemonize yes
	完成配置保存退出 esc :wq
8.建立软链接
	ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server	# 就可以在根路径使用命令
	ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli
9.后台运行redis
	cd /usr/local/redis
	redis-server ./redis.conf &
10.测试redis环境
	redis-cli
	ctrl+c结束
11.关闭redis服务
	pkill -f redis -9

七、云服务器安装源码安装Python

1.源码安装python,依赖一些第三方zlib* libffi-devel
	yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y
2.根路径
	cd ~  cd
3.下载Python3.8.6
	wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz
4.解压安装包
	tar -xf Python-3.8.6.tgz
5.进入目标文件
	cd Python-3.8.6
6.配置安装路径 /usr/local/python3
	./configure --prefix=/usr/local/python38
7.编译并安装(如果报错说明缺少依赖)
	make && make install
	yun install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y
8.建立软链接
	ln -s /usr/local/python38/bin/python3 /usr/bin/python3.8
	ln -s /usr/local/python38/bin/pip3 /usr/bin/python3.8
9.删除安装包于文件
	rm -rf Python-3.8.8
	rm -rf Python-3.8.8.tar.xz

八、云服务器安装Uwsgi

1.根路径
	cd ~  cd
2.安装uwsgi
	pip3.8 install uwsgi
3.建立软连接
	ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi

九、安装虚拟环境

1.安装依赖
	pip3.8 install virtualenv
	pip3.8 install -U virtualenvwrapper -i https://pypi.douban.com/simple/
	pip3.8 install virtualenvwrapper
	
	如果出现报错 敲以下命令
	python3.8 -m pip install --upgrade pip
	python3.8 -m pip install --upgrade setuptools
	pip3.8 install pbr
2.建立软连接
	ln -s /usr/local/python38/bin/virtualenv /usr/bin/virtualenv
3.配置虚拟环境
	vim ~/.bash_profile		# 复制以下内容
	VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
	source /usr/local/python38/bin/virtualenvwrapper.sh
4.保存退出
	esc :wq
5.更新配置文件内容
	source ~/.bash_profile
6.创建虚拟环境
	mkvirtualenv -p python3.8 luffy

十、安装nginx

1.根路径
	cd ~  cd
2.下载nginx1.13.7
	wget http://nginx.org/download/nginx-1.13.7.tar.gz
3.解压压缩包
	 tar -xf nginx-1.13.7.tar.gz
4.进入目标文件
	cd nginx-1.13.7
5.配置安装路径
	./configure --prefix=/usr/local/nginx
6.编译并安装
	make && make install
7.建立软链接
	ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
8.删除安装与文件
	cd ~
	rm -rf nginx-1.13.7
	rm -rf nginx-1.13.7.tar.xz
9.测试Nginx环境 
	nginx			# 启动
	nginx -s stop 	# 停止
10.起进程
	netstat -nlp | grep 80
11.查看进程
	ps aux | grep 80

十一、前端项目部署

1.把前端build的文件上传至服务器
2.安装软件
	yum install -y unzip
	yum install lrzsz -y
3.解压文件
	unzip dist.zip
4.移动并重命名
	mv ~/dist /home/html
5.备份nginx配置 更新配置 定制nginx做请求转发 负载均衡 静态文件代理
	cd /usr/local/nginx/conf
	mv nginx.cong nginx.conf.bak	# 备份
	vim nginx.conf
	
	events {
    worker_connections  1024;
	}
	http {
	    include       mime.types;
	    default_type  application/octet-stream;
	    sendfile        on;
	    server {
	        listen 80;
	        server_name  127.0.0.1;
	        charset utf-8;
	        location / {
	            root /home/html;
	            index index.html;
	        }
	    }
	} 
6.重新加载配置文件
	nginx -s reload
7.开启nginx与停止nginx
	nginx  nginx -s stop

十二、后端项目部署

1)Git拉取最新代码安装依赖

1. 在自己的项目里面把依赖 生成一个文件 上传push
	pip freeze > requirements.txt
	pip add.
	pip commit -m '提交'
	pip push origin master
2.克隆文件到云机器
	git clone 库地址
3.拉取项目
	git pull origin master
4.切换到luffy虚拟环境
	workon luffy
5.安装依赖
	pip install -r requirements.txt		# 如果出现安装不了的 编辑文件注释掉
6.安装mysqlclient
	yum install mysql-devel -y
	yum install python-devel -y
	rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
	pip install mysqlclient

2)配置数据库

1.管理员链接数据库
	mysql -u root -p
2.创建数据库
	create database luffy default charset=utf8;
3.设置权限账号密码:账号密码要与项目中配置的一致
	grant all privileges on luffy.* to '数据库名称'@'%' identified by '数据库密码';
	grant all privileges on luffy.* to '数据库名称'@'localhost' identified by '数据库密码';
	flush privileges # 刷新权限
4.退出mysql
	quit;

3)迁移数据库

1. python manage_pro.py makemigrations
2. python manage_pro.py migrate

4)使用Uwsgi启动Django

1.使用Uwsgi跑之前运行Django
	python manage_pro.py runserver 0.0.0.0:8000 	# 这个时候使用公网就可以访问到了
2.进行Uwsgi服务配置
	vim ./luffyapi.xml
		<uwsgi>
		   <socket>127.0.0.1:8888</socket>
		   <chdir>/home/luffy_api/</chdir>
		   <module>luffy_api.wsgi</module>
		   <processes>4</processes>
		   <daemonize>uwsgi.log</daemonize>
		</uwsgi>
3.启动uwsgi
	uwsgi -x ./luffyapi.xml
4.查看uwsgi进程
	ps aux | grep uwsgi
5.配置nginx 把8080的动态请求转发给8888端口
	vim /usr/local/nginx/conf/nginx.conf
		events {
		    worker_connections  1024;
		}
		http {
		    include       mime.types;
		    default_type  application/octet-stream;
		    sendfile        on;
		    server {
		        listen 80;
		        server_name  127.0.0.1;
		        charset utf-8;
		        location / {
		            root /home/html;
		            index index.html;
		        }
		    }
		    # 新增的server
		    server {
		        listen 8080;
		        server_name  127.0.0.1;
		        charset utf-8;
		        location / {
		           include uwsgi_params;
		           uwsgi_pass 127.0.0.1:8888;
		           uwsgi_param UWSGI_SCRIPT luffy_api.wsgi;
		           uwsgi_param UWSGI_CHDIR /home/luffy_api/;
		        }
		    }
		} 
6.重启nginx
	nginx -s reload

十三、后台样式处理

1. vim /usr/local/nginx/conf/nginx.conf
	
		events {
		    worker_connections  1024;
		}
		http {
		    include       mime.types;
		    default_type  application/octet-stream;
		    sendfile        on;
		    server {
		        listen 80;
		        server_name  127.0.0.1;
		        charset utf-8;
		        location / {
		            root /home/html;
		            index index.html;
		            try_files $uri $uri/ /index.html; # 解决vue路由问题
		        }
		    }
		    # 新增的server
		    server {
		        listen 8080;
		        server_name  127.0.0.1;
		        charset utf-8;
		        location / {
		           include uwsgi_params;
		           uwsgi_pass 127.0.0.1:8888;
		           uwsgi_param UWSGI_SCRIPT luffy_api.wsgi;
		           uwsgi_param UWSGI_CHDIR /home/luffy_api/;
		        }
		    }
		} 
2 .重启nginx
	nginx -s reload

十四、路飞后台管理样式处理

1.编辑线上配置文件
	vim /home/project/luffyapi/luffyapi/settings/pro.py
2.修改static配置新增STATIC_ROOT、STATICFILES_DIRS
	STATIC_URL = '/static/'
	STATIC_ROOT = '/home/luffy_api/luffy_api/static'  
	STATICFILES_DIRS = (os.path.join(BASE_DIR, "../static"),)
	esc
	:wq
3.项目目录下没有 static 文件夹需要新建
	mkdir /home/luffy_api/static
	mkdir /home/luffy_api/luffyapi/static		# 两个luffy都创建
4.完成静态文件迁移
	python /home/luffy_api/manage_pro.py collectstatic
5.修改nginx配置
	vim /usr/local/nginx/conf/nginx.conf
	
	events {
	    worker_connections  1024;
	}
	http {
	    include       mime.types;
	    default_type  application/octet-stream;
	    sendfile        on;
	    server {
	        listen 80;
	        server_name  127.0.0.1;
	        charset utf-8;
	        location / {
	            root /home/html;
	            index index.html;
	            try_files $uri $uri/ /index.html; # 解决vue路由问题
	        }
	    }
	    server {
	        listen 8080;
	        server_name  127.0.0.1;
	        charset utf-8;
	        location / {
	           include uwsgi_params;
	           uwsgi_pass 127.0.0.1:8888;
	           uwsgi_param UWSGI_SCRIPT luffyapi.wsgi;
	           uwsgi_param UWSGI_CHDIR /luffy_api/luffy_api/;
	        }
	        location /static {
	            alias /home/luffy_api/luffy_api/static;		# 添加了这一句
	        }
	    }
	
	}
	
6.重启nginx
	nginx -s reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker——容器命令介绍、创建Nginx容器与Redis容器

目录 一、容器命令 二、创建并运行Nginx容器 1.1 去dockerhub查看Nginx容器运行命令 1.2 怎么访问Nginx&#xff1f; 1.3 查看容器日志 1.4总结 三、进入Nginx容器并修改HTML内容 3.1 进入容器 3.2 进入Nginx的HTML所在目录 3.3 修改index.html文件&#xff08;容器内修…

零基础上手unity VR开发【将项目安装到Oculus头套中】

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;Unity VR 开发成神之路 --【着重解决VR项目开发难&#xff0c;国内资料匮乏的问题。从零入门&#xff0c;一步一个脚印&#xff0c;带你搞定VR开发! &#x1f63b;&#x1f63b;】 &#x1f4d…

leetcode39. 组合总和

文章目录题目思考代码和注释总结题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同…

【全志T113-S3_100ask】15-1 内核5.4驱动spi屏幕——ILI9341

【全志T113-S3_100ask】15-1 内核5.4驱动spi屏幕——ILI9341背景&#xff08;一&#xff09;spi设备树1、修改设备树2、完善设备树&#xff08;二&#xff09;使能内核&#xff08;三&#xff09;兼容性修改&#xff08;四&#xff09;测试背景 本来想直接驱动mipi屏幕的&…

香蕉派BPI-M6 采用深蕾半导体Vs680芯片设计,板载4G LPDDR4和16G eMMC存储

Banana PI BPI-M6 香蕉派BPI-M6是香蕉派社区在2022年推出的新一代单板计算机&#xff0c;它采用深蕾半导体(Synaptics) VS680四核Cortex-A73 (2.1GHz)和一个Cortex-M3处理器&#xff0c;Imagination GE9920 GPU。 NPU高达6 .75 tops算力。 板载4GB LPDDR4内存和16GB EMMC存储&a…

React 编写网页聊天界面(仿钉钉)

效果图 文件结构 对话框 一、 难点 对话框的难点主要在样式上 双方对话分布在左右长对话的长度不能超过整个对话框宽度的一半图片的大小最大不能超过整个对话框宽度的一半&#xff0c;并且需要按比例进行收缩 二、与要引入的插件 1、 阿里巴巴的iconfont 可以去这篇博客里面…

Qt QTreeWidget树形控件用法详解

文章目录QTreeWidget控件的创建QTreeWidget\QTreeView的关系和区别QTreeWidgetItem类QTreeWidget的实际应用1) 添加结点2) 给结点添加图标3) 给结点添加复选框4) 多列树形控件5) QTreeWidget中添加其它控件QTreeWidget信号和槽已剪辑自: http://c.biancheng.net/view/vip_9659.…

PS-HDR图像编辑与应用

每天一个PS/PR小技巧&#xff08;原理实践&#xff09;https://blog.csdn.net/tiao_god/article/details/124186746用PS打开一张HDR图像。 一般打开的图像会很黑&#xff0c;只有少部分光源处比较亮&#xff0c;这是因为默认显示时高动态范围的值都除以了一个统一的值来归一化…

TypeError: ‘module‘ object is not callable 报错解决

pycharm 控制台报错内容如下&#xff1a; pgsqlSearch.py 连接pgsql代码如下&#xff1a; import psycopg2 import ReportModelif __name__ __main__:# 创建连接对象conn psycopg2.connect(database"checkdb", user"postgres", password"postgres…

Flutter高仿微信-第21篇-支付-向商家付款(二维码)

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; /*** Author : wangning* Email : maoning20080809163.…

IntelliJ IDEA-Debug断点调试 看这篇文章就够了

详解IntelliJ IDEA-Debug断点调试 如今&#xff0c;IntelliJ IDEA 目前深受广大开发者喜爱&#xff0c;我们在实际开发工作中&#xff0c;不管是用来阅读源码还是在开发过程中都需要进行代码调试。 以下为大家准备了一篇关于IntelliJ IDEA-Debug断点调试的文章&#xff0c;如…

嗨 Jina,帮我画一幅高山流水图

本项目将 Whisper 与 Stable Diffusion 模型结合&#xff0c;可以直接完成语音生成图像的任务。用户可以语音输入一个短句&#xff0c;Whisper 会自动将语音转化为文本&#xff0c;接着&#xff0c;Stable Diffusion 会根据文本生成图像。 本项目基于 Jina AI MLOps 平台搭建&a…

一个Python爬虫案例,带你掌握xpath数据解析方法!

文章目录 xpath基本概念xpath解析原理环境安装如何实例化一个etree对象&#xff1a;xpath(‘xpath表达式’)xpath爬取58二手房实例爬取网址完整代码效果图xpath图片解析下载实例爬取网址完整代码效果图xpath爬取全国城市名称实例爬取网址完整代码效果图xpath爬取简历模板实例爬…

【pygame学习+实战】第一篇:游戏最小系统

14天学习训练营导师课程&#xff1a; 李宁《Python Pygame游戏开发入门与实战》 李宁《计算机视觉OpenCV Python项目实战》1 李宁《计算机视觉OpenCV Python项目实战》2 李宁《计算机视觉OpenCV Python项目实战》3 文章目录前言一、什么是pygame&#xff1f;1.1 学习pygame的用…

当我们谈论DDD时我们在谈论什么

谈论到 DDD&#xff0c;我们会聊事件风暴&#xff0c;会聊限界上下文&#xff0c;会聊六边形架构&#xff0c;会聊实体值对象。这些概念各不相同&#xff0c;相关的概念也很不一样&#xff0c;但都属于DDD的范畴。见过了很多DDD的讨论和工作坊&#xff0c;我发现大家唇枪舌剑无…

【同时完成超分和MEF】

Deep Coupled Feedback Network for Joint Exposure Fusion and Image Super-Resolution &#xff08;用于联合曝光融合和图像超分辨的深度耦合反馈网络&#xff09; 如今&#xff0c;人们已经习惯了拍照来记录自己的日常生活&#xff0c;然而&#xff0c;照片实际上与真实的…

SB30100LCT-ASEMI插件肖特基二极管SB30100LCT

编辑-Z SB30100LCT在TO-220AB封装里采用的2个芯片&#xff0c;其尺寸都是94MIL&#xff0c;是一款插件肖特基二极管。SB30100LCT的浪涌电流Ifsm为200A&#xff0c;漏电流(Ir)为12uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。SB30100LCT采用金属硅芯片材质&#xff0c;里…

解决OpenCV在Cmake时,因网络问题无法下载部分所需文件

解决OpenCV在Cmake时&#xff0c;因网络问题无法下载部分所需文件 在安装CUDA-Opecv进行Cmake的过程中&#xff0c;因为网络问题很多文件都无法下载。可以在你的opencv/.cache下可以看到&#xff0c;很多文件都是0kb的。这样肯定是不行的&#xff0c;我们要保证每个文件都要下…

深入 category 数据类型

目录 前言 1 作用 2 用法 2.1通过 pd.Categorical 创建 category 类型数据&#xff0c;同时指定可选项 2.2 通过 dtype 参数创建 category 类型数据 2.3 此时对数据进行排序 2.4 通过 CategoricalDtype 指定 category 数据的类型顺序 2.5 想要临时修改排序规则&…

低代码开发是未来软件开发的主流模式

低代码平台起始于20世纪80年代4GL“第四代编程语言”。2014年&#xff0c;Forrester research 提出低代码平台的概念&#xff0c;中国低代码市场进入发展期&#xff1b;2018 年&#xff0c;西门子收购低代码企业 Mendix 、美国低代码独角兽企业 Outsystem 获得 1.5 亿美元的融资…