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/

4CentOS下载

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、允许用户myuserip192.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官网中下载YUMrpm安装包:

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进行修改:

如果无法查看到密码:

  1. 修改:/etc/my.conf文件
  2. 加上一行skip-grant-tables,表示跳过安全检查

   

 

 

 

  1. 重启mysql:service mysqld restart
  2. 登录: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

防火墙及端口开放

1firewalld的基本使用

启动: systemctl start firewalld

关闭: systemctl stop firewalld

查看状态: systemctl status firewalld

开机禁用   systemctl disable firewalld

开机启用   systemctl enable firewalld

 

 

2systemctlCentOS7的服务管理工具中主要的工具,它融合之前servicechkconfig的功能于一体。

启动一个服务: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分配一个名为one10M的内存存储区,限制了每秒只接受一个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和多个backupmaster上面有一个对外提供服务的vipVIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backupmaster。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是corecheckVRRPcore模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

 

详细参考:Keepalived权威指南中文.pdf

 

keepalived+nginx实现主备过程

参考:https://blog.csdn.net/l1028386804/article/details/72801492

 

posted on 2020-05-14 00:57  听风醉  阅读(551)  评论(0编辑  收藏  举报

导航

因为不可能,所以才值得相信。