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

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

云服务器-从零搭建前后端服务(自动化部署、数据库)_第1张图片

免密登陆

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

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

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

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

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

    Ctrl + Shift + P,之后输入 ssh

    云服务器-从零搭建前后端服务(自动化部署、数据库)_第2张图片

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

    云服务器-从零搭建前后端服务(自动化部署、数据库)_第3张图片

    之后输入如下配置

    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 账号才能下载,官网下载还是很快的

云服务器-从零搭建前后端服务(自动化部署、数据库)_第4张图片

$ 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

检查是否启动成功

云服务器-从零搭建前后端服务(自动化部署、数据库)_第5张图片

修改配置

修改 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"

云服务器-从零搭建前后端服务(自动化部署、数据库)_第6张图片

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

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

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

云服务器-从零搭建前后端服务(自动化部署、数据库)_第7张图片

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

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

安装推荐插件即可

云服务器-从零搭建前后端服务(自动化部署、数据库)_第8张图片

额外插件安装:

  • 上面默认安装的插件就不再提及用途了
插件名称 插件用途
Maven Integration plugin Maven
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 提供更加丰富的构建版本号
Figlet Buildstep 在构建过程中输出一个简单的横幅
Extended Choice Parameter 回滚使用的这个插件
Docker Pipeline pipeline中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 restart nginx
$ systemctl status nginx
$ systemctl enable nginx

检查是否启动成功

云服务器-从零搭建前后端服务(自动化部署、数据库)_第9张图片

修改配置

修改配置文件

$ vim /etc/nginx/nginx.conf

增加压缩配置

http {
  gzip on;
  gzip_min_length 1k;
  gzip_comp_level 5;
  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_disable "MSIE [1-6]\.";
  gzip_vary on;
}

替换 /usr/share/nginx/html 里的 index.html

$ cd /usr/share/nginx/html
80端口占用问题
$ netstat -nutlp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1/systemd

# 或者使用 lsof 查看端口
$ yum install lsof
lsof -i:80

image-20231124162441635

解决方法:

  • 大概率是 httpd 的锅,关闭并禁用即可
# 停止进程
$ systemctl stop httpd
$ systemctl stop httpd.socket
# 禁止随开机启动
$ systemctl disable httpd
$ systemctl disable httpd.socket

如果不使用 ipv6,直接在系统启动时禁用即可,这样也可以提高系统访问的速度

$ vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.defalult.disable=1
$ reboot

111 端口的进程是 systemd,实际上用的是 rpcbind,大部分服务是不依赖于rpcbind的,只有NFS需要用到这个服务,所以可以禁掉

  • systemd-resolve 系统服务解析主机名、IP 地址、域名、DNS 资源记录、服务

云服务器-从零搭建前后端服务(自动化部署、数据库)_第10张图片

$ systemctl stop rpcbind.socket
$ systemctl stop rpcbind
$ systemctl disable rpcbind.socket
$ systemctl disable rpcbind

安装Git

$ dnf install git-all

检查是否安装成功

image-20231124084335807

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

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

云服务器-从零搭建前后端服务(自动化部署、数据库)_第11张图片

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

检查是否配置成功

云服务器-从零搭建前后端服务(自动化部署、数据库)_第12张图片

配置镜像源

$ 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

安装Nexus

官网下载:https://help.sonatype.com/repomanager3/product-information/download

解压 nexus 包

$ tar -zxvf nexus-3.62.0-01.tar.gz

修运行 nexus 默认访问端口:

$ vim /home/software/nexus-3.62.0-01/etc/nexus-default.properties
application-port=8082

注册服务

$ ln -s /home/software/nexus-3.62.0-01/bin/nexus /etc/init.d/nexus
# 暂时先不设置开机自启了
$ /etc/init.d/nexus start

数据库环境

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

    云服务器-从零搭建前后端服务(自动化部署、数据库)_第13张图片

  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
    
修改密码

修改数据库密码

$ psql
alter user postgres with password 'your password';

退出 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 脚本了
开机自启×

查看 postgres 安装路径,之后根据对应目录编辑配置文件

$ which postgres
~/FlyingDB15.4/bin/postgres

