云服务器-从零搭建前后端服务(自动化部署、数据库)

image-20231120092259178

免密登陆

第一步就是能免密快速登录到服务器

  • 可以直接使用 FinalShell、MobaXterm 或 XShell 等进行连接

如下方法是直接用命令行操作

  1. 安装 Remote - SSH 插件,即可在 VSCode 中进行配置

  2. 配置别名快速登录:ssh-config(也可以直接找到本机的 .ssh 配置进行修改)

    Ctrl + Shift + P,之后输入 ssh

    image-20231124085538013

    点击配置 SSH 主机,随后的弹出框一般情况下点击一个就行

    image-20231124085656952

    之后输入如下配置

    Host lyn
      HostName xx.xx.xx.xx
      User root
    
    # 就可以直接登陆了(需要输入密码)
    $ ssh lyn
    
  3. 之后我们希望能免密快速登录

    # 提示你输入密码,成功后可以直接 ssh 登陆
    $ ssh-copy-id lyn
    
    # 就可以直接登陆了(无需输入密码)
    $ ssh lyn
    

自动化部署环境

安装Java

安装方法

Jenkins 本身是依赖 Java 的,所以我们需要先安装 Java 环境。不过不太推荐使用命令行安装 java 环境

  • 注意:最新版本 Jenkins 需要使用 11-17 版本的 Java
  • 由于我使用的是 Alibaba Cloud Linux 3.2104 LTS 64位,就安装了 java-17-alibaba-dragonwel
# 查询一下都有哪些 java-17 版本
$ dnf search java-17
# 根据提示的版本进行挑选下载
$ dnf install java-17-alibaba-dragonwell.x86_64

如果下载的非最新版 Jenkins 可以安装 Java1.8 版本

$ dnf search java-1.8 
$ dnf install java-1.8.0-openjdk.x86_64

推荐安装方法

使用 dnf 安装的,很难找到 jdk 安装的位置,会有些小问题。还是推荐在官网下载,手动配置环境变量:https://www.oracle.com/java/technologies/download

  • jdk8,需要先注册 Oracle 账号才能下载,官网下载还是很快的

image-20231121164201283

$ tar -zxvf jdk-17_linux-x64_bin.tar.gz
$ tar -zxvf jdk-8u391-linux-x64.tar.gz
# 软件存放目录
$ pwd
/home/software/jdk-17.0.9/
/home/software/jdk1.8.0_391/
修改配置

修改环境变量文件

# export JAVA_HOME=/home/software/jdk-17.0.9
export JAVA_HOME=/home/software/jdk1.8.0_391
export PATH=$JAVA_HOME/bin:$PATH

需要对应版本了,修改文件重新加载环境变量即可

  • 一般情况下是不需要修改的,各个软件也都能通过配置文件的形式选择你需要的 java 版本
$ source /etc/profile

检查是否配置成功

image-20231124084129062

安装Jenkins

安装方法
$ dnf search jenkins
Last metadata expiration check: 0:29:36 ago on Mon 20 Nov 2023 08:58:40 AM CST.
=================================== Name & Summary Matched: jenkins ===================================
python3-jenkins.noarch : Python bindings for the remote Jenkins API

因为 Jenkins 本身是没有在 dnf 的软件仓库包中的,所以我们需要连接 Jenkins 仓库:

  • wget 是 Linux 中下载文件的一个工具,-O 表示输出到某个文件夹并且命名为什么文件
  • 命令如有变动直接参考官网说明即可:https://pkg.origin.jenkins.io/redhat-stable/
$ wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
$ mv jenkins.repo /etc/yum.repos.d/

根据对应 repo 就可以使用 dnf 进行安装了,但是安装是有认证的,需要使用 rpm 导入 GPG 密钥以确保软件合法

$ rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# 或者
$ rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

之后编辑一下 jenkins.repo

$ vim /etc/yum.repos.d/jenkins.repo

http://pkg.jenkins.io/redhat-stable-stable 删除掉

