博客部署教程

news2024/11/14 16:27:44

1:安装Docker

  • yum install -y yum-utils device-mapper-persistent-data lvm2 //安装必要工具
  • yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //设置yum源
  • yum install -y docker-ce //下载docker
  • systemctl start docker //启动docker

2:docker安装mysql

2.1:docker pull mysql //下载MySQL镜像

在这里插入图片描述

2.2:设置密码并启动mysql:docker run --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -d mysql

2.3:这里提示一下后续我们这里下载的mysql要和dockerfile中的FROM对应,一定要下载jdk8的镜像,这里可以首先docker search java8

在这里插入图片描述

2.4:然后docker pull williamyeh/java8,跟后续讲到dockerfile我会详细讲解

2.5:我门打开本地电脑上面的navicat或其他工具。远程连接到服务器数据库,新建一个ry-vue-blog或者自己喜欢的其他名字都可,然后运行sql文件,一定要先创数据库后运行sql文件。连接不上的可能是没有开通端口,在下面rabbitmq说到了具体开哪些端口

在这里插入图片描述

3:docker安装Redis

1:

在这里插入图片描述

2:设置密码并启动redisdocker run --name redis --restart=always -p 6379:6379 -d redis --requirepass "密码"

4:安装RabbitMQ

在这里插入图片描述

4.1:执行命令:docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management 启动rabbitmq默认账号密码都是guest

4.2:下载完后打开自己购买服务器的地方,将安全组端口打开,开放端口实例:

在这里插入图片描述

4.3:安装完rabbitmq后需要手动登录创建队列和交换机:这里队列就是直接在下面名字输入对应的就好,Durability就是默认的Durable,如果选项还有type就默认的就好不用管

在这里插入图片描述

4.4 手动创建交换机:自己创建的交换机Type这里换成fanout,名字与上面圈主的一一对应

在这里插入图片描述

在这里插入图片描述

4.5:绑定队列与交换机:点进去队列:然后输出交换机名字绑定

在这里插入图片描述
在这里插入图片描述

4.6:绑定关系

artile:maxwell
email:send
email_queue: email_exchange
maxwell_quene:maxwell_exchange

5:以上基本上除了nginx,其余环境安装完成,接下来进入后端项目配置:

5.1:拉git地址后,用idea打开项目,首先修改配置:dev是本地环境,prod是部署环境,prod要改成你自己购买服务器的地址

在这里插入图片描述
在这里插入图片描述

这里同理:将prod改成自己服务器的地址,devlocalhost就自己本地就可

在这里插入图片描述

将配置加载切换成prod打包:dev换成prod

在这里插入图片描述

打包:先clean后package,会在zhi-admin下面生成target文件,里面会有zhi-admin.jar,只需要这个jar包即可,然后下面后续会说放到哪里

在这里插入图片描述

6:前端打包:自动生成dist文件

6.1前端后台:

在这里插入图片描述

6.2前端前台:同理在这里插入图片描述

6.3使用远程连接工具连接服务器,我这里使用xftp+xshell:在usr/local下面新建vue文件夹:

在这里插入图片描述

6.4:新建admin+blog文件夹,将之前打包的两个dist里面的文件分别放入对应的文件夹中,admin:后台 blog:前台,记得是吧dist里面的文件传进去,不是整个dist文件夹

在这里插入图片描述
在这里插入图片描述

7:dockerfile的填写:

7.1:新建docker文件夹:里面有三个文件,第一个就放前面打包好的zhi-admin.jar,第二个是Dockerfile,第三个是blog-start.sh:

在这里插入图片描述

7.2:Dockerfile文件:这个文件不要后缀,全部名字就是Dockerfile(这里FROM的后面写的这个要和上面docker下载的mysql镜像对应!)

FROM williamyeh/java8:latest
VOLUME /tmp
ADD zhi-admin.jar zhi-admin.jar       
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/zhi-admin.jar"] 
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone


7.3:blog-start.sh:

#源jar路径  
SOURCE_PATH=/usr/local/docker
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=zhi-admin.jar
TAG=latest
SERVER_PORT=8080
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME:$TAG" | awk '{print $3}')
if [ -n "$CID" ]; then
  echo "存在容器$SERVER_NAME, CID-$CID"
  docker stop $CID
  docker rm $CID
fi
# 构建docker镜像
if [ -n "$IID" ]; then
  echo "存在$SERVER_NAME:$TAG镜像,IID=$IID"
  docker rmi $IID
else
  echo "不存在$SERVER_NAME:$TAG镜像,开始构建镜像"
  cd $SOURCE_PATH
  docker build -t $SERVER_NAME:$TAG .
