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


    使用须知

    image-20231120092259178

    免密登陆

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

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

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

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

    自动化部署环境

    安装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
    
    • 1
    • 2

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

    $ dnf search java-1.8 
    $ dnf install java-1.8.0-openjdk.x86_64
    
    • 1
    • 2

    使用 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/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改环境变量文件

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

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

    $ source /etc/profile
    
    • 1

    安装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
    
    • 1
    • 2
    • 3
    • 4

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

    $ wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
    $ mv jenkins.repo /etc/yum.repos.d/
    
    • 1
    • 2

    根据对应 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
    
    • 1
    • 2
    • 3

    之后编辑一下 jenkins.repo

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

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

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

    安装 Jenkins

    $ dnf install jenkins --nogpgcheck
    
    • 1

    启动 Jenkins 服务

    $ systemctl start jenkins
    $ systemctl stop jenkins
    $ systemctl status jenkins
    $ systemctl enable jenkins
    
    • 1
    • 2
    • 3
    • 4

    修改 Jenkins 端口

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

    image-20231120102726327

    重新加载配置文件

    $ systemctl daemon-reload
    $ systemctl restart jenkins
    
    • 1
    • 2

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

    image-20231120103102460

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

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

    $ cat /var/lib/jenkins/secrets/initialAdminPassword
    fc53e288a4ac429baa33b44b412dd7a1
    
    • 1
    • 2

    安装推荐插件即可

    image-20231120103330881

    安装Nginx

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

    $ dnf install nginx
    
    • 1

    启动 Nginx

    $ systemctl start nginx
    
    • 1

    安装Git

    $ dnf install git-all
    
    • 1

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

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

    image-20231120112129257

    安装Maven

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

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

    并解压 maven 包

    $ tar -zxvf apache-maven-3.9.5-bin.tar.gz -C ./
    $ pwd
    /home/software/apache-maven-3.9.5
    
    • 1
    • 2
    • 3

    配置环境变量

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

    重新加载环境变量

    $ source /etc/profile
    
    • 1

    配置镜像源

    $ 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    之后就可以直接打包了

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

    安装Tomcat

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

    解压 tomcat 包

    $ tar -zxvf apache-tomcat-9.0.55.tar.gz
    $ pwd
    /home/software/apache-tomcat-9.0.55
    
    • 1
    • 2
    • 3

    配置环境变量

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

    重新加载环境变量

    $ source /etc/profile
    
    • 1

    其他环境

    安装Docker

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

    $ yum update
    
    • 1

    安装软件包

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

    设置 yum 源

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

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

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

    安装 docker

    $ yum install -y docker-ce-24.0.6
    
    • 1

    启动 docker

    $ systemctl start docker
    
    • 1

    安装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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    (postgres)
    $ pwd
    /home/postgres
    $ mkdir FlyingDB15.4
    $ tar -zxvf FlyingDB15.4.tar.gz -C FlyingDB15.4/
    $ mkdir pgdata
    $ chmod 0700 pgdata
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    搭建主库

    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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    2. 初始化数据库

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

      image-20231122100831718

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

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

      $ pg_ctl start
      $ pg_ctl stop
      $ pg_ctl restart
      
      • 1
      • 2
      • 3
    5. 修改数据库密码

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

      $ \q
      
      • 1

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

    $ vim /home/postgres/pgdata/postgresql.conf
    listen_addresses = '0.0.0.0'
    port = 5432
    $ pg_ctl restart
    
    • 1
    • 2
    • 3
    • 4

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

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

    安装Redis

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

    前端环境搭建

    安装Nvm

    nvm Github

    直接下载可能会超时,没超时按 Github 安装方法即可

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

    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
    
    • 1
    • 2
    • 3
    • 4

    安装依赖

    $ npm i -g pnpm
    
    • 1

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

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

    自动化脚本

    修改对应配置文件

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

    • 我这边需要修改对应 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    自动打包程序脚本

    编写自动打包脚本程序: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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    自动开启关闭程序脚本

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

    $ 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...'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    甘露糖-聚乙二醇-CY5 Cy5-PEG-mannose
    HTML5和HTML的区别
    Redis常见面试问题总结
    ARM Linux DIY(十二)NES 游戏
    Bootstrap-栅格实例(二)
    golang 数组 对象排序
    Win10电脑重装系统更新关闭了还自动打开怎么解决?
    民国漫画杂志《时代漫画》第34期.PDF
    python 之 tar.gz格式压缩、解压
    C++栈、队列、优先级队列模拟+仿函数
  • 原文地址:https://blog.csdn.net/qq_38689395/article/details/134558781