CentOS常用软件安装
1. java8
1.1 清除旧的
有一些服务器会自带java8
- 使用指令
rpm -qa|grep jdk查看copy-jdk-configs-4.0-1.hce2.noarch java-1.8.0-openjdk-headless-1.8.0.342.b07-0.hce2.x86_64 java-1.8.0-openjdk-1.8.0.342.b07-0.hce2.x86_64 java-1.8.0-openjdk-devel-1.8.0.342.b07-0.hce2.x86_64 - 卸载(将每个相关的卸载)
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.342.b07-0.hce2.x86_64
1.2 离线安装
(如果有网可通过wget下载安装包)
- 在官网上下载对应版本的rpm安装包
- 安装:
rpm -ivh jdk-8u371-linux-x64.rpm - 验证:
java/javac/java -version - 参考
1.3 在线安装
yum install -y java-1.8.0-openjdk-devel.x86_64- 验证安装即可
- 参考:
2. tomcat8
2.1 学习整理
tomcat学习整理, 会一直更新.
2.2 安装
-
下载: 官网下载tar.gz压缩包,
apache-tomcat-8.5.81.tar.gz为例 -
上传: 将压缩包上传到服务器的一个目录上
-
解压:
tar -zxvf apache-tomcat-8.5.81.tar.gz -
重命名:
mv apache-tomcat-8.5.81.tar.gz tomcat -
移动到安装目录(位置随意):
mv tomcat /usr/local/tomcat -
创建tomcat.service,
vi /etc/systemd/system/tomcat.service, 并输入(注意java路径和tomcat路径):[Unit] Description=Tomcat Web Application Container After=syslog.target network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/ Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/usr/local/tomcat/ Environment=CATALINA_BASE=/usr/local/tomcat/ Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh User=root Group=root UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target -
常用指令
- 启用: systemctl enable tomcat
- 开启: systemctl start tomcat
- 查看状态: systemctl status tomcat
- 停止: systemctl stop tomcat
- 重启: systemctl restart tomcat
-
验证:
curl localhost:8080 -
修改默认端口8080为80,
vi /usr/local/tomcat/conf/service.xml, 差不多69行(或者通过/ + 输入8080寻找)<Connector port="80" protocol="HTTP/1.1"...将
8080修改成80即可 -
重启tomcat:
systemctl restart tomcat -
端口放行
- 放行:
firewall-cmd --add-port=80/tcp --permanent - 查看是否添加进去了:
firewall-cmd --list-port - 重载:
firewall-cmd --reload - 验证: 同局域网内机器上
curl ip:80
- 放行:
-
参考:
3. mysql8
3.1 yum安装
- 库:
yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm -y - 装:
yum install mysql-community-server -y- 报key错误, 跳过:
yum install --nogpgcheck mysql-community-server -y - 也可以选择使用
rpm --import <url>导入对应版本的key
- 报key错误, 跳过:
- 启动并自启:
systemctl enable --now mysqld - 修改密码:
- 默认密码:
grep 'temporary password' /var/log/mysqld.log - 登录(不能命令行输入密码, 就-p后控制台shift+insert粘贴):
mysql -p t&ki3u&+ib7X - 修改密码(可以设置得困难点):
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; - 简单密码异常:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements- 校验规则:
set global validate_password.policy=0; - 密码长度:
set global validate_password.length=1;
- 校验规则:
- 验证: 退出后使用mysql -p验证密码是否可以登录
- 默认密码:
- [选] 修改远程连接
- 登录到mysql中
- host限制:
update mysql.user set host='%' where user="root"; - 刷新:
flush privileges;
- [选] 端口放行
- 放行:
firewall-cmd --add-port=3306/tcp --permanent - 查看是否添加进去了:
firewall-cmd --list-port - 重载:
firewall-cmd --reload - 验证: 在非本机上使用软件通过ip直接访问
- 放行:
- 为了安全可以使用ssh登录, 这样不不用配置远程连接了和端口放行了
- 参考
3.2 离线安装
- 下载: 在官网下载对应服务器版本的mysql版本压缩包, 比如:
mysql-8.0.32-el7-x86_64.tar.gz - 上传到
/usr/local下 - 解压:
tar -zxvf mysql-8.0.32-el7-x86_64.tar.gz - 卸载mariadb
- 查找是否存在:
rpm -qa | grep mariadb - 卸载:
rpm -e --nodeps mariadb-libs
- 查找是否存在:
- 创建mysql用户和用户组
- 组:
groupadd mysql - 用户并添加到组内:
useradd -g mysql mysql
- 组:
- 赋予mysql目录权限(最后一个是目录):
chown -R mysql:mysql mysql/ - mysql配置文件,
vim /etc/my.cnf, 其中local_case_table_names=1是忽略大小写[mysql] default-character-set=utf8mb4 [client] #port=3306 socket=/var/lib/mysql/mysql.sock [mysqld] user=mysql general_log = 1 general_log_file= /var/log/mysql/mysql.log socket=/var/lib/mysql/mysql.sock basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data log-bin=/usr/local/mysql/data/mysql-bin innodb_data_home_dir=/usr/local/mysql/data innodb_log_group_home_dir=/usr/local/mysql/data/ character-set-server=utf8mb4 lower_case_table_names=1 autocommit=1 default_authentication_plugin=mysql_native_password symbolic-links=0 # Disabling symbolic-links is recommended to prevent assorted security risks # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/usr/local/mysql/data/mysql.log pid-file=/usr/local/mysql/data/mysql.pid # # include all files from the config directory - 给配置文件权限:
chown 777 /etc/my.cnf - 添加环境变量
- 打开:
vim /etc/profile - 最后添加:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib - 生效:
source /etc/profile
- 打开:
- 初始化数据库:
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize, 会输出日志如下(最后一行是默认密码):2023-04-18T06:52:34.464698Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release. 2023-04-18T06:52:34.464786Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead. 2023-04-18T06:52:34.464809Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.32) initializing of server in progress as process 11924 2023-04-18T06:52:34.480151Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2023-04-18T06:52:34.946560Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2023-04-18T06:52:36.589592Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: fGzmjdZXj0<p - 进入到mysql目录中复制执行文件:
cp -a ./support-files/mysql.server /etc/init.d/mysql cp -a ./support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysql chmod +x /etc/init.d/mysqld - 创建mysql socket文件
- 创建目录:
mkdir /var/lib/mysql - 赋用户权限:
chown -R mysql:mysql /var/lib/mysql
- 创建目录:
- 通过service操作 (start | stop | restart | reload | force-reload | status)
- 启动:
service mysql start - 重启:
service mysql restart - 停止:
service mysql stop
- 启动:
- 启动后, 进入修改密码
- 进入:
/usr/local/mysql/bin/mysql -p, 回车输入密码(初始化数据库那个默认密码) - 修改:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '5h%jqTlsjfgm0UjHksklP3vL'; - 如果设置简单密码处理方式同上面的在线安装
- 刷新:
flush privileges; - exist退出, 再次使用新密码测试连接
- 进入:
- 远程配置方式和端口放行也同上面的在线安装方式
- 配置service,
vim /etc/systemd/system/mysql.service[Unit] Description=MySQL Server After=network.target [Service] Type=forking User=mysql ExecStart=/etc/init.d/mysql start ExecStop=/etc/init.d/mysql stop [Install] WantedBy=multi-user.target - 关闭使用service启动的mysql,
service mysql stop - 重载:
systemctl daemon-reload - 自启:
systemctl enable mysql - 启动:
syatemctl start mysql - 参考: centos7 离线安装mysql8
4. postgresql
会自动生成service, 目录在/usr/lib/systemd/system/下, 自己创建的service在这里和/etc/systemd/system/下都是可以生效, 区别是/usr/下的一般是软件安装时候自动生成的, /etc/下是用户自己定义的.
4.1 在线安装
- 官网PostgreSQL Downloads依次选择
Linux->Red Hat/Rocky/CentOS->1.软件版本最新就行->2.系统版本根据自己的选择对应版本->3.位数 x86_64就行下方会出现安装需要执行的指令, 逐条执行即可.sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql15-server sudo /usr/pgsql-15/bin/postgresql-15-setup initdb sudo systemctl enable postgresql-15 sudo systemctl start postgresql-15 - 修改密码
- 切换用户并切换sql模式:
sudo -u postgres psql - [1] 指明修改密码:
\password postgres, 回车等待输入密码 - [1] 输入两次密码
- [2] 在切换用户并切换sql模式之后输入:
alter user postgres with password 'your_new_password';也行 - 退出:
\q
- 切换用户并切换sql模式:
- [选] 远程连接需要修改(不配置远程连接可通过ssh通道连接)
-
postgresql.conf:- 端口, 如果需要修改在此文件中修改
vim /var/lib/pgsql/14/data/postgresql.conf, 修改成listen_addresses="*"
-
pg_hab.conf:vim /var/lib/pgsql/14/data/pg_hba.conf在
IPV4下添加host all all 0.0.0.0/0 md5
-
- [选] 防火墙放行(如果防火墙没有开可以跳过此步骤, 使用
systemctl status firewalld查看防火墙状态)- 放行:
firewall-cmd --add-port=5432/tcp --permanent - 重载:
firewall-cmd --reload
- 放行:
- [选] 日志配置
也在/var/lib/pgsql/15/data/postgresql.conflogging_collector: 日志收集功能, 默认开(on)log_directory: 日志的路径, 默认log, 可配置绝对路径/home/pgsql/log(需要手动创建目录, 且给postgresql用户权限)log_filename: 日志文件名, 默认postgresql-%a.log, 意思周为单位, 最多七个, 可更改为postgresql-%Y-%m-%d.log, 每天一个log_statement: 要记录哪些sql语句, none-不记录, ddl-create/alter/drop等, mod-insert/update/delete等, all-dll+mod, 建议配置mode即可
以下的可以都不修改log_duration: 是否记录sql执行的时间, 默认off, 可以修改为onlog_min_duration_statement: sql语句执行时间的最小阈值, 超过这个值时候才会如日志, 默认-1(不开启), 可以修改为0(记录所有)log_statement_stats: 确定是否记录每种 SQL 语句的执行统计信息,如执行次数、平均执行时间等。默认值为 off,表示不记录统计信息。你可以将其设置为 on,以记录统计信息。不建议开启文件会很大log_connections: 客户端连接事件, 默认off, 可修改on开启log_disconnections: 客户端断开事件, 默认off, 可修改on开启log_hostname: 记录客户端主机名, 默认off(只记录ip), 可修改on- 其余log配置可参考配置文件内说明
- 重启pgsql:
systemctl restart postgresql-15 - 参考:
4.2 离线安装
- 下载: https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7-x86_64/
- postgresql15-15.3-1PGDG.rhel7.x86_64.rpm
- postgresql15-libs-15.3-1PGDG.rhel7.x86_64.rpm
- postgresql15-server-15.3-1PGDG.rhel7.x86_64.rpm
- 按照顺序安装
rpm -ivh postgresql15-libs-15.3-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql15-15.3-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql15-server-15.3-1PGDG.rhel7.x86_64.rpm - 安装过程如果有libicu报错, 下载libicu-50.2-4.el7_7.x86_64.rpm安装即可
- 初始化:
/usr/pgsql-15/bin/postgresql-15-setup initdb - 开机自启:
systemctl enable postgresql-15 - 启动:
systemctl start postgresql-15 - 剩下步骤与4.1 在线安装无异(从第二条修改密码起)
- 参考: postgresql14离线安装
5. redis
5.1 编译环境
需要编译安装, 提前安装gcc pcre-devel openssl-devel zlib-devel
- 在线:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre-devel - 离线
- (需要安装的依赖来源:https://vault.centos.org/7.8.2003/os/x86_64/Packages/, 这个来源是老的, 如果需要手动下载使用: http://mirror.centos.org/centos/7/os/x86_64/Packages/即可)
- 共25个文件, 手动下载下来整理好了: 点击下载,
- 上传到服务器
- 使用
rpm -ivh *.rpm --nodeps --force批量安装
5.2 源码安装
- 官网下载: https://redis.io/download/, 比如
redis-7.0.11.tar.gz, 上传服务器 - 解压:
tar -zxvf redis-7.0.11.tar.gz - 切换目录:
cd redis-7.0.11 - 编译:
make - 安装:
make install PREFIX=/usr/local/redis, 不指定目录, 默认/usr/local/bin, 指定了会在目录下生成bin目录 - 复制配置文件:
cp redis.conf /usr/local/redis/bin/ - 修改:
vim /usr/local/redis/bin/redis.conf- 开启守护进程(后台运行):
daemonize yes - [非本地连接]关闭只允许本地连接: 关闭只允许本地:
# bind 127.0.0.1或者改成0.0.0.0 - [非本地连接]关闭保护模式:
protected-mode no - 端口:
port 6379 - 密码:
requirepass 123456 - 默认日志路径:
logfile "/usr/local/redis/bin/redis.log"// 需要手动创建出
- 开启守护进程(后台运行):
- 配置redis.service,
vim /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 - 重载:
systemctl daemon-reload - 开机自启:
systemctl enable redis - 启动:
systemctl start redis - [选] 防火墙放行
- 放行:
firewall-cmd --add-port=6379/tcp --permanent - 重载:
firewall-cmd --reload
- 放行:
- 连接测试:
- redis-cli
- rdm(稳定版本2021.4): https://codor.lanzoue.com/idvHXprxrpc
- rdm(新版本, 2022.5, 有时候会卡死): https://codor.lanzoue.com/igCcL10q2w9g
6. nginx
也需要先提前安装5.1中的内容
6.1 学习整理
学习使用过程整理了ngix安装与使用
6.2 源码安装
-
下载: https://nginx.org/en/download.html, 中的
Stable version, 以nginx-1.24.0.tar.gz为例 -
上传服务器
-
解压:
tar -zxvf nginx-1.24.0.tar.gz -
切换目录:
cd nginx-1.24.0 -
配置:
./configure -
配置(选, 如果需要https, 安装ssl证书的话):
./configure --with-http_ssl_module -
编译:
make -
安装:
make install, 默认安装目录/usr/local/nginx, 也可像redis一样指定安装目录 -
修改配置文件(简单配置), 安装目录下conf/nginx.conf
- 添加upstream mysservers节点,
http下与server同级的地方upstream myservers { # 可多个 # 输入ip端口和权重 server 127.0.0.1:8080 weight=1; } server节点下location中修改server { listen 80; server_name: localhost; location / { proxy_pass http://myservers; proxy_redirect default; #root html; #index index.html index.htm; } }
- 添加upstream mysservers节点,
-
注册nginx.service,
vim /etc/systemd/system/nginx.service[Unit] Description=Nginx HTTP Server After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.target -
重载:
systemctl daemon-reload -
开机自启:
systemctl enable nginx -
启动:
systemctl start nginx -
重载配置(修改配置后需要):
systemctl reload nginx -
测试能否实现转发, 访问机器上的
80端口, 看能否转发到8080端口上
7.keepalived
7.1 学习整理
- 可参考: keepalived的简单使用, 整理一些使用中常用的基本情况
7.2 源码安装
-
复制到
/opt下 -
解压:
tar -zxvf keepalived-2.2.7.tar.gz -
进入目录:
cd keepalived-2.2.7/ -
配置:
./configure --prefix=/usr/local/keepalived, 指定安装目录 -
编译:
make -
安装:
make install -
进入安装目录:
cd /usr/local/keepalived/会自动生成:
drwxr-xr-x. 2 root root 21 May 5 03:19 bin drwxr-xr-x. 4 root root 41 May 5 03:19 etc drwxr-xr-x. 2 root root 24 May 5 03:19 sbin drwxr-xr-x. 5 root root 40 May 5 03:19 share -
新建配置文件(同目录下有配置文件的demo可参考):
vim ./etc/keepalived/keepalived.conf备用服务器上的state 填入BACK_UP, 优先级小一点. 其他一样
! Configuration File for keepalived # 定义虚拟路由, 必须叫VI_1 vrrp_instance VI_1 { state MASTER #设置为主服务器, 备份服务器设置为BACKUP interface eth0 #监控的网络接口(ifconfig或者ip addr指令找出网卡) priority 100 #(优先级, 主机大一点, 备份机小一点) virtual_router_id 99 #同一个vrrp_instance下routerId必须是一致的 authentication { auth_type PASS #vrrp认证方式主备必须一致 auth_pass 12345 #密码 } virtual_ipaddress { 127.0.0.88 #虚拟ip, 主从一致, 可配置多个 } } -
修改service
使用离线方式安装keepalived后会自动生成keepalived.service文件位置在:
/usr/lib/systemd/system/keepalived.service注: 一般系统的或者安装程序自动生成的service文件会在
/usr/lib/systemd/system下用户自己配置的service一般会放在/etc/systemd/system/下, 两个目录下都可以用systemctl命令操作到.
-
默认的keepalived.service文件
[Unit] Description=LVS and VRRP High Availability Monitor After=network-online.target syslog.target Wants=network-online.target Documentation=man:keepalived(8) Documentation=man:keepalived.conf(5) Documentation=man:genhash(1) Documentation=https://keepalived.org [Service] Type=forking PIDFile=/run/keepalived.pid KillMode=process EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target -
修改后的keepalived.service文件
需要修改ExecStart命令后指向配置文件位置. -f /path/to/keepalived.conf
(因为默认的配置文件都在/usr/local/keepalived/etc/内, 就没有往/etc/keepalived/内复制)
[Unit] Description=LVS and VRRP High Availability Monitor After=network-online.target syslog.target Wants=network-online.target Documentation=man:keepalived(8) Documentation=man:keepalived.conf(5) Documentation=man:genhash(1) Documentation=https://keepalived.org [Service] Type=forking PIDFile=/run/keepalived.pid KillMode=process EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS -f /usr/local/keepalived/etc/keepalived/keepalived.conf ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
-
-
使用systemctl控制
- 重新加载service文件:
systemctl daemon-reload - 设置开机自启:
systemctl enable keepalived - 启动:
systemctl start keepalived - 重启:
systemctl restart keepalived - 关闭:
systemctl stop keepalived - 查看运行状态:
systemctl status keepalived
- 重新加载service文件:
-
keepalived的默认日志在/var/log/messages下, 修改日志方法参考这个
-
防火墙放行vrrp通信:
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent -
防火墙重载:
firewall-cmd --reload -
检查通信是否正常:
tcpdump -i eth0-nn host 224.0.0.18, 只有一个等级高为正常 -
通过访问虚拟ip查看是否由正在工作的主或备来处理ip内的请求.
8. nacos
8.1 学习整理
学习整理: springboot整合nacos和dubbo
8.2 源码安装
- 下载: https://github.com/alibaba/nacos/releases中下载, 比如:
nacos-server-2.2.3.tar.gz, win下就下载zip后缀的解压运行就可以. - 解压:
tar -zxvf nacos-server-2.2.3.tar.gz - 移动到安装目录:
mv nacos /usr/local/ - 配置
nacos.service,vim /etc/systemd/system/nacos.service[Unit] Description=Nacos Server After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/local/soft/jdk/jdk8 ExecStart=/usr/local/nacos/bin/startup.sh -m standalone ExecStop=/usr/local/nacos/bin/shutdown.sh PrivateTmp=true [Install] WantedBy=multi-user.target - 重载:
systemctl daemon-reload - 开机自启:
systemctl enable nacos - 启动:
systemctl start nacos - [选] 防火墙放行
- 放行:
firewall-cmd --add-port=8848/tcp --permanent - 重载:
firewall-cmd --reload
- 放行:
- 参考: CentOS安装Nacos
9. docker
9.1 学习整理
记录常用指令, 以nexus(部署maven私库的工具)为例
docker version: 查看docker客户端和服务器的版本信息docker info: 查看有关docker系统的详细信息, 如容器数、镜像数等docker search <image_name>: 从docker hub上搜索指定名称的镜像docker pull <image_name>: 从docker hub上下载指定名称的镜像docker images: 列出本地已下载的镜像docker run <image_name>: 基于指定的镜像, 运行一个容器. 如果本地不存在镜像会去hub上面尝试拉取.
格式:docker run -tid -p <host_port>:<container_port> --name <container_name> -v <host_path>:<container_path> --restart=always <image_name>
如:docker run -tid -p 8081:8081 --name nexus -v /usr/local/nexus/nexus-data:/nexus-data --restart=always sonatype/nexus3-d: 以后台(守护进程)模式运行容器-t: 分配一个伪终端(pseudo-TTY),使容器内的应用程序可以与终端进行交互,例如输出日志和接收输入-i: 保持标准输入打开,使得可以通过标准输入向容器内的应用程序发送数据, 习惯-tid搭配使用-p <host-port>:<container-port>: 将主机的端口映射到容器的端口, 前面是主机接口, 后面是容器端口-v <host-path>:<container-path>: 将主机的目录火文件挂载到容器中, 实现主机和容器之间的文件共享, 前面是主机目录, 后面是容器目录. 这样当容器删除时候挂在在外面的运行数据会保留. 例子中是共享的文件夹, 容器中的文件夹, 也即容器中配置的或内置的文件夹, 比如nexus就在/nexus-data中, MySQL一般在/var/lib/mysql; 可配置多个-v hp1/cp1 -v hp2/cp2即可. 需要记得在docker官网查询该容器所使用的用户id-e <variable-name>=<value>: 设置环境变量--name <container-name>: 指定容器名称, 如果不配置将随机生成名称--restart=<restart-policy>: 设置容器的重启策略no: 不自动重启, 容器退出或崩溃时不会自动重启它on-failure[:max-retries]: 在非正常退出时重启,max-retries是可选参数, 默认3.docker run --restart=on-failure:5 <image_name>always: 无论容器正常退出还是意外退出, docker引擎都会自动重启容器. 当docker服务器启动时, 容器也会自启. 想要自动启动的话, 建议配置这个unless-stopped: 除非显式停止容器, 否则容器会自动重启.
--network=<network-name>: 连接容器到指定网络--link=<container-name>:<alias>: 连接到另外一个容器, 并设置别名, 使容器可以与其他容器通信--rm: 在容器退出后立即自动删除容器. 也即配置--restart=always会不生效--entrypoint <command>: 覆盖容器的默认入口点(执行的指令), 比如: tomcat默认使bin下的start.sh可以通过此种方式使用catalina.sh当成启动的指令--user <username>: 指定运行用户名或用户id(uid)--privileged: 拥有访问主机设备和文件系统的能力
docker ps: 列出正在运行的容器, 指令后跟-a可查看所有的容器(包括未启动的)docker stop <container_id / container_name>停止运行指定id/name的容器docker rm <container_id / container_name>: 删除指定id的容器(如果未将主机目录挂载到容器中会将容器对应的配置文件/日志等运行数据一同删除掉), 删除之前需要先停止容器, 指令后添加-f代表强制执行docker rmi <image_name>: 删除指定名称的镜像, 指令后添加-f代表强制执行docker build <path_to_dockerfile>: 在指定路径下的dockerfile文件中构建镜像docker exec -it <container_id / container_name> <command>: 在正在运行的容器中执行指定命令docker logs <container_id / container_name>: 查看指定容器的日志输出-f / --follow: 同tail -f, 可实现实时日志跟踪效果-n: 最后的几行, 默认all-t: 最近多少分钟的, 具体docker logs --help查看
docker-compose up: 使用docker compose启动多个容器的应用程序docker-compose down: 使用docker compose停止多个容器的应用程序
docker swarm集群, 初始化集群, 其他机器作为管理或工作节点添加- 初始化:
docker swarm init --advertise-addr 192.168.10.101, 最后的ip换成本机的ip - 准备管理节点加入:
docker swarm join-token manager - 准备工作节点加入:
docker swarm join-token worker - 复制对应的指令在其他机器上运行
- 查看集群状态:
docker info - 查看集群节点:`docker node ls`
- 删除节点
- 将节点设置为维护模式:
docker node update --availability drain 节点名称|节点ID - 如果是管理节点, 变成工作节点:
docker node demote 节点名称|节点ID - 在想要被删除的节点上执行离开:
docker swarm leave - 在管理节点上删除节点:
docker node rm 节点名称|节点ID
- 将节点设置为维护模式:
- 创建服务:
docker service create --replicas 2 --name mynginx -p 80:80 nginxdocker service create:这是创建Docker服务的命令。--replicas 2:这是服务的副本数量。在这里,指定服务只有一个副本,即一个运行实例。--name mynginx:通过这个选项,为服务指定一个名称,这里是"mynginx"。-p 80:80:通过这个选项,将服务的端口进行映射。在这里,将宿主机的端口80映射到服务的端口80。这意味着你可以通过访问宿主机的端口80来访问运行在Docker服务中的Nginx。nginx:这是要运行的服务的镜像名称。在这里,使用的是Nginx镜像,这意味着将在Docker中创建一个运行Nginx的服务。
镜像也可以通过Dockerfile文件使用docker build -t [镜像名].来生成自己的镜像.
- 查看运行的服务:
docker service ls - 查看服务具体信息:
docker service inspect 服务名称|服务ID - 查看服务运行在哪些节点上:
docker service ps 服务名称|服务ID - 测试运行, 该集群下任意节点的 IP 地址都要能访问到该服务
- 扩展实例数:
docker service scale mynginx=5 - 删除服务
- 实例数改成0:
docker service scale mynginx=0, 这样就没有实例运行了 - 彻底删除:
docker service rm mynginx
- 实例数改成0:
- 初始化:
- 参考:
9.2 在线安装
- 安装yum工具:
yum -y install yum-utils, 失败的话需要换国内源. - 配置库:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - 安装:
yum install -y docker-ce
很不幸的是, 我在这一步报错了:
很明显说去找[root@hecs-26265 yum.repos.d]# sudo yum install docker-ce Docker CE Stable - x86_64 320 B/s | 385 B 00:01 Errors during downloading metadata for repository 'docker-ce-stable': - Status code: 404 for https://download.docker.com/linux/centos/2.0/x86_64/stable/repodata/repomd.xml (IP: 99.86.199.59) Error: Failed to download metadata for repo 'docker-ce-stable': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were triedhttps://download.docker.com/linux/centos/2.0/x86_64/stable/repodata/repomd.xml结果404了, 也就是没找到, 我们看这个地址中的2.0的位置, 很明显这里应该是centos的系统的版本, 所有改成7.9或者改成8(根据自己系统版本)就可以访问了, 那么我们如何去修改才可以让他执行时候用我们修改的而不是2.0呢:- 打开添加的docker库:
vim /etc/yum.repos.d/docker-ce.repo - 将其中的
$releasever改成7.9::%s/$releasever/7.9/g - 还有错的话把后面分支也换成
x86_64 - 最后执行安装(不要带
-ce):yum install -y docker
- 打开添加的docker库:
- 查看状态:
systemctl status docker - 开机自启:
systemctl enable docker - 开始运行:
systemctl start docker - 参考:
9.3 离线安装
- 下载安装包:
https://download.docker.com/linux/static/stable/x86_64/docker-24.0.5.tgz, 可以去https://download.docker.com/linux/static/stable/x86_64/ 挑选合适的安装包, 如果架构不是x64, 可以退上一级选合适的结构 - 上传到服务器
- 解压:
tar -zxvf docker-24.0.5.tgz - 将指令复制到
/usr/bin/下:cp -p docker/* /usr/bin/ - 创建docker.service:
vim /etc/systemd/system/docker.service[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID Delegate=yes KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target - 重载:
systemctl daemon-reload - 启动:
systemctl start docker - 状态:
systemctl status docker - 自启:
systemctl enable docker - 参考:
9.4 win安装
10. clickhouse
10.1 学习整理
由于未深究, 内容很少, 就没有单分出来一个文章.
代码: 点击跳转gitee库
整合springboot+mybatis plus的使用过程与mysql/pgsql类似, 配置分页插件, 自动填充createTime/updateTime等是一样的使用
数据库部分的sql语法与常用的sql语法类似
- 创建表(使用sql, 具体类型可以参考图形界面中的内容)
因为大多使用clickhouse来做日志存储, 一般都是来降序获取数据, 所以使用--drop table example_table; CREATE TABLE example_table ( -- id UUID DEFAULT generateUUIDv4(), id String COMMENT 'id', operate_id Nullable(Int32) COMMENT '操作人id', operate_name Nullable(String) COMMENT '操作人', ip Nullable(String) COMMENT 'ip', is_suc Nullable(Int8) COMMENT '是否成功 1-是(code200) 0-否', created_at DateTime64(3) COMMENT '创建时间' ) ENGINE = MergeTree() ORDER BY (created_at, id) PRIMARY KEY (created_at, id);create_time来排序, 查找时候会快一点MergeTree: 存储引擎, 常用的还有ReplacingMergeTree(去重引擎, 查询时候需要在表名后加final)PRIMARY KEY: 主键, clickhouse中主键没有单一约束, 也即可重复ORDER BY: 指明排序字段id String:主键id自增麻烦, 可以在mp中使用@TableId(type = IdType.ASSIGN_UUID)
- 整合springboot+mybatis-plus
- yml中driverClassName: 不会自动识别, 需要配置
com.clickhouse.jdbc.ClickHouseDriver - yml中url:
jdbc:clickhouse://localhost:8123/default?useTimeZone=true&useServerTimeZone=false&serverTimeZone=UTC - 分页插件修改:
PaginationInnerInterceptor innerInterceptor = new PaginationInnerInterceptor(DbType.CLICK_HOUSE); - 查插: 已经测试过了, 9千万条数据的条件筛选和分页(第1百万页, 每页20条耗时100毫秒左右)
- 删改: 只测试了
***ById发现是可以用的, 如果有需要时候, 在额外测试其他的情况能否适配, 建议参考官网
- yml中driverClassName: 不会自动识别, 需要配置
- 字段修改类型
- 新列:
ALTER TABLE your_table_name ADD COLUMN id_int Int32; - 值转类型复制到新列:
ALTER TABLE your_table_name UPDATE id_int = toInt32(id) WHERE isNotNull(id); - 删除旧列:
ALTER TABLE your_table_name DROP COLUMN id; - 重命名新列:
ALTER TABLE your_table_name RENAME COLUMN id_int TO id;
- 新列:
- sql
- 修改:
ALTER TABLE example_table UPDATE value = 10 WHERE user_id = 1; - 删除:
ALTER TABLE example_table DELETE WHERE action = 'test'; - 清空:
truncate example_table; - 分区信息:
SELECT partition, name, rows FROM system.parts WHERE table = 'example_table'; - 删除分区:
ALTER TABLE example_table DROP PARTITION '202310'; - TTL(生命周期):
LTER TABLE example_table MODIFY TTL event_date + INTERVAL 1 MONTH; - 正在执行的sql:
SELECT query_id, query, elapsed FROM system.processes;
- 修改:
- 参考:
10.2 在线安装
- 安装yum工具:
yum -y install yum-utils, 失败的话需要换国内源. - 配置库:
yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo - 安装:
yum -y install clickhouse-server clickhouse-client - 查看是否安装成功:
sudo yum list installed 'clickhouse*'
如果失败, 并且提示Error: GPG check FAILED- 一种是在安装指令后面添加
--nogpgcheck代表不进行检查 - 或者导入gpg:
rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG, 然后执行安装即可
- 一种是在安装指令后面添加
- 启动:
systemctl start clickhouse-server - 状态:
systemctl status clickhouse-server - 自启:
systemctl enable clickhouse-server - 查看是否运行成功:
curl localhost:8123, 返回Ok.算作成功 - 配置文件可写
chmod +w /etc/clickhouse-server/config.xmlchmod +w /etc/clickhouse-server/users.xml
- 修改配置信息:
vim /etc/clickhouse-server/config.xml- 将
<listen_host>0.0.0.0</listen_host>注释放开, 代表允许其他ipv4除ipv6的连接. - 其内的端口默认:
http:8123tcp:9000mysql:9004pgsql:9005
- 将
- 修改用户名密码:
vim /etc/clickhouse-server/users.xml- 如果默认用户的话, 同redis, 就在
clickhouse.users.default.password内写密码 - 设置用户名
在users下新增一对用户名标签以及密码(如下), 配置密码其他方式和其他属性可以参考文件内说明或官方文档<users> <test> <password>123456</password> </test> </users>
- 如果默认用户的话, 同redis, 就在
- 重启:
systemctl restart clickhouse-server - 端口放行
将config.xml内用到的端口允许通过防火墙- 放行:
firewall-cmd --add-port=8123/tcp --permanent - 重载:
firewall-cmd --reload
- 放行:
- 测试连接, 我使用的是dbeaver, 也可以使用tabix, 地址栏直接打开http://dash.tabix.io/
其他工具选择可以参考以下几个链接: 官方推荐, Notion, 知乎
如果第一次使用dbeaver, 恰好电脑上使用的java8环境, 可以单独下载要求的java版本11/17的免安装包, 将bin路径添加到dbeaver安装目录下的dbeaver.ini文件内的-vmargs前面, -vm后面要有回车:-vm C:\Program\Java\jdk-17.0.6\bin
10.3 离线安装
将在线安装的前三步使用以下三步代替
- 下载离线包: 从https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/, 下载以下最新/合适版本(可以通过搜索版本号, 去掉test)的四个文件:
clickhouse-common-static: ClickHouse编译的二进制文件。clickhouse-server: 创建clickhouse-server软连接,并安装默认配置服务clickhouse-client: 创建clickhouse-client客户端工具软连接,并安装客户端配置文件。clickhouse-common-static-dbg: 带有调试信息的ClickHouse二进制文件。
- 上传到服务器的一个单独文件夹中
- 安装:
rpm -ivh *.rpm
10.4 docker安装
docker的安装可以参考上面9. docker
在win上可使用docker安装, 如果网络不好可以给给docker配置国内的源
数据目录和日志目录在下面连接中也有
/var/lib/clickhouse/- main folder where ClickHouse stores the data/var/log/clickhouse-server/- logs
docker run -d \
-v $(realpath ./ch_data):/var/lib/clickhouse/ \
-v $(realpath ./ch_logs):/var/log/clickhouse-server/ \
--name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
10.5 安装参考
11. nexus3
要求安装java运行环境
11.1 学习整理
只简单涉及上传和拉取, 只是涉及到releases类型的配置和使用, 如果需要使用快照或者public等对应配置即可.
- 配置可重新部署: 在设置中
Repository->Repositories->maven-releases->Hosted->Deployment policy修改成Allow redeploy(可重新部署同版本号的版本) - 文件上传
nexus安装之后默认有两个目录maven-releases和nuget-hosted供上传, 我们以maven-releases为例.File: 选文件上传, 以jar包为例Extension: jarGroup ID: com.test.apiArtiface ID: test-apiVersion: 1.0- 勾选
Generate a POM file with these coordinates.
- 项目上传
- 创建maven项目
- pom.xml中配置:
<groupId>com.maven.private1</groupId> <artifactId>maven-private1</artifactId> <version>2.23</version> <packaging>jar</packaging> <!-- 与dependencies同级 --> <distributionManagement> <!-- 快照使用snapshotRepository --> <repository> <!-- 与settings.xml中<server>的id相同 --> <id>my-server</id> <name>Release repository</name> <url>http://127.0.0.1:8081/repository/maven-releases/</url> </repository> </distributionManagement> mvn deplay: 进行部署(或者在idea中双击deplay也行)
- 拉取
- 修改本地maven的
settings.xml中配置(一般在自己用户下.m2目录下)
配置完的文件: https://codor.lanzoue.com/io2ov18cp0if?password=set, 密码: set servers内添加用户名密码<server> <id>my-server</id> <username>admin</username> <password>admin123</password> </server>mirrors中添加镜像<mirror> <id>my mirror</id> <name>my mirror</name> <url>http://127.0.0.1:8081/repository/maven-releases/</url> <mirrorOf>*</mirrorOf> </mirror>profiles添加配置文件<profile> <id>my-nexus</id> <repositories> <repository> <id>nexus</id> <name>my nexus releases</name> <url>http://127.0.0.1:8081/repository/maven-releases/</url> </repository> </repositories> </profile>activeProfiles激活配置文件:<activeProfile>my-nexus</activeProfile>- 在项目的pom文件中填写坐标, 拉取就行
<dependency> <groupId>test-api</groupId> <artifactId>com.test.api</artifactId> <version>1.0</version> </dependency>
- 修改本地maven的
- 参考
11.2 离线安装
- 下载安装包: https://help.sonatype.com/repomanager3/product-information/download
- 或者通过
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz下载 - 解压:
tar -zxvf nexus-3.60.0-02-unix.tar.gz - 移动并重命名:
mv nexus-3.60.0-02 /usr/local/nexus/ - 文件解释
/usr/local/nexus/bin/nexus.rc可指定执行人/usr/local/nexus/bin/nexus.vmoptions是配置java执行参数(有日志和数据位置)/usr/local/nexus/etc/nexus-default.properties中可修改默认端口8081
- 指令,
/usr/local/nexus/bin/nexus, 后面跟start: 启动status: 查看状态stop: 停止restart: 重启
- 测试: 启动nexus之后浏览器中输入
ip:8081, 进入页面- 登录: 点击登录之后有提示
Your admin user password is located in/usr/local/sonatype-work/nexus3/admin.password on the server., sonatype-work是运行数据目录, 包括日志和数据等 - 去路径中复制密码后登录, 会提醒修改密码, 此处我设置
admin123
- 登录: 点击登录之后有提示
- 配置服务,
vim /etc/systemd/system/nexus.service
需要指定一下环境变量JAVA_HOME(通过echo $JAVA_HOME看到确实有这个变量, 而且命令行直接输入java也可以显示出来, 但是通过systemctl start nexus的报错信息Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.在nexus.service中配置上JAVA_HOME之后就可以了)[Unit] Description=nexus service After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/local/soft/jdk/jdk8 ExecStart=/usr/local/nexus/bin/nexus start ExecStop=/usr/local/nexus/bin/nexus stop User=root Group=root UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target - 重载:
systemctl deamon-reload - 启动:
systemctl start nexus - 开机自启:
systemctl enable nexus - 停止:
systemctl stop nexus - 重启:
systemctl restart nexus - 防火墙(如果有开启防火墙的话, 如果是阿里云/华为云等需要在对应的网页配置上修改)
- 端口放行:
firewall-cmd --add-port=8081 --permanent - 重载:
firewall-cmd --reload
- 端口放行:
- 浏览器上访问:
ip:8081 - 参考:
11.3 docker安装
- 安装运行:
docker run -d -p 8081:8081 --name nexus -v /usr/local/nexus/nexus-data:/nexus-data --restart=always sonatype/nexus3docker run: 运行一个容器, 如果没有镜像(docker images查看)会自动下载最新的并运行-d: 后台运行-p 8081:8081: 端口影响, 将主机的8081映射到容器的8081上, 前面是主机的--name: 指明容器的名称, 不填默认随机单词-v host_path:container_path: 将主机路径挂接到容器内路径, 这样日志和数据会保存在主机上, 不会随着容器删除而删除--restart=always: 重启策略, always是当意外停止或者正常停止时候(包括重启机器或者docker)会自动运行该容器
- 检查运行:
docker ps -a, 其中-a是显示所有容器(包括停止的, 不加的话是显示正在运行的) - 如果在上一步中的
status中看到nexus看到是Restarting, 证明没有启动成功, 在重启中. 通过查找日志docker logs nexus的最上面会发现mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied, 说是权限不足, 创建sonatype-work目录时候被拒绝了, 因为sonatype-work是运行数据目录, 包括日志和数据等, 所以可以判断是-v挂接的主机路径权限问题, 通过chown -R 200 /usr/local/nexus/nexus-data/给目录赋予用户id为200的即可, 因为nexus docker镜像使用的用户id是200, 因为在官网https://hub.docker.com/r/sonatype/nexus3/有提到A persistent directory, /nexus-data, is used for configuration, logs, and storage. This directory needs to be writable by the Nexus process, which runs as UID 200., 设置完再次通过docker start nexus运行 - 浏览器访问:
ip:80801 - 登录时候账号为
admin, 密码在-v前面的主机目录内的admin.password, 使用cat/vim查看, 直接复制出来登录上然后按照提醒重置密码. - 参考:
12. openGauss
本软件的安装是基于Kylin Linux Advanced Server V10 (Lance), 系统镜像: 麒麟官网镜像下载中的海光版, 点进去是x86_64后缀.
12.1 学习整理
mybatis-plus连接opengauss(与连接pgsql的代码一样)测试代码: 代码
- 通过测试发现使用连接pgsql的方式连接openGauss的简单用法完全适配, 暂时先使用pgsql的
- 参考
12.2 直接安装
- 安装包获取: 官网链接
- 正式版:
openGauss 5.0.0 (LTS) - 架构:
x86_64, 根据自己系统使用uname -a或者lscpu(nkver也可)找到自己的Architecture. - 操作系统:
openEuler 20.03. LTS, 镜像包是Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso
https://eco.kylinos.cn/partners/mirror.html?class_id=1&query_key=V10(银河麒麟高级服务器操作系统V10(海光版))
如果是centos选择centos即可.
我的系统是是麒麟v10Kylin Linux Advanced Server V10 (Lance)
(通过cat /etc/os-release或者lsb_release -a或者cat /etc/centos-release获取),
我这里选择的系统版本是openEuler 20.0.3 LTS(没有找到麒麟和euler的版本对应) - 类型:
极简, 部署方式是单点服务器安装. 其他的类型的方式按照官网文档就行
- 正式版:
- 复制链接去服务器上通过
wget下载或者下载之后上传到服务器都可, 假如服务器目录是:/opt/openGauss/ - 解压:
tar -jxvf openGauss-5.0.0-openEuler-64bit.tar.bz2 - 用户
oom/用户组dbgrp- 组添加:
groupadd <group_name> - 创建用户并添加到组内:
useradd -G <group_name> <username> - 修改用户添加到组内:
usermod -G <group_name> <username> usermod -a -G <group_name> <username>: 添加-a之后是将用户添加到组中, 而不是替换其所在组.cat /etc/passwd: 查看用户列表
- 组添加:
- 给目录赋予权限:
chown -R oom:dbgrp /opt/openGauss - 切换用户:
su - oom - 转到安装目录:
cd /opt/openGauss/simpleInstall - 执行安装:
sh ./install.sh -w "221531,ww" &&source ~/.bashrc, 其中-w是指密码, 可以额外加-p指定端口 - 切换到bin目录:
cd /opt/openGauss/bin - 运行:
gs_ctl start -D /opt/openGauss/data/single_node -Z single_node或者/opt/openGauss/bin/gaussdb -D /opt/openGauss/data/single_node - 使用
./gsql -d postgres连接测试(-p指定端口). 连接上之后使用\q退出. - 因为默认密码加密方式是
sha256方式的, 而navicat和dbeaver连接pgsql(openGauss是基于pgsql改的)时默认密码加密方式是md5,
先修改加密方式:exit退出oom用户, 切换到root用户- 进去运行的节点目录:
cd /opt/openGauss/data/single_node - 修改配置文件:
vim pg_hba.conf, 在ipv4下添加一行host all all 0.0.0.0/0 md5 - 修改配置文件:
vim postgresql.conf:listen_addresses的注释放开, 值改成'*'password_encryption_type的值改成0
- 又因为默认用户(这里是
oom)是不允许远程登录的, 所以需要创建一个可以远程登录的数据库管理员.- 切换oom账号:
su - oom - 转到bin目录:
cd /opt/openGauss/bin - 重启一下数据库(使md5加密方式生效):
gs_ctl restart -D /opt/openGauss/data/single_node -Z single_node - 使用
./gsql -d postgres连接,-p指定端口 - 新增用户:
create user testuser password 'admin,123'; - 赋予超管角色:
alter role testuser sysadmin; - 查看该用户的密码加密方式:
SELECT rolpassword FROM pg_authid WHERE rolname = 'testuser';, 看密码的开始是否是md5
如果还是sha256, 检查上一步密码加密配置
- 切换oom账号:
- 配置服务
- 创建文件,
vim /etc/systemd/system/opengauss.service, (使用root账户创建即可)[Unit] Description=OpenGauss Simplified Database Server After=network.target [Service] Type=forking User=oom Group=dbgrp Environment=PGDATA=/opt/openGauss/data Environment=GAUSSHOME=/opt/openGauss Environment=LD_LIBRARY_PATH=/opt/openGauss/lib ExecStart=/opt/openGauss/bin/gs_ctl start -D /opt/openGauss/data/single_node -Z single_node ExecStop=/opt/openGauss/bin/gs_ctl stop -D /opt/openGauss/data/single_node -Z single_node [Install] WantedBy=multi-user.target - 停止数据库:
- 切换oom:
su - oom - 停止数据库:
/opt/openGauss/bin/gs_ctl stop -D /opt/openGauss/data/single_node -Z single_node - 退出oom:
exit
- 切换oom:
- 重载服务:
systemctl daemon-reload - 开机自启:
systemctl enable opengauss - 启动:
systemctl start opengauss - 状态:
systemctl status opengauss - 重启:
systemctl restart opengauss - 停止:
systemctl stop opengauss
- 创建文件,
- 防火墙, 官网建议防火墙关闭情况下安装
- 放行(极简版的端口默认是5432):
firewall-cmd --add-port=5432/tcp --permanent - 重载:
firewall-cmd --reload
- 放行(极简版的端口默认是5432):
- navicat/dbeaver连接测试
- 参考
13. kkFileView
13.1 简要流程
- java环境
- libreOffice或者openOffice选一
- 字体
- 安装kkfview
13.2 安装
- java环境, 1.8+
- libreOffice或openOfince
- libreOffice(官方推荐)
- 下载: https://zh-cn.libreoffice.org/download/libreoffice/?type=rpm-x86_64
- 解压:
tar -zxvf LibreOffice_7.6.3_Linux_x86-64_rpm.tar.gz - 切换到安装包目录:
cd LibreOffice_7.6.3.2_Linux_x86-64_rpm/RPMS/ - 安装所有的:
rpm -ivh *.rpm --nodeps --force - 测试版本(这里以7.6为例):
libreoffice7.6 --version - 如果有类似
/opt/libreoffice7.6/program/oosplash: error while loading shared libraries: libXinerama.so.1: cannot open shared object file: No such file or directory这样的报错, 需要安装下面的依赖包 - 常见的依赖包都从官方镜像中挑出来了: 点击下载
- 在安装之前一定要确认系统版本是CentOS7并且架构是x86_64的
- 解压上传, 使用
rpm -ivh *.rpm --nodeps --force进行安装
- openOffice
- 下载: https://www.openoffice.org/zh-cn/download/
- 解压:
tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-rpm_zh-CN.tar.gz - 进入rpm包:
cd zh-CN/RPMS/ - 安装全部:
rpm -ivh *.rpm --nodeps --force
- libreOffice(官方推荐)
- 字体
- 下载: https://kkfileview.keking.cn/fonts.zip
- 解压后上传到
/usr/share/fonts/kkfview, 如果没有目录:mkdir -p /usr/share/fonts/kkfview - 执行:
mkfontscale;mkfontdir;fc-cache - 如果找不到指且有网可以使用
yum -y install fontconfig mkfontdir安装 - 如果找不到指令且在内网时, 下载安装包: https://codor.lanzouu.com/b013uepgf?password=fonts
- 解压上传到服务器, 执行安装:
rpm -ivh *.rpm --nodeps --force - 再次执行:
mkfontscale;mkfontdir;fc-cache
- kkfileview
- 克隆代码: gitee 或 github
- 拉取依赖, 打包出来, 从
target中复制出kkFileView-4.4.0-SNAPSHOT.tar.gz, win上使用.zip的文件 - 上传服务器, 解压:
tar -zxvf kkFileView-4.4.0-SNAPSHOT.tar.gz - 修改名称:
mv kkFileView-4.4.0-SNAPSHOT kkFileView - 创建服务:
vim /etc/systemd/system/kkfview.service[Unit] Description=kkfileview Service After=network.target [Service] ExecStart=/opt/kkFileView/bin/startup.sh ExecStop=/opt/kkFileView/bin/shutdown.sh Type=forking Restart=on-failure User=root Group=root [Install] WantedBy=multi-user.target - 重载:
systemctl daemon-reload - 自启并启动:
systemctl enable --now kkfview - 注意: 如果提前使用start.sh启动, 需要执行shutdown.sh关闭再使用systemctl管理
- 查看日志:
./kkFileView/bin/showlog.sh - 防火墙放行:
- 放行:
firewall-cmd --add-port=8012/tcp --permanent - 重载:
firewall-cmd --reload - 测试:
curl ip:8012
- 放行:
13.3 参考
14. Elasticsearch
14.1 学习整理
14.2 安装
- 检查环境中是否有java11或以上,
java -version, 如果没有去官网下载jdk-11.0.23_linux-x64_bin.tar.gz - 下载, 以7.9.3为例
- 在https://www.elastic.co/cn/downloads/elasticsearch中选择
Linux x86_64, 然后下载. - 如果要选老版本, 在右侧
View Past releases中选择 - 改版本号:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
- 在https://www.elastic.co/cn/downloads/elasticsearch中选择
- 解压:
tar zxvf elasticsearch-7.9.3-linux-x86_64.tar.gz - 移动或重命名, 放在合适的位置(/home, /opt, /usr/local)
- 配置文件:
vim config/elasticsearch.yml, 其他内容都是注释状态, 可以解开修改, 或者添加在文件末尾.- 单点集群部署:
discovery.type: single-node - 节点监听的主机(配置0.0.0.0为不做显示, 可外网访问):
network.host: 0.0.0.0 - 对外提供HTTP服务的端口(默认9200, 可改可不改):
http.port
- 单点集群部署:
- 如果环境中不是java11或以上, 需要手动配置java11的路径
vim bin/elasticsearch- 脚本开始地方添加
export JAVA_HOME=/opt/jdk-11.0.1/ export PATH=$JAVA_HOME/bin:$PATH #添加jdk判断 if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/opt/jdk-11.0.1/bin/java" else JAVA=`which java` fi - 参考: Elasticsearch7.3.0启动指定JDK11
- 添加用户:
adduser es - 配置权限:
chown -R es:es /opt/elasticsearch - 切换用户:
su es - 后台启动:
./bin/elasticsearch -d - 检查是否正常启动:
curl localhost:9200 - 记录一下启动时候遇到的问题
- java版本不匹配
- 报错的一部分:
future versions of Elasticsearch will require Java 11; your Java version from [/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre] does not meet this requirement - 原因: 要求java11或更高的版本
- 解决方法: 使用上面手动java的方法
- 报错的一部分:
- 不能用root启动
- 报错的一部分:
java.lang.RunTineException: can not run elasticsearch as root - 原因: 基于安全考虑, 不允许root启动
- 解决方法: 使用上面添加用户和修改文件所有人和组的方法
- 报错的一部分:
- 垃圾收集器过期
- 报错的一部分:
Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. - 原因:
UseConcMarkSweepGC在java9中以及被标为弃用 - 解决方法:
vim config/jvm.options, 将-XX:+UseConcMarkSweepGC改为-XX:+UseG1GC - 参考: UseConcMarkSweepGC was deprecated
- 报错的一部分:
- 虚拟内存太低
- 报错的一部分:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] - 原因: es的启动检查(bootstrap checks)会在启动时检查一些系统设置和配置项是否满足要求
- 解决方法:
vim /etc/sysctl.conf在最后添加vm.max_map_count=262144, 保存执行sysctl -p使其生效 - 参考: max virtual memory areas
- 报错的一部分:
- java版本不匹配
- 配置service,
vim /etc/systemd/system/elasticsearch.service, 在使用stop时候会报错, 但是可以关闭.[Unit] Description=Elasticsearch Service After=network.target [Service] Type=simple User=es Group=es ExecStart=/opt/elasticsearch/bin/elasticsearch EExecStop=/opt/elasticsearch/bin/elasticsearch --force Restart=on-failure #Environment="ES_JAVA_OPTS=-Xms512m -Xmx512m" #EnvironmentFile=-/opt/elasticsearch/config/elasticsearch.env LimitNOFILE=65536 [Install] WantedBy=multi-user.target- 重载:
systemctl daemon-reload - 启动, 启动之前需要使用kill将之前的关掉, 自启并启动:
systemctl enable --now elasticsearch
- 端口放行
- 放行:
firewall-cmd --add-port=9200/tcp --permanent - 重载:
firewall-cmd --reload
- 放行:
- 可视化工具
- kibana: centos7 安装 kibana-7.9.3
- 参考
15. RocketMQ
15.1 学习整理
-
pom引入
rocketmq-spring-boot-starter依赖<!--rocketmq--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency> -
yml配置, 最主要的是
name-server和grouprocketmq: consumer: group: springboot_consumer_group # 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值 pull-batch-size: 10 name-server: 10.5.103.6:9876 producer: # 发送同一类消息的设置为同一个group,保证唯一 group: springboot_producer_group # 发送消息超时时间,默认3000 sendMessageTimeout: 10000 # 发送消息失败重试次数,默认2 retryTimesWhenSendFailed: 2 # 异步消息重试此处,默认2 retryTimesWhenSendAsyncFailed: 2 # 消息最大长度,默认1024 * 1024 * 4(默认4M) maxMessageSize: 4096 # 压缩消息阈值,默认4k(1024 * 4) compressMessageBodyThreshold: 4096 # 是否在内部发送失败时重试另一个broker,默认false retryNextServer: false -
提供者(推送到队列)
import cn.hutool.log.StaticLog; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.stereotype.Service; @Service public class MqService { private final RocketMQTemplate rocketmqTemplate; public void send(String messageStr) { SendCallback sendCallback = new SendCallback() { @Override public void onSuccess(SendResult sendResult) { StaticLog.info("mq成功: {}", messageStr); } @Override public void onException(Throwable throwable) { StaticLog.info("mq失败: {}, err: {}", messageStr, throwable.getMessage()); throwable.printStackTrace(); } }; rocketmqTemplate.asyncSend("topic", messageStr, sendCallback); } } -
消费者(接收队列中的消息)
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Component; @Component @RocketMQMessageListener(topic = "your_topic_name", consumerGroup = "your_consumer_group_name") public class MyConsumer implements RocketMQListener<String> { @Override public void onMessage(String message) { // 处理消息的逻辑 System.out.println("Received message: " + message); } } -
参考
15.2 安装
- 需要环境java8以上
- 下载: https://rocketmq.apache.org/download/, 选择
Binary 下载下合适版本进行下载 - 在自己电脑上解压, 或者在上传服务器使用
unzip解压 - 使用
mv重命名, 这里以rocketmq为准 - 修改jvm参数, 一般默认堆大小是内存的1/4, 可能出现不够出现启动失败的情况
- 修改
bin/runbroker.sh文件中大概103行:JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx4g" - 修改
bin/runserver.sh- 大概89行(小于java9):
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx4g" - 大概94行(大于等于java9):
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
- 大概89行(小于java9):
- 修改
- 配置文件
conf/broker.conf, 最后添加三行, 其中ip是当前机器的ipautoCreateTopicEnable = true namesrvAddr=10.154.196.55:9876 brokerIP1 = 10.154.196.55- 清除逻辑
- 默认配置在凌晨4点时候会将48小时之前的已消费的处理掉
- 另外一种删除逻辑是磁盘限制:
diskMaxUsedSpaceRatio=88, 超过88%时会删除之前已消费的
- 清除逻辑
- 环境变量
vim /etc/profile- 最后添加
export ROCKETMQ_HOME=/opt/rocketmq-4.9.4/ export PATH=${ROCKETMQ_HOME}/bin:$PATH sourcce /etc/profile
- 修改指令可执行权限
chmod +x bin/mqshutdown chmod +x bin/mqbroker chmod +x bin/mqnamesrv chmod +x bin/tools.sh - 运行, 切换到bin目录
- 运行name server(注册中心):
nohup mqnamesrv & - 查看日志:
tail -f ~/logs/rocketmqlogs/namesrv.log - 运行broker(管理消息):
nohup mqbroker -c /home/rocketmq/conf/broker.conf & - 查看日志:
tail -f ~/logs/rocketmqlogs/broker.log
在最后会有Registering current broker to name server completed., 说明连接上namesrv - 关闭nameserv:
mqshutdown namesrv - 关闭broker:
mqshutdown broker, 要等关闭日志中执行关闭完全再重新启动
- 运行name server(注册中心):
- 测试接发
- 设置环境变量(如果开两个控制台, 需要每个里面都设置):
export NAMESRV_ADDR=localhost:9876 - 发:
tools.sh org.apache.rocketmq.example.quickstart.Producer - 收:
tools.sh org.apache.rocketmq.example.quickstart.Consumer
接收方会一直挂起等待消息接收.
- 设置环境变量(如果开两个控制台, 需要每个里面都设置):
- 配置service以便systemctl可以进行管理[选]
- name server
vim /etc/systemd/system/mqnamesrv.service[Unit] Description=Apache RocketMQ NameServer Service After=network.target [Service] User=root Group=root Type=simple ExecStart=/home/rocketmq/bin/mqnamesrv ExecStop=/home/rocketmq/bin/mqshutdown namesrv Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.targetsystemctl daemon-reloadsystemctl enable --now mqnamesrv, 启动之前需要手动停止之前运行的
- broker
vim /etc/systemd/system/mqbroker.service[Unit] Description=Apache RocketMQ Broker Service After=network.target [Service] User=root Group=root Type=forking ExecStart=/home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/broker.conf ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.targetsystemctl daemon-reloadsystemctl enable --now mqbroker, 启动之前需要手动停止之前运行的- 我在测试时发现运行
systemctl start mqbroker之后, 会一直卡在命令行不退出
可以将bin/runbroker.sh文件最后一部分修改:
这样修改之后虽然不能直接的在systemctl中查看到程序的返回结果, 但是可以通过查看日志来进行排查numactl --interleave=all pwd > /dev/null 2>&1 if [ $? -eq 0 ] then if [ -z "$RMQ_NUMA_NODE" ] ; then numactl --interleave=all $JAVA ${JAVA_OPT} $@ & #添加& else numactl --cpunodebind=$RMQ_NUMA_NODE --membind=$RMQ_NUMA_NODE $JAVA ${JAVA_OPT} $@ & #添加& fi else "$JAVA" ${JAVA_OPT} $@ & #添加& fi #添加返回码 exit 0
- name server
- 配置可视化管理页面dashboard
5.0以上必须使用源码打包, 以下可以使用发行版- 下载源码(需要有git环境):
git clone https://github.com/apache/rocketmq-dashboard - 修改
src/main/resources/application.yml中的server.port和namesrvAddrs(同机部署可不改) - 打包:
mvn clean package -Dmaven.test.skip=true - 上传运行:
nohup java -jar -Xms128m -Xmx128m -Xmn128m /home/rocketmq-dashboard/rocketmq-dashboard.jar >> /home/rocketmq-dashboard/console.log 2>&1 &
- 下载源码(需要有git环境):
- 参考
16. kingbase
人大金仓的数据库, 和pgsql兼容
尝试过手动安装, 参考Centos 安装 kingbase数据库
但是中间遇到以下几个问题
- 选字符分类时系统没有中文排序, 安装语言包之后可以通过了
- 安装过程中可选oracle/pgsql/mysql, 选的pgsql
- 初始化时openssl版本不支持某个算法, 升级openssl小版本也不行, 由于系统安装了很多其他软件就放弃了.
16.1 docker
- 下载
- 链接: KES-电科金仓官网
- 选择下面docker镜像
V8R6C9B14版本 - 选择对应的处理器版本, 通过
lscpu查看 - 得到
kdb_x86_64_V008R006C009B0014.tar
- 安装
- 前提安装好docker
- [选] 解压缩, 如果是
.tar.gz后缀的, 需要tar -zxvf /path/finename.tar.gz解压缩一下,.tar不需要解压缩 - 加载docker镜像:
docker load -i kdb_x86_64_V008R006C009B0014.tar - 查看镜像名称:
docker images, 得到kingbase_v008r006c009b0014_single_x86 - 运行实例:
docker run -d --name kingbasees-container -p 54321:54321 -e KS_PASSWORD=your_password kingbase_v008r006c009b0014_single_x86:v1- 挂载数据卷, 在-e后面添加
-v kingbase-data:/home/kingbase/userdata/data, 会映射到主机/var/lib/docker/volumes/kingbase-data/_data - --name 后面的实例名
- -p 后面的接口映射
- -e 密码
- 挂载数据卷, 在-e后面添加
- 查看运行情况:
docker ps -a
- 修改配置
- 进入容器内部:
docker exec -it kingbasees-container bash - 配置位置路径(配置与pgsql类似):
ll /home/kingbase/userdata/data/ - 连接数据库(无密码):
ksql -U system -d test- 改密码:
ALTER USER system WITH PASSWORD '新密码'; - 其他创建数据库, 创建用户, 用户赋权限百度查询
- 退出数据库(
\q)尝试链接:ksql -U sysdba -d test -h localhost -p 54321, 回车输入新的密码
- 改密码:
- 进入容器内部:
- 查看默认授权文件
直接安装的授权文件需要手动下载指定, docker的有个默认的 - 进入容器:
docker exec -it kingbasees-container bash - 查看授权文件:
cat /home/kingbase/userdata/etc/license.dat生产日期 --- 启用 --- 2024-06-27 产品名称 --- 启用 --- KingbaseES V8 细分版本模板名 --- 启用 --- SALES-企业版 V8R6 产品版本号 --- 启用 --- V008R006C 浮动基准日期 ------ 启用 有效期间 --- 启用 --- 90 用户名称 --- 启用 --- 官方网站试用授权 项目名称 --- 启用 --- 官方网站试用授权- 能看到是企业版
- 有效期90天

浙公网安备 33010602011771号