fi
# 运行docker容器
docker run --name $SERVER_NAME -v /usr/local/upload:/usr/local/upload -d -p $SERVER_PORT:$SERVER_PORT $SERVER_NAME:$TAG
echo "$SERVER_NAME容器创建完成"

7.4然后在docker目录下运行命令: sh ./blog-start.sh 开始自动构建镜像

在这里插入图片描述

7.5docker ps查看:先忽略这里的nginx,后续会说到,首先看这里有没有出现zhi-admin.jar,如果没有出现,走下面的操作:

在这里插入图片描述

7.6没有出现则首先docker images:

在这里插入图片描述

7.7看到zhi-admin.jar后,我们运行:docker run -p 8080:8080 -d zhi-admin.jar

7.8然后再次docker ps就可以看到有了

8:下载与配置nginx:

8.1:执行命令:docker pull nginx

8.2:在上面下载的同时,在usr/local下新建nginx文件夹,里面新建nginx.conf:

在这里插入图片描述

在这里插入图片描述

8.3:nginx.conf:里面 “你的服务器ip”改成自己的ip

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    client_max_body_size     50m;
    client_body_buffer_size  10m; 
    client_header_timeout    1m;
    client_body_timeout      1m;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_comp_level  4;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;

server {
        listen       80;
        server_name  你的服务器ip;
     
        location / {		
            root   /usr/local/vue/blog;
            index  index.html index.htm; 
            try_files $uri $uri/ /index.html;	
        }
			
	location ^~ /api/ {		
            proxy_pass http:// 你的服务器ip:8080/;
	    proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;						
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
		
    }
	
server {
        listen       81;
        server_name   你的服务器ip;
     
        location / {		
            root   /usr/local/vue/admin;
            index  index.html index.htm; 
            try_files $uri $uri/ /index.html;	
        }
			
	location ^~ /prod-api/ {		
            proxy_pass http:// 你的服务器ip:8080/;
	    proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;						
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
		
    }

server {
        listen       82;
        server_name  你的服务器ip;
     
        location / {
          proxy_pass http:/ 你的服务器ip:8080/websocket;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "Upgrade";
          proxy_set_header Host $host:$server_port;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
       }
	
    }

server {
        listen       83;
        server_name   你的服务器ip;
     
        location / {		
          root /usr/local/upload/; 
        }		
		
    }
 
 }

8.4:docker运行nginx:

docker run --name nginx --restart=always -p 80:80 -p 443:443 -d -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/vue:/usr/local/vue -v /usr/local/upload:/usr/local/upload nginx

然后搜索自己的IP地址就可以看到自己博客已经上线了,后台是ip地址:81

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

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

相关文章

excel函数技巧:两个查询函数的用法比较 下篇

VLOOKUP和LOOKUP这对高频函数的较量注定是场持久战。在前两个回合的较量中,VLOOKUP占据上风,此番更要乘胜追击。新一轮较量,即刻开战!***ROUND 03 交叉查询什么是交叉查询?我们可以通过一个查找值查找多个字段。如果被…

Android 深入系统完全讲解(26)

AudioTrack 构造过程 每一个音频流对应着一个 AudioTrack 类的一个实例,每个 AudioTrack 会在创建时注册到 AudioFlinger 中,由 AudioFlinger 把所有的 AudioTrack 进行混合(Mixer),然后输送到 AudioHardware 中进行播…

spice auth过程分析

1、客户端选择认证方法 Client authentication method selection抓包分析{Authentication selected by client: Spice (1)}代码分析spice_channel_send_link(channel);if (!spice_channel_recv_link_hdr(channel) ||!spice_channel_recv_link_msg(channel) ||!spice_channel_re…

Allegro如何设计线圈操作指导

Allegro如何设计线圈操作指导 在做PCB设计的时候,在特殊场合时候需要设计线圈,Allegro支持快速设计出线圈,如下图 具体操作如下 选择File选择Change Editor

实现树莓派homeassistant OS远程控制内网穿透--ddnsto教程

一、两种穿透服务 1、molohub 一种是论坛提供的molohub,但是可能因为自己这边的网络原因在配置过程中一直无法连接到服务器,无法绑定github,因此放弃molohub的方法。如下图所示。molohub教程如下,不再赘述。 molohub的Github教程…

ejson4cpp——一个使用极致简单且性能可比rapidjson的C++json解析库

文章目录ejson4cpp快速开始要求安装与引入开始使用常见用法API介绍通过命名风格识别API宏定义FROM_JSON_FUNC&FROM_JSON_FRIEND_FUNCTO_JSON_FUNC&TO_JSON_FRIEND_FUNCAUTO_GEN_NON_INTRUSIVE&AUTO_GEN_INTRUSIVEENABLE_JSON_COUTFromJSON系列函数参数说明使用示例…

WireShark从入门到精通

一、什么是WireShark?Wireshark 是一个开源抓包工具或者叫网络嗅探器,用于分析网络流量和分析数据包。其实WireShark以前的名字不叫WireShark,以前都叫做Ethereal,于1998 年首次开发,直到 2006 年才改为 Wireshark。Wi…

powerdns 系列之二 PowerDNS Authoritative Server

PowerDNS Authoritative Server 权威服务器,直接查询数据库去尝试解析,数据库中若不存在此记录,则直接返回空结果。 os: centos 7.8.2003 pnds: 4.7.3 安装 pdns 安装 pdns auth yum install epel-release yum-plugin-priorities curl -o…

Alibaba微服务组件Nacos注册中心学习笔记

1. 什么是 Nacos 什么是 Nacos官方网站:什么是 Nacos 官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 集 注册中心配置中心服务管理 平台 Nacos 的关键特性包括: 服务发现和服务健康监测 动态配置服…

Vue前端项目【尚品汇】

Vue前端项目【尚品汇】1. 说明2. 对项目创建3.结构4. 项目运行起来时,浏览器自动打开5.关闭ESLint校验功能1. 说明 学习完了Vue后并没有一个整体的项目,让我明白前端的工程化开发。因此在B站找了一个开源的项目进行练手,并在这里进行记录。 …

深度学习理论介绍

在机器学习理论介绍中说过,深度学习是机器学习的一种技术,下面我们具体来看下。 1、 定义 深度学习首先是一种机器学习。深度学习的基础,叫做神经网络,这本身就是一种机器学习算法。 深度神经网络(Deep Neural Netwo…

产品小白如何从模仿开始学习Axure

​有一些小伙伴有这样的疑问,如果想学习产品经理的知识,但是从来对产品经理完全没有认识,该怎样去开始学习呢? 对于这种情况的小伙伴,有个建议是可以先从axure的学习入手。 那么问题又来了,应该如何开始axu…

只靠石墨烯电池,撑不起两轮电动车的“高端梦”

文|智能相对论作者|陈明涛在两轮电动车上,“石墨烯”电池已经成为品牌标配。雅迪、爱玛、台铃等都有搭载石墨烯电池的车型,雅迪的TTFAR石墨烯电池已经迭代到第4代,而第3代Plus电池搭载在冠能3 E9 PRO上完成量产上市;爱玛、台铃都和…

(侯捷C++)1.1面向对象高级编程(上)

一.C编程简介 1.C历史 B语言 → C语言 → C语言(new C → C with Class → C) 面向对象的语言:C、Java、C# 2.C演化 C 98(1.0) → C 03 → C 11(2.0) → C 14 Class两个经典分类:有指针(Complex类为例&#xff0…

python经典例题

目录标题1,计算数字的阶乘2,区间内的所有素数3,求前n个数字的平方和4,移除列表中的多个元素5,列表去重6,对简单列表元素排序7,对复杂列表元素排序8,读取成绩问卷并排序-读取文件&…

在MySQL5基础上安装MySQL8解压版安装服务指向MySQL5的问题

Windows10在MySQL5解压版基础上安装MySQL8解压版后服务启动失败 1. 遇到的问题: MySQL8目录下没有生成data文件夹启动服务失败,右键服务属性,可执行文件的路径竟然是MySQL目录下的日志文件在MySQL5目录下,日志内容会提示读取了M…

【C语言】动态内存实现通讯录(malloc,calloc,realloc)

目录 一、为什么要存在动态内存开辟 二、动态内存函数 2.1 malloc 2.1.1 函数介绍 2.1.2 函数的使用 2.1.3 free 2.2 calloc 2.2.1 函数介绍 2.2.2 函数的使用 2.3 realloc 2.3.1 函数的介绍 2.3.2 函数的使用 三、改进通讯录 3.1 初始化 3.2 增加信息 3.3 排序&am…

R语言贝叶斯方法在生态环境领域中的高阶技术应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域,其火爆程度已经跨越了学术圈,如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

从正则表达式到NFA

一、正则表达式到NFA的基本结构 1. 我们先回顾一下 RE 的三个基本操作: 可选(alternative):对于给定的两个正则表达式 M 和 N,选择操作符( | )形成一个新的正则表达式 M|N ,如果一…

28.Isaac教程--使用Sight的远程操纵杆

使用Sight的远程操纵杆 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录使用Sight的远程操纵杆设置 Isaac 应用程序以使用虚拟游戏手柄小部件关于虚拟游戏手柄小部件使用虚拟游戏手柄小部件运作模式手柄模式鼠标模式键盘模式控制机器人运…