之前在北京工作的时候,技术开发与运维的工作是分开的,有专门的DBA、搞网络的、做服务器的等,而现在回到老家这边工作,没有单独专门做运维的,开发运维都是开发来做,其实我所说的运维也就限于部署层面的运维,真正的运维工作是很复杂繁琐的。
话不多说,操作系统Centos7,spring boot jar包单体应用部署(jdk1.8),MInio文件存储,Redis5.0,Nginx1.20、Oracle12C(Linux部署Oracle真的有些恶心,如果可以建议将Oracle数据库安装在Windows上面,本文介绍Oracle12C的静默安装步骤)。
1. JDK配置
- 下载Linux版jdk1.8压缩包,官网下载地址,如果觉得官网下载麻烦的话,提供我下载下来的1.8版本,不用1.8的可忽略,可评论或者私信我。
- 上传jdk压缩包到服务器路径下,我上传到了/usr/local/jdk下,tar -xzvf xxx.tar.gz
- 解压完成后,vi /etc/profile,在最后添加
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_202
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
- 执行source /etc/profile让配置生效,java -version查看是否配置成功,如配置成功显示:
- 如果系统默认安装了OpenJdk的话配置完之后不会生效,需要先把OpenJdk卸载掉,执行rpm -qa|grep java查看Openjdk信息:
执行rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64,卸载完成。
2. Nginx安装配置
- 系统依赖准备工作:执行yum install -y gcc gcc-c++ zlib zlib-devel libffi libffi-devel openssl openssl-devel pcre pcre-devel yum-utils vim wget tree htop
- 下载nginx源码包,官网下载。文件名:nginx-1.20.2.tar.gz
- 解压压缩包:
[root@localhost local]# tar -zxvf nginx-1.20.2.tar.gz
- 切换到解压后的路径
[root@localhost]# cd nginx-1.20.2
- 配置安装参数
[root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
- 编译安装
[root@localhost nginx-1.20.2]# make && make install
- 配置系统环境变量
[root@localhost nginx-1.20.2]# vim /etc/profile.d/nginx.sh
nginx.sh ⽂件内容如下:export PATH=“/usr/local/nginx/sbin:${PATH}”,source /etc/profile使环境变量生效。
- 启动nginx服务
[root@localhost /]# nginx
- 关闭nginx服务
[root@localhost /]# nginx -s stop
- 重新加载配置⽂件
[root@localhost /]# nginx -s reload
以上为nginx安装配置的常用操作。
3. Redis安装配置
- 安装GCC依赖
由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装
[root@localhost local]# yum install -y gcc
- 下载并解压安装包
[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz
[root@localhost local]# tar -zxvf redis-5.0.3.tar.gz
- 切换到redis解压目录下,执行编译
[root@localhost local]# cd redis-5.0.3
[root@localhost redis-5.0.3]# make
- 安装并指定安装目录
[root@localhost redis-5.0.3]# make install PREFIX=/usr/local/redis
- 启动服务
前台启动:
[root@localhost redis-5.0.3]# cd /usr/local/redis/bin/
[root@localhost bin]# ./redis-server
后台启动:
从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
[root@localhost bin]# cp /usr/local/redis-5.0.3/redis.conf /usr/local/redis/bin/
修改 redis.conf 文件,把 daemonize no 改为 daemonize yes
[root@localhost bin]# vi redis.conf
执行命令,后台启动
[root@localhost bin]# ./redis-server redis.conf
- 设置开机启动
添加开机启动服务
[root@localhost bin]# vi /etc/systemd/system/redis.service
添加以下内容:
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开机启动
[root@localhost bin]# systemctl daemon-reload
[root@localhost bin]# systemctl start redis.service
[root@localhost bin]# systemctl enable redis.service
创建 redis 命令软链接
[root@localhost ~]# ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis
redis服务操作命令:
systemctl start redis.service #启动redis服务
systemctl stop redis.service #停止redis服务
systemctl restart redis.service #重新启动服务
systemctl status redis.service #查看服务当前状态
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动
特别说明:
- redis rdb恢复数据,将rdb文件置于redis路径下,修改redis.conf配置文件,注意修改一下三个参数。
1 appendonly no
2 dbfilename dump.rdb
3 dir /usr/local/redis/bin
- redis安装完成后需要redis为可远程访问,修改redis.conf的bind属性为0.0.0.0即可
4. docker及docker-compose安装
- 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker-ce
yum install docker-ce
- 设置docker开机启动
sudo systemctl enable docker
sudo systemctl start docker
- 安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version #查看compose版本
5. Minio安装
我采用的是docker安装,前提需要安装docker及docker-compose,具体安装步骤在上一节有说明。
- 准备两个文件docker-compose.yml与nginx.conf,具体文件可评论或者私信我,算了我还是直接贴出来吧,有点长。。
- docker-compos.yml不能直接复制粘贴,有些需要改动为自己环境的配置,需要改动的地方在下面做了备注,具体文件如下:
version: '3.7'
# starts 4 docker containers running minio server instances.
# using nginx reverse proxy, load balancing, you can access
# it through port 9000.
services:
minio1:
image: minio/minio:RELEASE.2021-03-26T00-00-41Z
container_name: minio1
volumes:
- /home/miniodata/minio1-1:/data1 #设置为自己的挂载目录,挂载到数据盘
- /home/miniodata/minio1-2:/data2 #设置为自己的挂载目录,挂载到数据盘
expose:
- "9000"
environment:
MINIO_ROOT_USER: test #设置为自己的
MINIO_ROOT_PASSWORD: test123 #设置为自己的
command: server http://minio{1...2}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio2:
image: minio/minio:RELEASE.2021-03-26T00-00-41Z
container_name: minio2
volumes:
- /home/miniodata/minio2-1:/data1 #设置为自己的挂载目录,挂载到数据盘
- /home/miniodata/minio2-2:/data2 #设置为自己的挂载目录,挂载到数据盘
expose:
- "9000"
environment:
MINIO_ROOT_USER: test #设置为自己的
MINIO_ROOT_PASSWORD: test123 #设置为自己的
command: server http://minio{1...2}/data{1...2}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
nginx:
image: nginx:1.19.2-alpine
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "9000:9000"
depends_on:
- minio1
- minio2
## By default this config uses default local driver,
## For custom volumes replace with volume driver configuration.
volumes:
data1-1:
data1-2:
data2-1:
data2-2:
- nginx.conf文件如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# include /etc/nginx/conf.d/*.conf;
upstream minio {
server minio1:9000;
server minio2:9000;
}
server {
listen 9000;
listen [::]:9000;
server_name localhost;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://minio;
}
}
}
- 在文件存放目录下,执行docker-compose up -d(up启动所有服务,-d为后台运行服务容器),docker拉取及创建等操作一步完成,执行docker-compose down可以停用移除所有容器以及网络相关。如果觉得比较粗暴的话,也可以使用docker-compose start(启动已经存在的服务容器)或者是stop(停止正在运行的容器,可以通docker-compose start 再次启动)。具体docker-compose 命令不做赘述,自行百度即可。
- 执行请求即可:http://localhost:9000
至此minio安装完成,如果涉及到数据迁移的话,只关注挂载路径的数据文件即可,minio可以再次安装构建,只要源数据文件还在就行,Windows环境的安装及spring boot集成minio可参考我另一篇文章:Windows安装minio8及spring boot整合
6. Oracle12C安装配置
实际开发过程中,如果项目不是非得用Oracle及Centos的话,还是建议可以使用MySQL或者是数据库申请Windows服务器,因为在centos上面安装Oracle比MySQL要复杂的多。之前用过图形化安装Oracle,我感觉还是有些复杂,所以本篇介绍Oracle的静默安装步骤(我以后反正是能不用centos安装Oracle就不用)。