[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1

安装 Jenkins

$ dnf install jenkins --nogpgcheck

启动 Jenkins 服务

$ systemctl start jenkins
$ systemctl stop jenkins
$ systemctl status jenkins
$ systemctl enable jenkins

检查是否启动成功

image-20231124084054138

修改配置

修改 Jenkins 端口

  • 我环境变量默认使用的 jdk1.8,我安装的 jenkins 是新版需要配置 jdk11-17
  • 默认端口为 8080,我要改为 8081
$ vim /usr/lib/systemd/system/jenkins.service
# The Java home directory. When left empty, JENKINS_JAVA_CMD and PATH are consulted.
Environment="JAVA_HOME=/home/software/jdk-17.0.9"
# Port to listen on for HTTP requests. Set to -1 to disable.
Environment="JENKINS_PORT=8081"

image-20231123140910187

重新加载配置文件,之后重启 jenkins

# 重新加载 service 配置文件
$ systemctl daemon-reload
# 重启 jenkins
$ systemctl restart jenkins

直接访问 Jenkins 是无法展示页面的,需要将其加入到安全组中

image-20231120103102460

打开浏览器,输入 IP + 对应端口,之后需要解锁 Jenkins

  • 获取输入管理员密码
$ cat /var/lib/jenkins/secrets/initialAdminPassword
fc53e288a4ac429baa33b44b412dd7a1
安装插件

安装推荐插件即可

image-20231120103330881

额外插件安装:

  • 上面默认安装的插件就不再提及用途了
插件名称插件用途
Maven Integration pluginMaven
Zentimestamp plugin时间戳变量
Build Name and Description Setter自定义构建任务名称
Persistent Parameter Plugin持久化构建参数
Role-based Authorization Strategy用户权限管理插件
Deploy to container Plugin远程部署插件
Generic Webhook Trigger Plugin特定提交触发自动构建
Publish Over SSH远程控制主机执行脚本
Job Configuration History Plugin记录job的历史更新记录
Console Column Plugin视图中展示上一个控制台
Rebuilder按照上次构建所选的参数进行构建
Git Parameter可添加Git的branch或者tag来作为参数进行构建
Build Trigger Badge项目视图首页展示项目构建人
Version Number Plugin提供更加丰富的构建版本号
Figlet Buildstep在构建过程中输出一个简单的横幅
Extended Choice Parameter Plugin回滚使用的这个插件
Docker Pipelinepipeline中docker环境隔离的能力
Parameterized Remote Trigger Plugin远程触发另一个jenkins项目构建配置
Blue Ocean持续交付(CD)Pipeline过程的可视化
Simple Theme主题
DingTalk构建通知

安装Nginx

安装 Nginx,或者去官网直接下载

  • https://nginx.org/en/download.html
$ dnf install nginx

启动 Nginx

$ systemctl start nginx
$ systemctl stop nginx
$ systemctl status nginx
$ systemctl enable nginx

检查是否启动成功

image-20231124084227034

安装Git

$ dnf install git-all

检查是否安装成功

image-20231124084335807

Linux下安装GitLab仓库,史上最详细的教程来啦~

我的云服务器小于这个配置…

image-20231120112129257

安装Maven

安装方法

去官网下载或者使用 wget 下载到指定目录

  • https://maven.apache.org/download.cgi
$ wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz

解压 maven 包

$ tar -zxvf apache-maven-3.9.5-bin.tar.gz -C ./
$ pwd
/home/software/apache-maven-3.9.5
修改配置

配置环境变量

  • 注意:Maven 是基于 jdk 的,所以一定要确保你 jdk 已经装好
$ vim /etc/profile
export MAVEN_HOME=/home/software/apache-maven-3.9.5
export PATH=$MAVEN_HOME/bin:$PATH

重新加载环境变量

$ source /etc/profile

检查是否配置成功

image-20231124084410169

配置镜像源

$ vim $MAVEN_HOME/conf/settings.xml
<mirror>
 <id>alimaven</id>
 <name>aliyun maven</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 <mirrorOf>central</mirrorOf>
</mirror>

之后就可以直接打包了

  • 默认没有配置存放路径,本地仓库会在 /root/.m2/repository/
$ mvn clean install

安装Tomcat

去官网下载或者使用 wget 下载到指定目录

  • https://tomcat.apache.org/download-90.cgi

解压 tomcat 包

$ tar -zxvf apache-tomcat-9.0.55.tar.gz
$ pwd
/home/software/apache-tomcat-9.0.55

配置环境变量

$ vim /etc/profile
export TOMCAT_HOME=/home/software/apache-tomcat-9.0.55
export PATH=$TOMCAT_HOME/bin:$PATH

重新加载环境变量

$ source /etc/profile

启动和关闭

$ startup.sh
$ shutdown.sh

检查是否启动成功

image-20231124085238554

数据库环境

安装PostgreSQL

Linux下PostgreSQL安装部署详细步骤

安装方法

安装方法参考官方文档:https://www.postgresql.org/download/linux/redhat/

部署目录

名称目录位置
PG数据库安装目录/home/postgres/FlyingDB15.4
PG数据库数据目录/home/postgres/pgdata
PG数据库日志目录/home/postgres/pgdata/log

创建 postgres 系统用户

(root)
$ useradd -m postgres
$ passwd postgres
postgres@123

$ cat /etc/passwd | grep /bin/bash
root:x:0:0:root:/root:/bin/bash
postgres:x:1000:1000::/home/postgres:/bin/bash

切换到 postgres 用户,上传数据库包,并解压数据库包

(postgres)
$ pwd
/home/postgres
$ mkdir FlyingDB15.4
$ tar -zxvf FlyingDB15.4.tar.gz -C FlyingDB15.4/
$ mkdir pgdata
$ chmod 0700 pgdata
搭建主库
  1. 配置环境变量

    $ vim ~/.bash_profile
    export PGHOME=/home/postgres/FlyingDB15.4
    export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
    export PATH=$PGHOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
    export PGDATA=/home/postgres/pgdata
    export PGDATABASE=postgres
    export PGUSER=postgres
    export PGPORT=5432
    export PGHOST=localhost
    export MANPATH=$PGHOME/share/man:$MANPATH
    export LANG=en_US.utf8
    export DATE=`date +"%Y%m%d%H%M"`
    
    $ source ~/.bash_profile
    
  2. 初始化数据库

    $ initdb -D /home/postgres/pgdata -E UTF8 --locale=C -U postgres
    

    image-20231122100831718

  3. 配置允许访问的 IP,允许所有 IP 以 md5 方式访问

    $ vim /home/postgres/pgdata/pg_hba.conf
    host    all             all             0.0.0.0/0               md5
    
  4. 启动数据库

    $ pg_ctl start
    $ pg_ctl stop
    $ pg_ctl restart
    $ pg_ctl status
    
  5. 修改数据库密码

    $ psql
    alter user postgres with password 'your password';
    
  6. 退出 sql 命令行

    $ \q
    

检查是否启动成功

image-20231124084635609

修改配置

如果想要暴露数据库到外面,需要修改 postgresql.conf 文件

$ vim /home/postgres/pgdata/postgresql.conf
listen_addresses = '0.0.0.0'
port = 5432
$ pg_ctl restart

之后再去云服务器把对应安全组放开,即可拿 sql 工具进行访问

  • 连接之后就可以创建对应表、对应模式,之后执行初始化 sql 脚本了

安装Redis

redis 是 c 语言开发,安装 redis 需要先将官网下载的源码进行编译,编译依赖 gcc 环境

$ yum install -y gcc gcc-c++

去官网下载或者使用 wget 下载到指定目录

  • http://download.redis.io/releases/
  • 如果中途用 ctrl+c 暂停,可以使用wget -c 重新下载
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz

解压 redis 包

$ tar -zxvf redis-4.0.6.tar.gz

编译

$ cd redis-4.0.6
$ make

安装

$ make PREFIX=/usr/local/redis install

将 redis.conf 文件移动到

$ cp /home/software/redis-4.0.6/redis.conf /usr/local/redis/bin/

启动

$ cd /usr/local/redis/bin
# 启动服务器
$ ./redis.server redis.conf
# 启动redis客户端
$ ./redis-cli

image-20231124083928737

前端环境

安装Nvm、Node

nvm Github

直接下载可能会超时,没超时按 Github 安装方法即可(我是按超时的方法下载的)

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

下载超时方法:git clone 下载,之后把环境变量添加到对应文件

$ git clone https://github.com/creationix/nvm.git ~/.nvm
# 在 ~/.zshrc、~/.profile、~/.bashrc 添加以下命令
$ echo "source ~/.nvm/nvm.sh" >> ~/.bashrc
$ echo "source ~/.nvm/nvm.sh" >> ~/.profile

安装 node

$ nvm install 16.20.0

安装 pnpm、serve 依赖

$ npm i -g pnpm serve

检查是否安装成功

image-20231124084733942

前端打 jar 包添加如下脚本命令:

  • 并添加对应 pom.xml 文件
"scripts": {
  "mvn": "npm run build && mvn clean && mvn install"
}

其他环境

安装Docker

把 yum 包更新到最新,不要随意更新,因为我目前是新环境

$ yum update

安装软件包

$ yum install -y yum-utils device-mapper-persistent-data lvm2

设置 yum 源

$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看所有仓库中所有 docker 版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

安装 docker

$ yum install -y docker-ce-24.0.6

启动 docker

$ systemctl start docker
$ systemctl stop docker
$ systemctl status docker
$ systemctl enable docker

检查是否启动成功

image-20231124084513385

安装Docker-compose

去 github 下载或者使用 cul 下载到指定目录

  • 推荐下载:https://github.com/docker/compose/releases/
# 下载很慢
$ curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

下载后放到 /usr/local/bin 目录下,之后添加可执行权限

$ chmod -R 777 /usr/local/bin/docker-compose

检查是否安装成功

image-20231124100249909

自动化脚本

修改对应配置文件

首先需要核对配置文件是否符合需求

  • 我这边需要修改对应 pg 配置和对应服务的端口
$ vim /home/template/ticket-base/ticket-base-run/src/main/resources/application-pg-dev.yml
db:
  url: ..
  username: ..
  password: ..
$ vim /home/template/ticket-base/ticket-base-run/src/main/resources/application.yml
server:
  port: 8080

自动打包程序脚本

编写自动打包脚本程序:build.sh

  • 需要注意从 Windows 直接复制脚本程序还需要修改换行格式
$ vim build.sh
#!/bin/bash
# 前端打包
cd /home/template/ticket-base-ui
pnpm i
pnpm mvn
# 后端打包
cd /home/template/ticket-base
mvn clean install

$ chmod 755 build.sh
# Windows复制需要额外操作
$ vim build.sh
:set ff=unix
:wq

自动开启关闭程序脚本

编写自动杀进程、启动程序脚本

$ vim start.sh
#!/bin/bash
BASE=/home/template
FILE=ticket-base-1.0.0-SNAPSHOT.jar
# 删除历史数据
rm -rf $BASE/$FILE
# 数据包拷贝到指定位置
cp $BASE/ticket-base/ticket-base-run/target/$FILE $BASE/$FILE
PID=`ps -ef | grep ticket-base | grep 'java -jar' | awk '{printf $2}'`
# 如果pid为空,提示一下,否则,执行kill命令
if [ -z $PID ];
	then
		echo "java server not started"
	else
		kill -9 $PID
		echo "java server stoping...."
fi
# 启动程序
nohup java -jar $BASE/$FILE >/dev/null 2>&1 &
echo 'java server starting...'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化测试框架之unittest使用详解!

这篇文章主要介绍了Python接口自动化浅析unittest单元测试原理,文中描述了单元测试&#xff0c;unittest模块特性、大致流程、源码及实战例子这几个模块&#xff0c;有需要的朋友可以借鉴参考下 以下主要介绍unittest特性、运行流程及实际案例。 一、单元测试三连问 1、什么是…

【腾讯云云上实验室】探索保护数据之盾背后的安全监控机制

当今数字化时代&#xff0c;数据安全成为了企业和个人最为关注的重要议题之一。随着数据规模的不断增长和数据应用的广泛普及&#xff0c;如何保护数据的安全性和隐私性成为了迫切的需求。 今天&#xff0c;我将带领大家一起探索腾讯云云上实验室所推出的向量数据库&#xff0c…

酵母双杂交服务专题(一)

酵母双杂交系统是一种在酵母这种真核生物模型中执行的实验方法&#xff0c;用于探索活细胞内部蛋白质间的相互作用。这种技术能够敏感地捕捉蛋白质间的细微和短暂相互作用&#xff0c;通过检测报告基因的表达产物来实现。作为一种高度灵敏的技术&#xff0c;酵母双杂交系统被广…

FreeRTOS-FreeRTOS概述

FreeRTOS FreeRTOS目录结构 移植过程 在工程中创建freertos文件夹&#xff0c;在freertos文件夹中创建src文件夹、inc文件夹、port文件夹。 freertos/src存放源码freertos/inc存放头文件freertos/port存放移植平台的相关文件 复制内存管理文件&#xff1a;复制FreeRTOS/Sourc…

井盖位移传感器厂家批发,守护井盖安全

窨井盖广泛分布于城市街道&#xff0c;其管理效果直接反映了城市治理的现代化程度。根据住房和城乡建设部发布的《关于进一步加强城市窨井盖安全管理的通知》&#xff0c;全国各地需加强窨井盖的安全管理。作为市政基础设施的一个重要的组成部分&#xff0c;井盖的管理工作不仅…

COCO类别标签增加80

COCO类别标签增加80 import codecs import ospath H:/Dataset/COCO/train_pbr/000001/labels/ # 标签文件train路径 m os.listdir(path) # 读取路径下的txt文件 for n in range(0, len(m)):t codecs.open(H:/Dataset/COCO/train_pbr/000001/labels/ m[n], moder, encoding…

Photoshop下载秘籍:附送7款不用下载的在线PS工具!

如何下载Photoshop&#xff1f;直接到官网下载PS软件即可。进入Adobe官网wwwww.adobe.com&#xff0c;在搜索框输入“在搜索框中输入”Photoshop“&#xff0c;选择你需要的版本&#xff0c;点击下载按钮&#xff0c;根据提示完成安装。但需要注意的是&#xff0c;Adobe官网的正…

Android Tombstone 与Debuggerd 原理浅谈

一、前言 Android系统类问题主要有stability、performance、power、security。Android集成一个守护进程tombstoned是android平台的一个守护进程&#xff0c;它注册成3个socket服务端&#xff0c;客户端封装在crash_dump和debuggerd_client。 crash_dump用于跟踪定位C crash&am…

echarts设置容器宽度设置为100%只显示100px宽度

在使用echarts时&#xff0c;写在tab页中的图表宽度明明设成了100%&#xff0c;但是在页面上实际却只有100px宽 原因很简单&#xff0c;在tab页中&#xff0c;图表的父容器div是隐藏的&#xff08;display&#xff1a;none&#xff09;&#xff0c;图表在执行js初始化的时候找…

井盖位移传感器生产厂家推荐,时刻感知井盖

马路上的井盖虽然看似微不足道&#xff0c;但实际上对于行人的“脚下安全”起着至关重要的作用。这些井盖下连接着供排水、燃气、电力、供热、通信等功能的管路和线路&#xff0c;是城市生命线运行的重要保障。因此保持井盖状态正常、明确管理责任是确保车辆和行人安全通行的重…

【GCC】1:chatgpt:NetworkControllerInterface、GoogCcNetworkController

代码基于 mediasoup-sfu-cpp 中的m77版本。使用chatgpt辅助学习。网络状态估计器:开发中 D:\XTRANS\soup\mediasoup-sfu-cpp\deps\libwebrtc\libwebrtc\api\transport\network_control.h NetworkControllerInterface 网络控制器 此类,使用 网络状态和 通信状态 以 估计网络参…

SQL常见函数整理 _ LAG() 向上偏移

1. 用法 窗口函数&#xff0c;用于访问窗口中当前行之前的行的数据。该函数可以根据需要计算当前行之前的值&#xff0c;使我们能够轻松地比较不同行之间的差异和变化。 2. 基本语法 LAG(column, offset, default_value) OVER (ORDER BY column)column&#xff1a;代表在返回…

Ubuntu 安装 JMeter:轻松上手

Apache JMeter 是一个开源的负载测试工具&#xff0c;可以用于测试静态和动态资源&#xff0c;确定服务器的性能和稳定性。在本文中&#xff0c;我们将讨论如何下载和安装 JMeter。 安装 Java&#xff08;已安装 Java 的此步骤可跳过&#xff09; 要下载 Java&#xff0c;请遵…

pytorch训练模型内存溢出

1、训练模型命令命令 如下所示是训练命名实体识别的命令&#xff0c;在win10系统下执行 activate pytorch cd F:\Python\github\ultralytics-main\submain\pytorch_bert_bilstm_crf_ner-main f: python main.py --bert_dir"../model_hub/chinese-bert-wwm-ext/" --…

Linux 排查必看文件

目录 1. 登录日志 1.1 /var/log/wtmp 1.2 /var/log/btmp.* 1.3 /var/log/lastlog 1.4 /var/log/faillog 1.5 /var/log/secure 1.6 /var/log/auth.log 2. 系统日志 2.1 /var/log/cron.* 2.2 /var/log/syslog 2.3 /var/log/audit/audit.*log 3. 历史命令 3.1 ~/…

Linux基本命令操作 —— 文件夹/文件的创建,删除,查看,重命名......(简单理解 快速上手)

目录 1. 基础命令 1.1 显示当前目录&#xff1a;pwd 1.2 改变当前目录&#xff1a;cd 2. 文件夹的操作命令 2.1 创建文件夹&#xff1a;mkdir 2.2 查看文件夹&#xff1a;ls 2.3 删除文件夹&#xff1a;rmdir &#xff08;不推荐&#xff09; 2.4 复制文件夹&#xff1…

数据分析基础之《matplotlib(2)—折线图》

一、折线图绘制与保存图片 1、matplotlib.pyplot模块 matplotlib.pyplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形&#xff08;figure&#xff09;的当前坐标系&#xff08;axes&#xff09; import matplotlib.pyplot as plt 2、折线图绘制与显示 展示城…

科普:多领域分布式协同仿真

分布式协同仿真是一种在分布式计算环境中进行协同工作的仿真方法。使用该方法进行协同仿真时&#xff0c;仿真任务将被分发到多个计算节点上&#xff0c;并且这些节点可以同时工作以模拟完整的系统行为。分布式协同仿真已被广泛应用于工程、科学和军事领域&#xff0c;以便更好…

交叉导轨在光学工作台起什么重要作用?

光学工作台常常需要承载和移动各种光学元件和仪器&#xff0c;如望远镜、显微镜、光谱仪等&#xff0c;这些设备需要在空间中进行精确的定位和稳定支撑&#xff0c;而交叉导轨作为一种高精度、高刚度的直线传动元件&#xff0c;为光学工作台提供了重要的支撑和导向。 1>交叉…

Python开源项目之人工智能老照片修复算法学习

文章目录 前言项目环境搭建conda虚拟环境创建激活环境Pytorch安装Synchronized-BatchNorm-PyTorch repository安装Global目录Synchronized-BatchNorm-PyTorch项目部署检测预处理模型下载下载脸部增强模型文件下载依赖完整部署后项目结构 项目使用验证一下总结关于Python技术储备…