云服务器-从零搭建前后端服务

news2025/1/21 10:13:52

使用须知

image-20231120092259178

  • 选择0M带宽不能访问公网(不分配公网IP),如需分配公网IP请增加带宽值。
  • 云服务器ECS默认不开启虚拟内存如您需要使用请登录云服务器内部操作。Linux开启swap(虚拟内存)、Windows虚拟内存的设置
  • 若您购买了数据盘,请先挂载后使用。Linux操作系统挂载数据盘方法、Windows操作系统挂载数据盘方法
  • 如您需要修改登录密码,请再ECS控制台对订购实例进行“重置密码“操作。请查看操作指南
  • 如网站用于web访问,请及时备案。如需帮助,请查看备案专区
  • 阿里云会不定期为您推送活动优惠以及业务通知,如需关闭消息或设置其他人接收消息,请前往 消息中心进行管理
  • ECS使用中遇到环境部署、安全检测、服务器加速等问题,需要管理工具帮助,请查看软件市场
  • 如您需要随时获取ECS资源信息,信息实时监控,请下载阿里云APP
  • 我们为您提供了专业免费的第三方软件安装教程,包含MySQL、宝塔、WordPress、Nginx等十余款常用软件,还可提问安装过程中遇到的异常问题。如无法自助完成安装,可购买一对一专家服务

免密登陆

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

  2. 配置别名快速登录:ssh-config

    Host lyn
      HostName xx.xx.xx.xx
      User root
    
    # 就可以直接登陆了(需要输入密码)
    $ ssh lyn
    
  3. 修改本地 config

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

自动化部署环境

安装Java

Jenkins 本身是依赖 Java 的,所以我们需要先安装 Java 环境

  • 注意:最新版本 Jenkins 需要使用 11-17 版本的 Java
  • 由于我使用的是 Alibaba Cloud Linux 3.2104 LTS 64位,就安装了 java-17-alibaba-dragonwel
$ 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

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

$ source /etc/profile

安装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

修改 Jenkins 端口

  • 默认端口为 8080,我要改为 8081
$ cd /usr/lib/systemd/system
$ vim jenkins.service

image-20231120102726327

重新加载配置文件

$ systemctl daemon-reload
$ systemctl restart jenkins

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

image-20231120103102460

打开浏览器,输入 IP + 对应端口

获取输入管理员密码,解锁 Jenkins

$ cat /var/lib/jenkins/secrets/initialAdminPassword
fc53e288a4ac429baa33b44b412dd7a1

安装推荐插件即可

image-20231120103330881

安装Nginx

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

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

启动 Nginx

$ systemctl start nginx

安装Git

$ dnf install git-all

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

配置镜像源

$ 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

其他环境

安装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

安装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
    
  5. 修改数据库密码

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

    $ \q
    

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

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

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

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

安装Redis

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

  • http://download.redis.io/releases/

前端环境搭建

安装Nvm

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

安装依赖

$ npm i -g pnpm

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

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

自动化脚本

修改对应配置文件

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

  • 我这边需要修改对应 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.coloradmin.cn/o/1238607.html

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

相关文章

2023-11-21 LeetCode每日一题(美化数组的最少删除数)

2023-11-21每日一题 一、题目编号 2216. 美化数组的最少删除数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果满足下述条件&#xff0c;则认为数组 nums 是一个 美丽数组 &#xff1a; nums.length 为偶数对所有满…

如何使用 Navicat 连接 GaussDB 主备版

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…

Leetcode——169 多数元素

