安装JDK
centos7 用yum安装java81.查看yum源中是否有相关套件yum -y list java*2.上图中可以看到有两个自己想用的套件,经过试验发现用yum install java-1.8.0-openjdk 时最后 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_6目录下只用一个jre文件(这跟平时有差异)
最后用 yum -y remove java-1.8.0-openjdk 的方式卸载之后重新 yum -y install java-1.8.0-openjdk-devel.x86_64 才是正常3.修改/etc/profile并且source /etc/profileJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH
安装MySQL
原文出处:https://www.cnblogs.com/ryanlamp/p/9687741.html
在CentOS7中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。
1.下载并安装MySQL官方的 Yum Repository
1. wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2. yum -y install mysql57-community-release-el7-10.noarch.rpm3. yum -y install mysql-community-server
安装过程中可能遇到如下报错无法安装,原因是Mysql的GPG升级了,需要重新获取
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2.MySQL数据库设置
首先启动MySQL
systemctl start mysqld.service
查看MySQL运行状态:
systemctl status mysqld.service
不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码
grep "password" /var/log/mysqld.log
进入数据库:
mysql -uroot -p密码
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
原因是因为MySQL有密码设置的规范,具体是与validate_password_policy的值有关:
MySQL完整的初始密码规则可以通过如下命令查看:
SHOW VARIABLES LIKE 'validate_password%';
解决方法就是修改密码为规范复杂的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'z?guwrBhH7p>';
这时候我们要把密码规则改一下,执行下面sql就可以了:
set global validate_password_policy=0;
set global validate_password_length=1;
设置之后就是我上面查出来的那几个值了,此时密码就可以设置的很简单,例如1234之类的。到此数据库的密码设置就完成了。
但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
yum -y remove mysql57-community-release-el7-10.noarch
配置算是完成了
可视化工具的登录授权:(如果授权不成功,请查看防火墙)
操作完成上面的,现在还不能用可视化的客户端进行连接,需要我们进行授权
grant all on *.* to root@'%' identified by '数据库密码';
vi /etc/my.cnf
修改mysql配置文件
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0#binlog-format=Row
#service-id=1
#log-bin=mysql-bin
#binlog_expire_logs_seconds=604800server-id=1log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid#back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。当前系统4096
back_log=3072
#禁用符号链接,防止安全风险.
symbolic-links=0
#对同一主机超过以下设置的参数值,则禁止连接
max_connect_errors=30
#禁用DNS解析
skip_name_resolve=1
#最大数据包大小
max_allowed_packet=64M#编码方式
character_set_server=utf8mb4
#初始链接时 设置
init_connect='SET NAMES utf8mb4'
#字符集排序规则
collation-server=utf8mb4_general_ci#最大连接数
max_connections=8000#所有线程能打开的表的数量。
table_open_cache=5120M
#每个数据库最大连接数
max_user_connections=800
#限制连接时间
wait_timeout=1800
#sql语句大小写敏感
lower_case_table_names=1#禁止复制进程随着数据库的启动而启动
skip-slave-start
#服务器线程缓存
thread_cache_size=64
#查询缓存
query_cache_type=1
query_cache_size=256M
#临时表占内存
tmp_table_size=2048M
#读入缓存
read_buffer_size=16M
#排序缓存
sort_buffer_size=16M
#每个客户端ORDER BY 缓存
read_rnd_buffer_size=16M
#表描述符缓存大小,可减少文件打开/关闭次数
table_open_cache=2048M
#查询块最小内存快
query_cache_min_res_unit=128M
#索引块缓存区大小
key_buffer_size=1G
key_cache_block_size=1M#开启慢查询日志
slow_query_log=1
#超过100则认为是慢查询
long_query_time=3# 慢查询日志目录
slow_query_log_file=/cloud.yunzhankeji/mysql/log/mysql-slow.log
#将没有使用索引的语句记录到慢查询日志
log_queries_not_using_indexes=1
#设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
log-slow-admin-statements=1
#记录从库上的慢查询
log_slow_slave_statements=0
#日志时间差异
log_timestamps=system
#开启bin-log日志,主要用来使用主从配置
log-bin=/cloud.yunzhankeji/mysql/log/mysql3306-bin
binlog_rows_query_log_events=1
binlog_format=ROW
binlog_rows_query_log_events=1
binlog_gtid_simple_recovery=1
#不开启二进制日志文件的数据库
binlog-ignore-db=information_schema
#不启二进制日志文件的数据库
binlog-ignore-db=cluster
#不启二进制日志文件的数据库
binlog-ignore-db=mysql
#日志过期时间 设置为0永不过期
expire_logs_days=30
#超过max_binlog_size或超过6小时会切换到下一序号文件
max_binlog_size=500Msql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT##innodb配置
innodb_lru_scan_depth=2000
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
#重做相位恢复 文件大小
innodb_log_file_size = 1024M
innodb_log_files_in_group = 3
innodb_lock_wait_timeout = 10
innodb_io_capacity = 4000
innodb_io_capacity_max = 65536
innodb_undo_logs=128
innodb_max_undo_log_size=1024M
innodb_purge_rseg_truncate_frequency
innodb_undo_log_truncate=1
innodb_file_format = Barracuda # is deprecated and will be removed
innodb_file_format_max = Barracuda # is deprecated and will be removed
#允许单列索引最大达到3072.否则最大为767
innodb_large_prefix=1
innodb_thread_concurrency=128
#死锁记录到error_log中
innodb_print_all_deadlocks=1
innodb_sort_buffer_size=16M
#重做相位恢复 缓存大小
innodb_log_buffer_size=64M
安装nacos
https://gitee.com/mirrors/Nacos
bash
1.选择一个稳定版本
2.mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
3.启动验证
3.1 解压这里把上面的nacos-server.zip复制到服务器验证。unzip nacos-server- v e r s i o n . z i p`cd nacos/bin
3.2 启动服务器Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):sh startup.sh -m standalone如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:bash startup.sh -m standaloneWindows启动命令(standalone代表着单机模式运行,非集群模式):cmd startup.cmd -m standalone3.3 登录nacos服务控制台验证在浏览器输入: http://ip:8848/nacos用户名/密码默认为:nacos/nacos
启动时出现如下错误:-bash: ./startup.sh: /bin/sh^M: bad interpreter: No such file or directory
按 esc ,然后按shift和:, 然后执行set ff=unix,按回车键,然后保存退出就可以了
借鉴文章:https://blog.csdn.net/qq_40374604/article/details/121483049
https://blog.csdn.net/hch15112345824/article/details/88874060
https://developer.aliyun.com/article/786617
安装redis
进入到/usr/local目录下
cd /usr/local
redis是c语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境
输入命令:
yum install gcc-c++
redis下载与安装
下载redis
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
下载时如果遇到卡住进度下不动了。
首先用 ctrl+z 结束下载,注意不要用 ctrl+c.
如果用了ctrl+c就是直接结束,因为wget是单线程的。
用 wget -c url 重新下载
记住先ctrl+z结束,然后wget -c url 继续下载
解压
tar -zxvf redis-4.0.2.tar.gz
进入redis目录并执行make命令编译
cd redis-4.0.2
make
安装
make PREFIX=/usr/local/redis install
安装完成后进入
cd /usr/local/redis/bin
目录 这个redis目录(redis的安装目录)是上一步命令安装自动创建的(不是redis-4.0.2目录(reids解压后的文件目录))
cd ../redis/bin
可以看到有一些可执行文件。
redis-server 是redis服务器
redis-cli 是redis客户端
返回/usr/local目录后进入redis-4.0.2
此目录下有个redis.conf文件
将该文件移动到/usr/local/redis/bin目录下
cp ./redis.conf /usr/local/redis/bin/
设置redis后台启动
vi redis.conf
daemonize设置为yes
redis启动
可以看到redis.conf已经移动到/usr/local/redis/bin目录下
./redis.server redis.conf
出现这个表示服务器启动成功
在xshell新建一个会话,输入ssh ip地址,在弹出的界面输入用户名密码
进入到/usr/local/redis/bin
cd /usr/local/redis/bin
启动redis客户端
./redis-cli
连接客户端成功
进行简单测试
Redis设置密码
运行cmd切换到redis根目录,先启动服务端
redis-server.exe
另开一个cmd切换到redis根目录,启动客户端
redis-cli.exe -h 127.0.0.1 -p 6379
客户端使用config get requirepass命令查看密码
config get requirepass
客户端使用config set requirepass yourpassword命令设置密码
config set requirepass 123456
一旦设置密码,必须先验证通过密码,否则所有操作不可用
config get requirepass
使用auth password验证密码
auth 123456
config get requirepass
redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
命令行设置的密码在服务重启后失效,所以一般不使用这种方式。
配置文件设置密码
在redis根目录下找到redis.windows.conf配置文件,搜索requirepass,找到注释密码行,添加密码如下:
requirepass tenny
重启服务后,客户端重新登录后发现
config get requirepass
密码还是空?
网上查询后的办法:创建redis-server.exe 的快捷方式, 右键快捷方式属性,在目标后面增加redis.windows.conf, 这里就是关键,你虽然修改了.conf文件,但是exe却没有使用这个conf,所以我们需要手动指定一下exe按照修改后的conf运行,就OK了。
所以,这里我再一次重启redis服务(指定配置文件)
redis-server.exe redis.windows.conf
客户端再重新登录,OK了。
redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456config get requirepass
客户端连接redis出错
Redis Client On Error: Error: connect ECONNREFUSED 192.168.xxx.105:6379 Config right?
解决方法:
修改配置文件
vim redis.conf#注释 这一行重新启动redis即可
#bind 127.0.0.1 -::1
安装nginx
1.先安装gcc-c++编译器
yum install gcc-c++
yum install -y openssl openssl-devel
2.再安装pcre包
yum install -y pcre pcre-devel
3.再安装zlib包
yum install -y zlib zlib-devel
下面进行nginx的安装
1.在/usr/local/下创建文件nginx文件
mkdir /usr/local/nginx
2.在网上下nginx包上传至Linux(https://nginx.org/download/),也可以直接下载
wget https://nginx.org/download/nginx-1.19.9.tar.gz
3.解压并进入nginx目录
tar -zxvf nginx-1.19.9.tar.gz
cd nginx-1.19.9
4.使用nginx默认配置
./configure --with-http_ssl_module
5.编译安装
make
make install
6.查找安装路径
whereis nginx
7.进入sbin目录,可以看到有一个可执行文件nginx,直接./nginx执行就OK了。
./nginx
9.查看是否启动成功
ps -ef | grep nginx
nginx常见配置
server{listen 3888 ssl;server_name tsg;root /dtwb/cloud/tsg_html;client_max_body_size 1000M;add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';# Load configuration files for the default server block.ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;ssl_certificate ssl解压的pem文件.pem; ssl_certificate_key ssl解压的key文件.key;location / {root /dtwb/cloud/tsg_html;index index.html index.html;}location /door/ {alias /dtwb/cloud/tsg_html_pc/;}location /api/ {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://172.27.0.11:80/;}location /eh_POI {root /dtwb/cloud;}}
执行java代码的脚本
APP_NAME="tsg-system.jar"
JAVA_OPTS="-Xms128m -Xmx128m"
CONFIG_PARAM="-Dspring.profiles.active=test -Dserver.port=8106"#使用说明,用来提示输入参数
usage(){
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java $JAVA_OPTS -jar $CONFIG_PARAM $APP_NAME > /dev/null 2>&1 &
fi
}#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}#重启
restart(){
stop
start
}#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
Dockerfile文件
FROM openjdk:8u201-jdk-alpine
#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8#声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp#应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD tsg-rank.jar app.jar#添加字体
RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig#启动容器时的进程 java -Xms128m -Xmx128m -jar -Dspring.profiles.active=test -Dserver.port=8106 tsg-system.jar
ENTRYPOINT ["java","-jar","-Xms128m","-Xmx128m","-Dspring.profiles.active=test","/app.jar"]#暴露端口,看自己jar包需要暴露什么端口吧
EXPOSE 8109
docker.sh文件
#rm -rf /dtwb/cloud/elev-government/rank/tsg-rank.jar
#cp /usr/local/jenkins/workspace/tsg-government/tsg-service/tsg-rank/target/tsg-rank.jar /dtwb/cloud/elev-government/rank/tsg-rank.jar
docker stop rank
docker rm rank
docker rmi rank
cd /dtwb/cloud/elev-government/rank/
docker build -t rank:1.0 .
docker run --name rank -p 8109:8109 -v /dtwb/cloud/eh_POI:/dtwb/cloud/eh_POI -d rank:1.0
服务器基本问题排查:
df -h 查看磁盘占用率。
free -h 查看内存占用率
top 查看cpu 占用率
top 中的 wa参数查看磁盘io占用率。
du -h --max-depth=1 查看最大文件方便出现磁盘满了的时候进行删除。
xfs_growfs /dev/vdb 磁盘容量不够进行磁盘扩容。 /dev/vdb是磁盘。
jmap -heap 进程id 查看gc情况