$ vim /lib/systemd/system/postgres15.service
[Unit]
Description=PostgreSQLV15 database server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/home/postgres/FlyingDB15.4/bin/pg_ctl start
ExecStop=/home/postgres/FlyingDB15.4/bin/pg_ctl stop
ExecReload=/home/postgres/FlyingDB15.4/bin/pg_ctl reload
[Install]
WantedBy=multi-user.target

设置可执行权限

$ chmod 755 /lib/systemd/system/postgres15.service

添加开机自启动

$ systemctl enable postgres15.service

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

云服务器-从零搭建前后端服务(自动化部署、数据库)_第14张图片

安装MySQL

安装方法

安装 mysql

$ yum install -y mysql-server

如果没有可用软件包 mysql-server,可以使用如下方法

# 下载mysql的repo源
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# 安装rpm包,之后就有mysql repo源了
$ rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 即可安装
$ yum install -y mysql-server

启动 mysql 服务

# 启动服务
$ systemctl start mysqld
# 停止服务
$ systemctl stop mysqld
# 添加开机自启动
$ systemctl enable mysqld
# 重启服务
$ systemctl restart mysqld
修改密码

我这个版本 mysql 没有初始密码,如果有初始密码,可以通过如下命令去查看

$ find / -name mysqld.log
/var/log/mysql/mysqld.log
$ cat /var/log/mysql/mysqld.log | grep password

image-20231127095213798

登录,没有密码直接按回车即可登录

$ mysql -u root -p

登录之后更新 root 密码,之后并创建 admin 用户,并授权表和远程访问权限,授权完就可以使用 Navicat 进行连接了

# mysql8.0版本更新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql@123';
# 创建admin用户
CREATE USER 'admin'@'%' IDENTIFIED BY 'admin@123';
# 授权访问表
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
# 授权远程访问
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'admin@123';
# 刷新
FLUSH PRIVILEGES;

# mysql5.6版本更新密码
UPDATE user SET Password = PASSWORD('mysql@123') WHERE user = 'root';
FLUSH PRIVILEGES;

查看版本

SELECT @@version;
+-----------+
| @@version |
+-----------+
| 8.0.32    |
+-----------+
1 row in set (0.00 sec)
修改配置
# 查询msql安装路径
$ which mysql
/usr/bin/mysql
# 在查询出来的路径后面加如下参数
$ /usr/bin/mysql --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
$ vim /etc/my.cnf
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 设置3306端口
port = 3306
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置sql_mode,关闭ONLY_FULL_GROUP_BY,避免使用group by函数导致1055错误
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

安装MongoDB

安装方法

去官网选择对应版本进行下载

  • https://www.mongodb.com/try/download/community

云服务器-从零搭建前后端服务(自动化部署、数据库)_第15张图片

$ tar -zxvf mongodb-linux-x86_64-rhel80-3.6.23.tgz

创建 logs 和 data 目录,创建 mongodb.log 文件

$ cd /usr/local/
$ mkdir -p mongodb/logs mongodb/data
$ touch /usr/local/mongodb/logs/mongodb.log

将解压的目前移动到 /usr/local/mongodb 目录下