我的答案 class Solution {public int majorityElement(int[] nums) {int len nums.length;Arrays.sort(nums);int count 1;int res 0;if(len 1){return nums[0];}for(int i0; i<len-1; i){if(nums[i]nums[i1]){count;}else{count 1;}if(count>len/2){res nums[i]…

JavaDS —— 初识集合框架 + 时间/空间复杂度

目录 1. 初识集合框架 1.1 集合框架的初识 1.2 什么是数据结构&#xff1f; 2. 时间与空间复杂度 2.1 时间复杂度 2.2 大O的渐进表示法 2.3 常见时间复杂度计算举例 2.4 空间复杂度 1. 初识集合框架 1.1 集合框架的初识 什么叫集合&#xff1f;什么叫框架&#xff1f;什么又叫集…

用友NC Cloud uploadChunk任意文件上传漏洞复现 [附POC]

文章目录 用友NC Cloud uploadChunk任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 用友NC Cloud uploadChunk任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利…

敏捷DevOps专家王立杰:端到端DevOps持续交付的5P法则 | IDCF

今天有一个流行的英文缩写词用来刻画这个风云变幻的时代&#xff1a;VUCA&#xff08;乌卡时代&#xff09;。四个英文字母分别表示动荡性&#xff08;Volatility&#xff09;、不确定性&#xff08;Uncertainty&#xff09;、复杂性&#xff08;Complexity&#xff09;和模糊性…

【精选】构建智能木材计数系统:深度学习与OpenCV完美结合(详细教程+源码)

1.研究背景与意义 随着科技的不断发展&#xff0c;计算机视觉技术在各个领域中得到了广泛的应用。其中&#xff0c;卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;作为一种强大的深度学习模型&#xff0c;已经在图像识别、目标检测、人脸识…

C语言--每日五道选择题-- Day22

第一题&#xff08;注意&#xff09; 1.下列 C 代码中&#xff0c;不属于未定义行为的有&#xff1a;______。 A&#xff1a;int i0; i(i); B&#xff1a;char *p"hello"; p[1]E; C&#xff1a;char *p"hello"; char ch*p; D&#xff1a;int i0; printf(&q…

2024年湖北省水利厅的安管人员水安ABC证报考指南

2024年湖北省水利厅的安管人员水安ABC证报考指南 关于水安ABC报考&#xff0c;很多企业乃至个人都不是很清楚流程&#xff0c;叙后尘来给大家科普一下报考详细细节。2023年年度仅剩一次的报考时间定于2023年11月23日至11月28日。在这个时间段才可以网上填写报考资料&#xff0…

JOSEF信号继电器 JX-18A/2 电压 220VAC辅助电源 板后接线

JX-18/2A系列信号继电器 JX-18A/2A1信号继电器&#xff1b; JX-18A/2A2信号继电器&#xff1b; JX-18B /2A1信号继电器; JX-18B/2A2信号继电器; JX-18C/2A1信号继电器; JX-18C/2A2信号继电器; JX-18E/2A1信号继电器; JX-18E/2A2信号继电器; JX-18D/2A1信号继电器; JX…

java继承和重写(代码演示)

java中的继承和重写 概念 继承 在 Java 中&#xff0c;继承是面向对象编程中的重要概念&#xff0c;它允许一个类&#xff08;称为子类&#xff09;继承另一个类&#xff08;称为父类&#xff09;的属性和方法。子类可以继承父类的非私有属性和方法&#xff0c;并且可以添加…

C++一个关于delete的幼稚错误

分析 在项目开发中&#xff0c;遇上这么一个错误&#xff1a; 0xc00000fd stack_overflow 这是一个栈溢出的错误&#xff0c;奇怪&#xff0c;我delete怎么会提示这么一个错误呢&#xff1f; 与是问题了群&#xff1a; 总结 这个错误实在是蠢啊&#xff01; 没有细想&am…

m4s格式视频文件如何转mp4?三个方法教会你!

m4s格式是一种视频分片格式&#xff0c;它将视频文件分成多个小块&#xff0c;方便网络传输和播放。这种格式常用于流媒体服务&#xff0c;如在线视频网站、直播平台等&#xff0c;比如B站哔哩哔哩下载下来的视频就是这种格式。 方法一&#xff1a;野葱视频转换器 一款音视频转…

【UE5】蓝图

在开发过程中&#xff0c;不可避免地会有一些蓝图的操作。同时&#xff0c;蓝图也是UE很有特色的一个内容。 了解蓝图是什么&#xff08;What is BP?&#xff09; 广义上&#xff1a;蓝图是UE内置的脚本语言&#xff0c;可以书写类似代码的逻辑。&#xff08;任何可以连那种块…

代码随想录算法训练营第四十三天【动态规划part05】 | 1049. 最后一块石头的重量 II、494. 目标和、474.一和零

1049. 最后一块石头的重量 II 题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路&#xff1a; 等于把石头尽量分成重量相同的两堆 动规五部曲 确定dp数组及其下标含义&#xff1a;容量为j的背包&#xff0c;最多能装…

各大电商平台双十一“狂飙”,如何选择商城系统?

今年是“双十一”的第十五年。作为各大平台和品牌的全年最重要的营销节点&#xff0c;品牌们可谓是来势汹汹&#xff0c;各种促销活动和优惠力度让人眼花缭乱。 淘天数据显示&#xff0c;天猫促销活动开售当晚&#xff0c;155个品牌开卖成交额突破1亿元&#xff1b;首小时内7.1…

前端数组方法汇总集锦

前言 数组主要使用场景有&#xff1a; 存储和处理数据&#xff1a;数组是一种有序的数据结构&#xff0c;可以用来存储和处理多个相关的数据。在前端开发中&#xff0c;我们经常使用数组来存储和处理列表、表格、选项等数据。 循环和遍历&#xff1a;数组提供了循环和遍历的功能…

three.js学习总结超详细附带素材及源码

three.js学习总结超详细附带素材及源码 安装three.js npm install --save three引入three.js import * as THREE from threethree.js结构 three.js坐标 创建一个场景 scene场景&#xff0c;camera相机&#xff0c;renderer渲染器 创建一个场景 this.scene new THREE.Scene(…

Redis 性能管理 主从复制与哨兵模式

目录 redis性能管理 内存碎片率 如何清理内存 面试题 Redis雪崩 Redis集群大面积故障 面试&#xff1a;Redis的缓存击穿 Redis的缓存穿透 Redis的集群高可用方案 redis的主从复制 哨兵模式 redis性能管理 redis的数据缓存在内存当中 info memory #在redis数据库中查…

金蝶云星空部署包导出文件

文章目录 金蝶云星空部署包导出文件 金蝶云星空部署包导出文件 打开补丁包后&#xff0c;贴入导出文件的文件夹&#xff0c;然后按F2即可导出到目标文件夹。