CentOS-Java 依赖安装
JDK 12 安装
1、下载jdk12
下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html
2、清楚自带的jdk
清除原有的jdk
Rpm –qa | grep java
卸载其他的jdk版本
yum remove xxx-xxx.xx
3、传输至centOS7后,解压
tar zxvf xxxxx12.0.1.tar
4、移动至/usr/local/目录下
mv mysql-12.0.1 /usr/local/
5、配置环境变量
export JAVA_HOME=/usr/local/jdk-12.0.1
export CLASSPATH=.:$JAVA_HOME/bin/dt.jar:$JAVA_HOME/bin/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
6、测试
Maven3.0安装
下载压缩包
传输至centOS7
解压
移动至/usr/local/下
配置环境变量
export MAVEN_HOME=/usr/local/apache-maven-3.6.1
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
测试
Mysql 8.0安装
1、清除原有的mysql
查询 : rpm -qa | grep mysql
清除 :yum remove xxxx-xxx
查找mysql相关文件:find / -name mysql
根据需求删除文件: rm –rf xxxmysqlxxx.xx
2、删除centOS默认数据库mariadb
查询 : rpm -qa | grep mariadb
清除 :yum remove xxxx-xxx
3、下载yum源
复制yum下载源地址: https://dev.mysql.com/downloads/repo/yum/
4、CentOS下载
Wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm (复制的下载地址)
5、安装yum源
yum localinstall mysql80-community-release-el7-2.noarch.rpm(文件名)
6、更新yum源
Yum clean all
Yum makecache
7、安装mysql
Yum install mysql-community-server
8、启动mysql
Systemctl start mysqld
9、查看初始化随机密码
cat /var/log/mysqld.log | grep password
10、登录并修改密码
Mysql –u root –p
Password: xsskjkhda(查看的密码)
修改:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
11、远程访问设置
Mysql> use mysql;
Mysql> update user set host='%' where user='root';
12、授权用户名的权限,赋予任何主机访问数据的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
13、允许myuser用户使用mypassword密码从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
14、允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
15、启动mysql
systemctl start mysqld.service
16、结束
systemctl stop mysqld.service
17、重启
systemctl restart mysqld.service
18、开机自启
systemctl enable mysqld.service
19、端口开放后, 使用Navicat for MySQL 连接 Mysql 8.0.12可能会出现问题 Client does not support authentication protocol 错误解决方法
#修改加密规则 (这行我没有写,不过貌似也可以)密码需要设置包含大小写字母符号和数字的格式,否则设置不会超成功
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新一下用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
#刷新权限
FLUSH PRIVILEGES;
Mysql57 yum安装
配置yum源
在MySQL官网中下载YUM源rpm安装包:
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
安装mysql
yum install mysql-community-server
启动MySQL服务
systemctl start mysqld
开机启动
systemctl enable mysqld
systemctl daemon-reload
修改root本地登录密码
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
如果无法查看到密码:
- 修改:/etc/my.conf文件
- 加上一行skip-grant-tables,表示跳过安全检查
- 重启mysql:service mysqld restart
- 登录:mysql -uroot
update user set authentication_string='Vote47107185177' where User='root';
允许远程连接
grant all on *.* to root@'%' identified by ' vote47107185177' with grant option;
flush privileges;
Tomcat 9 安装
1. 下载解压版,
2. 配置好jdk后可直接启动
3. 修改端口
4. /vim/tomcat9/conf/server.xml
5. 修改8080端口为你需要的端口
6. 启动测试
7. 查看启动文件/tomcat9/logs/xxx.log
防火墙及端口开放
1、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2、systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
3、配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
4、端口操作
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp –permanent
Redis安装
1.下载:
Wget http://download.redis.io/releases/redis-5.0.4.tar.gz
2.解压
tar xzf redis-5.0.4.tar.gz
3.编译:
cd redis-5.0.4
make
4.测试运行:
Src/redis-server
5.修改后端运行:
复制文件: cp redis.conf /opt/redis.5.0.1/src/
修改权限: chmod 777 /opt/redis.5.0.1/src/redis.conf
cd src
修改配置文件:
daemonize no(默认),改成 yes,意思是是否要后台启动。
注:云服务器端口默认是127.0.0.1,就算云服务器开启端口也无法连接,修改为0.0.0.0 或 公网ip地址或内网ip地址即可
6.启动测试
./redis-server redis.conf
7.查看是否启动
Ps –aux | grep 6379/redis
8.后台关闭(非必要请勿使用kill -9 强制关闭,可能造成数据丢失)
./redis-cli shutdown
Docker 安装
Docker简介:
Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。
核心概念:
- docker镜像(Images):Docker镜像是用于创建Docker容器的模板
- docker容器(Container):镜像启动后的一个实例称为容器,容器是独立运行的一个或一组应用,
- docker客户端(Client):客户端通过命令行或其他工具使用Docker API(https://docs.docker.com/reference/api/docker_remote_api)与Docker的守护进程进行通信
- docker主机(Host):一个物理或虚拟的机器用来执行Docker守护进程和容器
- docker仓库(Registry):Docker仓库用来存储镜像,可以理解为代码控制中的代码仓库,Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用
安装:
centOS内核版本支持:
uname –r (内核版本必须高于3.10)
移除旧版本:
yum remove docker
安装一些必要的系统工具:
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
yum makecache fast
安装 Docker-ce:
yum -y install docker-ce
启动 Docker 后台服务
systemctl start docker
设置docker设置为开机启动
Systemcl enable docker
镜像
搜索镜像
Docker search mysql/redis/tomcat….
下载镜像
Docker pull mysql/redis/tomcat….
查看下载的镜像列表
Docker images
删除镜像
Docker rmi IMAGE ID
docker rmi $(docker images -q) 删除所有镜像
容器->(下面以Tomcat为例)
创建容器
Docker run –name 容器名 –dit (镜像名称) ->(不指定ip映射,默认端口)
Docker run –name 容器名 –d –it –p 80:8080 (镜像名称) (指定端口映射80端口指向容器8080端口)
查看所以容器
Docker ps –a
查看运行中的容器
Docker ps -s
启动容器/停止容器/重启容器
Docker start/stop/restart NAMES(容器名)/ CONTAINER ID(分配的id)
删除容器
Docker rm CONTAINER ID(分配的id)
删除所有容器
docker rm $(docker ps -a -q )
查看容器日志
Docker logs NAMES(容器名)/ CONTAINER ID(分配的id)
查看端口映射
Docker port CONTAINER ID(分配的id)
登录容器
Docker exec –it NAMES(容器名)/ CONTAINER ID(分配的id) bash
安装指令
apt-get update; //更新源
apt-get install xxx;安装需要的指令
退出容器
Exit
修改容器端口映射
1、 使用 docker ps -a 命令找到要修改容器的 CONTAINER ID
2、 运行 docker inspect 【CONTAINER ID】 | grep Id 命令
3、 执行 cd /var/lib/docker/containers 命令进入找到与 Id 相同的目录
4、 停止 docker 引擎服务,systemctl stop docker 或者 service docker sto
5、 对应 Id 所在目录后,如上图所示,修改 hostconfig.json 和 config.v2.json
修改 vim hostconfig.json
取出 格式化:
修改好后压缩替换至hostconfig文件内
修改 vim config.v2.json(取出后,格式化修改)
启动docker
Systemctl restart docker
预览
Docker ps –a
从容器创建新镜像
Docker commit –a ‘提交镜像的作者’ –m ‘文字说明’ –p(可选,创建镜像时暂停容器) CONTAINER ID 镜像名(可:后面跟版本信息)
容器跟主机之间的数据拷贝
Docker cp 文件名 (CONTAINER ID/NAMES):(拷贝到容器的位置)
查看容器文件结构更改
Docker diff CONTAINER ID/NAMES
构建自己的镜像(SpringBoot)
先将项目打包成jar
mvn clean package -Dmaven.test.skip=true //不执行测试用例
将jar包上传至/opt/文件夹下(文件夹可以自定义)
可以使用ssh指令上传,也可以使用Xsell上传
添加权限
Chmod +x xxx.jar
创建Dockerfile文件(与jar文件同级目录->非必须),不同级则注意Dockerfile文件里面指定jar包的路径
Touch Dockerfile
编辑Dockerfile 插入
Vim Dockerfile
FROM openjdk:latest VOLUME /tmp ADD cheese.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE 8080 |
FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
ADD ,拷贝文件并且重命名
ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
EXPOSE 开放端口号
构建镜像
Docker build –t 镜像名 . //注意后面的. 代表是以Dockerfile文件构建,如果Dockerfile文件跟jar文件不在同级目录,则需要指定添加 –f Dockerfile文件路径
Nginx安装配置
安装环境
一. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc-c++
二. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
三. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
四. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
下载
Wget http://nginx.org/download/nginx-1.16.0.tar.gz
解压
Tar –zxvf nginxxxx.tar.gz
配置
cd nginx1.16.0
./configure --prefix=/usr/local/nginx --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre #生成 Makefile,为下一步的编译做准备
编译/安装
Make
Make install
查看安装路径
whereis nginx
启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 退出
./nginx -s reload 重启
创建nginx启动脚本
vi /etc/init.d/nginx
插入以下内容
#! /bin/bash # chkconfig: - 85 15 PATH=/usr/local/nginx DESC="nginx daemon" NAME=nginx DAEMON=$PATH/sbin/$NAME CONFIGFILE=$PATH/conf/$NAME.conf PIDFILE=$PATH/logs/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON -c $CONFIGFILE || echo -n "nginx already running" } do_stop() { $DAEMON -s stop || echo -n "nginx not running" } do_reload() { $DAEMON -s reload || echo -n "nginx can't reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" do_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" do_stop echo "." ;; reload|graceful) echo -n "Reloading $DESC configuration..." do_reload echo "." ;; restart) echo -n "Restarting $DESC: $NAME" do_stop do_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2 exit 3 ;; esac exit 0 |
添加执行权限
Chmod +x /etc/init.d/nginx
注册成服务
chkconfig --add nginx
设置开机启动
chkconfig nginx on
nginx.conf配置文件详解
cd /usr/local/nginx/conf/nginx.conf
#运行用户,默认nobody; 可不设置 #user nobody; ] #Nginx进程,一般设置跟cpu核数一样 worker_processes 1;
#配置错误日志存放目录 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #进程pid存放位置,可不设置 #pid logs/nginx.pid;
#工作组连接上限 events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 use epoll; #单个后台worker_processes进程最大并发链接数 worker_connections 1024; }
http {
#limit模块,可防范一定量的DDOS攻击 #用来存储session会话的状态,如下是为session分配一个名为one的10M的内存存储区,限制了每秒只接受一个ip的一次请求 1r/s limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; limit_conn_zone $binary_remote_addr zone=addr:10m;
include mime.types; #文件扩展名与类型映射表 default_type application/octet-stream; #默认文件类型
#第三方模块lua防火墙 lua_need_request_body on; #lua_shared_dict limit 50m; lua_package_path "/application/nginx/conf/waf/?.lua"; init_by_lua_file "/application/nginx/conf/waf/init.lua"; access_by_lua_file "/application/nginx/conf/waf/access.lua";
#设置日志模式 #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 logs/access.log main;
sendfile on;#开启高效传输模式 #激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量(默认开启) #tcp_nopush on; #激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能 #tcp_nodelay on;
#keepalive_timeout 0; keepalive_timeout 65; #设置链接超时时间
#gzip on; #开启gzip压缩功能 #-----begin(如果设置开启gzip压缩,以下内容选择配置)---- #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大。 gzip_min_length 1k;
#压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。 gzip_buffers 4 16k;
#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。 gzip_http_version 1.0;
#压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。 gzip_comp_level 9;
#用来指定压缩的类型,“text/html”类型总是会被压缩 gzip_types text/plain application/x-javascript text/css application/xml; #vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用 #-----end------
#FastCGI相关参数:为了改善网站性能:减少资源占用,提高访问速度(选配) fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k;
#开启ssi支持,默认是off #ssi on; #ssi_silent_errors on;
#负载均衡配置 upstream notes { //notes是随便起的名字,与下面需要的文件对应就好了 #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 server 47.102.147.192:1111 weight=3; server 47.102.147.192:2222 weight=2; }
server { listen 80; #监听端口 server_name localhost; #访问路径,多个域名可以使用空格隔开 #charset koi8-r;
#access_log logs/host.access.log main;
location / { proxy_pass http://notes root html; index index.html index.htm; }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
# proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #}
# deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
# another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias;
# location / { # root html; # index index.html index.htm; # } #}
# HTTPS server # https(ssl)相关 #server { # listen 443 ssl; # server_name localhost;
# ssl_certificate cert.pem;#服务的证书 # ssl_certificate_key cert.key;#服务端的key
# ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on;
# location / { # root html; # index index.html index.htm; # } #}
} |
反向代理与负载均衡配置(注意session共享问题)文件说明:
正向代理与映射
配置https
下载证书文件
修改nginx.conf文件配置
设置http强制跳转https
高可用参照keepalived+nginx
什么是keepalived
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
keepalived工作原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。
详细参考:Keepalived权威指南中文.pdf
keepalived+nginx实现主备过程
参考:https://blog.csdn.net/l1028386804/article/details/72801492