$ mv mongodb-linux-x86_64-rhel80-3.6.23/* /usr/local/mongodb/

修改环境变量

$ vim /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
$ source /etc/profile
修改配置

编辑 mongodb.conf 文件

$ vim /etc/mongodb.conf
# 指定数据库路径
dbpath=/usr/local/mongodb/data
# 指定MongoDB日志文件
logpath=/usr/local/mongodb/logs/mongodb.log
# 使用追加的方式写日志
logappend=true
# 端口号
port=27017 
# 方便外网访问
bind_ip=0.0.0.0
# 以守护进程的方式运行MongoDB,创建服务器进程
fork=true

启动 mongodb

$ mongod -f /etc/mongodb.conf
# 关闭
$ mongod --shutdown -f /etc/mongodb.conf
修改密码

登录 mongodb,默认没有密码直接登录

$ mongo

创建用户

use admin;
db.createUser({user:'root', pwd:'mongo@123', roles:[{role:'root', db:'admin'}]});
db.createUser({user:'admin',pwd:'admin@123',roles:[{role:'root',db:'admin'}]});

# 验证账号是否授权成功, 1 验证成功,0 验证失败
db.auth("root","mongo@123");
db.auth("admin","admin@123");
开机自启

查看 mongodb 安装路径,之后根据对应目录编辑配置文件

$ which mongo
/usr/local/mongodb/bin/mongo

$ vim /lib/systemd/system/mongodb.service
[Unit]
Description=Mongodb database server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
# 修改为你的 monogodb 安装目录,与你的 mongodb.conf 配置路径
ExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /etc/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target

设置可执行权限

$ chmod 755 /lib/systemd/system/mongodb.service

添加开机自启动

$ systemctl enable mongodb.service

前端环境

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

设置 npm 镜像源

$ npm config set registry https://registry.npm.taobao.org
$ yarn config set registry http://registry.npm.taobao.org
$ pnpm config set registry http://registry.npm.taobao.org

检查是否安装成功

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

检查是否启动成功

云服务器-从零搭建前后端服务(自动化部署、数据库)_第16张图片

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

安装Frp

去 Github 上下载:https://github.com/fatedier/frp/releases/

内网穿透 frp : 隐藏通信隧道技术

在服务器端进行解压,并给 frps 执行权限。客户端的文件就没用了,可以删除(最新版默认配置为 toml 后缀)

  • frp 服务端(s)端:作为内网穿透桥梁的公网 IP 的服务器
  • frp 客户端©端:目标主机
$ tar -zxvf frp_0.52.3_linux_amd64.tar.gz
$ cd frp_0.52.3_linux_amd64
$ chmod 777 frps
$ rm -rf frpc frpc.toml

编写服务端配置

$ vim frps.toml
[common]
bind_port=10021
# frp 穿透访问内网中的网站监听端口 配合后面使用nginx做域名绑定访问
vhost_http_port=10022
token=your-token
# 仪表盘端口,只有设置了才能使用仪表盘(即后台)
dashboard_port=10023
dashboard_user=admin
dashboard_pwd=admin

服务端启动命令

$ pwd
/home/software/frp_0.52.3_linux_amd64
$ ./frps -c frps.toml
# 后台运行
$ nohup ./frps -c frps.toml >/dev/null 2>&1 &

编写自启动脚本 start-frps.sh

$ vim start-frps.sh
#!/bin/bash
PID=`ps -ef | grep frps | awk '{printf $2}'`
if [ -z $PID ];
	then
		echo "frps server not started"
	else
		kill -9 $PID
		echo "frps server stoping...."
fi
nohup ./frps -c frps.toml >/dev/null 2>&1 &
echo 'frps server starting...'

客户端是在 widows 电脑上,可以删除 frps、frps.toml 文件,之后修改 frpc.toml 文件为如下配置

# 公网服务端配置
[common]
server_addr=182.92.10.187
server_port=10021
# 令牌与公网服务端保持一致
token=your-token

# 内网客户端配置
[jenkins]
local_ip=127.0.0.1
local_port=8080
remote_port=8081

客户端启动命令(需要先启动服务端)

$ ./frpc.exe -c frpc.toml

自动化脚本

修改对应配置文件

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

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

# 修改spring配置
$ vim /home/template/ticket-base/ticket-base-run/src/main/resources/application.yml
server:
  port: 8080

# 修改nginx配置
$ vim /etc/nginx/nginx.conf

自动打包程序脚本

编写自动打包脚本程序: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...'

绑定域名

首先需要购买域名,并进行域名备案

进入域名解析页面,点击新手引导

云服务器-从零搭建前后端服务(自动化部署、数据库)_第17张图片

之后勾选 @主机记录和 www主机记录,输入对应网站 IP 即可。等待几分钟即可绑定成功

云服务器-从零搭建前后端服务(自动化部署、数据库)_第18张图片

总结

重启之后全部启动命令,包括:systemctl enable 自动重启的命令

(root)
# 自启动
$ systemctl start nginx
$ systemctl start mysqld
$ systemctl start mongodb.service    
# 可以启动
$ pm2 start /home/software/yapi/vendors/server/app.js
$ mongod -f /etc/mongodb.conf
# 暂时无需启动
$ systemctl start jenkins
$ /home/template/start.sh
$ /etc/init.d/nexus start

(postgres)
$ pg_ctl start

你可能感兴趣的:(服务器,运维)