第一步就是能免密快速登录到服务器
如下方法是直接用命令行操作
安装 Remote - SSH
插件,即可在 VSCode 中进行配置
配置别名快速登录:ssh-config(也可以直接找到本机的 .ssh 配置进行修改)
Ctrl + Shift + P
,之后输入 ssh
点击配置 SSH 主机,随后的弹出框一般情况下点击一个就行
之后输入如下配置
Host lyn
HostName xx.xx.xx.xx
User root
# 就可以直接登陆了(需要输入密码)
$ ssh lyn
之后我们希望能免密快速登录
# 提示你输入密码,成功后可以直接 ssh 登陆
$ ssh-copy-id lyn
# 就可以直接登陆了(无需输入密码)
$ ssh lyn
Jenkins 本身是依赖 Java 的,所以我们需要先安装 Java 环境。不过不太推荐使用命令行安装 java 环境
# 查询一下都有哪些 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
$ 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
检查是否配置成功
$ 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 –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 端口
$ 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"
重新加载配置文件,之后重启 jenkins
# 重新加载 service 配置文件
$ systemctl daemon-reload
# 重启 jenkins
$ systemctl restart jenkins
直接访问 Jenkins 是无法展示页面的,需要将其加入到安全组中
打开浏览器,输入 IP + 对应端口,之后需要解锁 Jenkins
$ cat /var/lib/jenkins/secrets/initialAdminPassword
fc53e288a4ac429baa33b44b412dd7a1
安装推荐插件即可
额外插件安装:
插件名称 | 插件用途 |
---|---|
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,或者去官网直接下载
$ dnf install nginx
启动 Nginx
$ systemctl start nginx
$ systemctl stop nginx
$ systemctl restart nginx
$ systemctl status nginx
$ systemctl enable nginx
检查是否启动成功
修改配置文件
$ 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
$ netstat -nutlp | grep 80
tcp6 0 0 :::80 :::* LISTEN 1/systemd
# 或者使用 lsof 查看端口
$ yum install lsof
lsof -i:80
解决方法:
# 停止进程
$ 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需要用到这个服务,所以可以禁掉
$ systemctl stop rpcbind.socket
$ systemctl stop rpcbind
$ systemctl disable rpcbind.socket
$ systemctl disable rpcbind
$ dnf install git-all
检查是否安装成功
Linux下安装GitLab仓库,史上最详细的教程来啦~
我的云服务器小于这个配置…
去官网下载或者使用 wget 下载到指定目录
$ 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
配置环境变量
$ 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
去官网下载或者使用 wget 下载到指定目录
解压 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
检查是否启动成功
官网下载: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
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
配置环境变量
$ 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
初始化数据库
$ initdb -D /home/postgres/pgdata -E UTF8 --locale=C -U postgres
配置允许访问的 IP,允许所有 IP 以 md5 方式访问
$ vim /home/postgres/pgdata/pg_hba.conf
host all all 0.0.0.0/0 md5
启动数据库
$ pg_ctl start
$ pg_ctl stop
$ pg_ctl restart
$ pg_ctl status
修改数据库密码
$ psql
alter user postgres with password 'your password';
退出 sql 命令行
$ \q
检查是否启动成功
如果想要暴露数据库到外面,需要修改 postgresql.conf
文件
$ vim /home/postgres/pgdata/postgresql.conf
listen_addresses = '0.0.0.0'
port = 5432
$ pg_ctl restart
之后再去云服务器把对应安全组放开,即可拿 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 是 c 语言开发,安装 redis 需要先将官网下载的源码进行编译,编译依赖 gcc 环境
$ yum install -y gcc gcc-c++
去官网下载或者使用 wget 下载到指定目录
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
安装 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
登录,没有密码直接按回车即可登录
$ 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
去官网选择对应版本进行下载
$ 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 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
检查是否安装成功
前端打 jar 包添加如下脚本命令:
"scripts": {
"mvn": "npm run build && mvn clean && mvn install"
}
把 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
检查是否启动成功
去 github 下载或者使用 cul 下载到指定目录
# 下载很慢
$ 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
检查是否安装成功
去 Github 上下载:https://github.com/fatedier/frp/releases/
内网穿透 frp : 隐藏通信隧道技术
在服务器端进行解压,并给 frps 执行权限。客户端的文件就没用了,可以删除(最新版默认配置为 toml 后缀)
$ 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
首先需要核对配置文件是否符合需求
# 修改数据库配置
$ 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
$ 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...'
首先需要购买域名,并进行域名备案
进入域名解析页面,点击新手引导
之后勾选 @
主机记录和 www
主机记录,输入对应网站 IP 即可。等待几分钟即可绑定成功
重启之后全部启动命令,包括: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