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

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

image-20231120092259178

免密登陆

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

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

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

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

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

    Ctrl + Shift + P,之后输入 ssh

    image-20231124085538013

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

    image-20231124085656952

    之后输入如下配置

    Host lynHostName xx.xx.xx.xxUser 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提供更加丰富的构建版本号
Figlet Buildstep在构建过程中输出一个简单的横幅
Extended Choice Parameter回滚使用的这个插件
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 restart nginx
$ systemctl status nginx
$ systemctl enable nginx

检查是否启动成功

image-20231124084227034

修改配置

修改配置文件

$ 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 资源记录、服务

image-20231124164931990

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

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

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

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

修改数据库密码

$ 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

image-20231124083928737

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

image-20231127105256517

$ 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

检查是否启动成功

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

安装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 ];thenecho "frps server not started"elsekill -9 $PIDecho "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 ];thenecho "java server not started"elsekill -9 $PIDecho "java server stoping...."
fi
# 启动程序
nohup java -jar $BASE/$FILE >/dev/null 2>&1 &
echo 'java server starting...'

绑定域名

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

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

image-20231124103605024

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

image-20231124103717742

总结

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

(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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小辰的智慧树(差分+前缀和)

登录—专业IT笔试面试备考平台_牛客网 1.考虑总长度之和不能超过m&#xff0c;2考虑限制每棵树高度不能低于ci&#xff0c;如果用二分最短输能截到的高度&#xff0c;还要另外去判断&#xff0c;是否每棵树mid都能严格大于ci &#xff0c;这样容易超时&#xff0c;换个角度&…

设计一个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为O(1)

设计一个算法&#xff0c;将链表中所有结点的链接方向“原地”逆转&#xff0c;即要求仅利用原表的存储空间&#xff0c;换句话说&#xff0c;要求算法的空间复杂度为O&#xff08;1&#xff09; 代码思路&#xff1a; 这里要求不用额外空间&#xff0c;那么就要考虑链表自身的…

西工大网络空间安全学院计算机系统基础实验一(45678)

接着来看第4个函数&#xff0c;int replaceByte(int x, int n, int c)&#xff0c;看题目给出的例子&#xff0c;replaceByte(0x12345678,1,0xab) 0x1234ab78。我们可以多写几个例子&#xff0c;进而找出规律&#xff0c;比如&#xff1a; replaceByte(0x12345678,2,0xab) 0…

SASS的导入文件详细教程

文章目录 前言导入SASS文件使用SASS部分文件默认变量值嵌套导入原生的CSS导入后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努…

使用Terraform创建Docker镜像和容器

为了实现自动化操作&#xff0c;Terraform需要明确指定所使用的提供者。因此&#xff0c;在主要的main.tf文件中&#xff0c;需要提供提供者的名称、源和版本信息。对于Docker&#xff0c;可以在main.tf中使用以下代码块。 1 Terraform配置模块 使用块和资源创建Terraform脚本…

每日一题:LeetCode-202.面试题 08.06. 汉诺塔问题

每日一题系列&#xff08;day 07&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

QT搭建的Ros/librviz的GUI软件

1.前言 开发初期学习了下面博主的文章&#xff0c;也报了他在古月局的课&#xff0c;相当于感谢吧。 ROS Qt5 librviz人机交互界面开发一&#xff08;配置QT环境&#xff09;-CSDN博客​​​​​​​r 软件前期也是参考他的开源项目 GitHub - chengyangkj/Ros_Qt5_Gui_App …

Java核心知识点整理大全22-笔记

目录 19.1.14. CAP 一致性&#xff08;C&#xff09;&#xff1a; 可用性&#xff08;A&#xff09;&#xff1a; 分区容忍性&#xff08;P&#xff09;&#xff1a; 20. 一致性算法 20.1.1. Paxos Paxos 三种角色&#xff1a;Proposer&#xff0c;Acceptor&#xff0c;L…

【SpringBoot3+Vue3】五【完】【实战篇】-前端(配合后端)

目录 一、环境准备 1、创建Vue工程 2、安装依赖 2.1 安装项目所需要的vue依赖 2.2 安装element-plus依赖 2.2.1 安装 2.2.2 项目导入element-plus 2.3 安装axios依赖 2.4 安装sass依赖 3、目录调整 3.1 删除部分默认目录下文件 3.1.1 src/components下自动生成的…

GO 集成Prometheus

一、Prometheus介绍 Prometheus&#xff08;普罗米修斯&#xff09;是一套开源的监控&报警&时间序列数据库的组合&#xff0c;起始是由SoundCloud公司开发的。随着发展&#xff0c;越来越多公司和组织接受采用Prometheus&#xff0c;社会也十分活跃&#xff0c;他们便…

re:Invent 2023:PingCAP 荣获亚马逊云科技 2023 年度合作伙伴奖项

2023 年 11 月 27 日 – 12 月 1 日&#xff0c; 2023 亚马逊云科技 re:Invent 在拉斯维加斯举办&#xff0c;亚马逊云科技合作伙伴奖项在合作伙伴颁奖晚会上颁布&#xff0c; PingCAP 荣获亚马逊云科技大中华区 “2023 年度 ISV 合作伙伴” 和 “2023 年度亚马逊云科技 Market…

离散时间信号的分析(数字信号处理实验1-2)

前言&#xff1a;该系列实验均使用matlab完成&#xff0c;实验课程为《数字信号处理》 文章目录 一.题目二.实验目的三.实验仪器四.实验原理实验所用的matlab函数解析离散时间信号实验原理&#xff1a; 五.实验步骤六.实验代码及实验结果完整代码1.线性卷积代码2.循环卷积运算…

WordPress 外链跳转插件

WordPress 外链跳转插件是本站开发的一款WordPress插件&#xff0c;能对文中外链添加一层过滤&#xff0c;有效防止追踪&#xff0c;以及提醒用户。 类似于知乎、CSDN打开其他链接的提示。 后台可以设置白名单 学习资料源代码&#xff1a;百度网盘 密码&#xff1a;123

前端已死?看看我的秋招上岸历程

背景 求职方向&#xff1a;web前端 技术栈&#xff1a;vue2、springboot&#xff08;学校开过课&#xff0c;简单的学习过&#xff09; 实习经历&#xff1a;两段&#xff0c;但都是实训类的&#xff0c;说白了就是类似培训&#xff0c;每次面试官问起时我也会坦诚交代&…

蓝桥杯每日一题2023.11.28

题目描述 三羊献瑞 - 蓝桥云课 (lanqiao.cn) 题目分析 本题首先进行观察可以确定 1.“三”为 1 &#xff08;十进制数字要进位进一位&#xff09; 2.“祥”一定不为 0 &#xff08;有前导0就不能算为 4 位数&#xff09; 使用搜索时将其特判 #include<bits/stdc.h> …

SparkRDD及算子-python版

RDD相关知识 RDD介绍 RDD 是Spark的核心抽象&#xff0c;即 弹性分布式数据集&#xff08;residenta distributed dataset&#xff09;。代表一个不可变&#xff0c;可分区&#xff0c;里面元素可并行计算的集合。其具有数据流模型的特点&#xff1a;自动容错&#xff0c;位置…

蓝桥杯day02——移动机器人

1.题目 有一些机器人分布在一条无限长的数轴上&#xff0c;他们初始坐标用一个下标从 0 开始的整数数组 nums 表示。当你给机器人下达命令时&#xff0c;它们以每秒钟一单位的速度开始移动。 给你一个字符串 s &#xff0c;每个字符按顺序分别表示每个机器人移动的方向。L 表…

《opencv实用探索·四》Mat图像数据类型转换和归一化显示

一种数据类型转为另一种数据类型&#xff0c;不改变图像大小&#xff0c;但每个像素值可能会变 src.convertTo(dst, type, scale, shift);Scale和shitf默认为0&#xff08;这两个参数也相当于对比度和亮度&#xff09; 现在有个8位图像&#xff0c;把8位转成32位 可以看到像素…

基于SSM的仓库管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

JS 倒计时方法(可改造)

起因&#xff1a; 写好备用。 代码&#xff1a; // 直接把方法写在了原型上&#xff0c;通过原型调用 /*** 倒计时* time_str String 到期时间(2023-11-28 16:50:00)* dom_obj Object 需要显示的倒计时的dom对象*/ Date.prototype.countdown function (time_str, dom_obj…