liux-centos7

1. 目录结构

1.1目录结构

/ 根目录: /

bin/sbin: 脚本目录. ---Linux中常见的命令存在该目录

etc: 配置目录. ---关于配置的信息都在该目录.比如:JDK环境 IP配置

tmp: 临时目录. ---该目录可以删除

usr: 用户目录 ---等价于programe file,如果没有指认目录会自动装到该目录(以后装的软件都装到该目录下)

root: 当前root用户具有的目录. ---以后创建一个新的用户,该用户就会有自己的目录

1.2FinalShell连接

阿里云等服务器公网ip如下,连接步骤一样

2.修改ip

修改我们虚拟机的ip地址。如果不改,那么centos默认动态ip,下一次连接还需要换ip

默认的ip每天的ip会不一样会自动变 设置让它成为静态ip

2.1查看虚拟ip 和子网掩码

查看网关ip

2.2编辑命令以及修改

  vi 文件名

(1使用vi命令时---->命令行模式---->i---->编辑模式-----esc[键]--->命令行模式--->

【 :wq退出并保存】【 :q! 强制退出】

先进入配置,固定都是这个路径

vi /etc/sysconfig/network-scripts/ifcfg-ens33

 

修改完成后:    :wq (保存退出)  

重新启动网络: systemctl restart network

 2.3重新连接

2.4测试一下  

ping www.baidu.com

ctrl键 + c 退出测试

3. 命令

3.1 查看虚拟机ip

ifconfig 或 ip addr ---在cns33

3.2 切换目录  

cd 路径名

例如 cd usr

 3.3 切换上一级

cd../

 3.4 查看当前所在目录的路径

pwd

3.5 查看当前目录下的内容  

ls

3.6 查看当前目录下的内容详细 或者 查看指定目录

ls -l

ls -l /指定目录

举例: ls -l /usr/local     说明:查看指定目录/usr/local下的详细内容

3.7 创建目录(文件夹) 或创建多个目录(文件夹)

mkdir 目录名

mkdir -p /目录名/目录名/目录名  带/是在根目录下创建,不带是当前目录创建

3.8 创建文件 (文档)

touch 文件名

3.9 删除文件 (文档) 或 目录(文件夹)  

rm 文件名 n|y 不删除|删除

rm -f 文件名 强制删除指定文件


rm -r 目录名 删除目录

rm -rf 目录名 强制删除指定目录        也能删除文件

3.10 重命名 或 移动 或 移动加重命名

mv 要修改的名字 新名字

重命名举例: mv a b   把a改为了b


mv 移动的名字 /路径/路径

移动举例: mv a /usr/local   把a移动到了/usr/local下


mv 要移动的名字 /路径/路径/重命名

移动加修改名字举例: mv a /usr/local/b   把a移动到了/usr/local下并且改名为b

如果有移动到那个路径下已有名字就是覆盖

 3.11 复制文件或目录

cp 源文件 目标路径 --------复制文件(文档)

复制举例: cp a.txt /usr/local 把a.txt文件复制到了 /usr/local下


cp -r 源文件 目标路径 -------复制目录(文件夹)

复制举例: cp -r a /usr/local 把a目录复制到了/usr/local下

3.12 查看文件(文档)的内容 或 前n行内容 或 后n行内容  

 

cat 文件名 查看文件的所有内容---在一个窗口显示

查看举例: cat a.txt          查看a.txt文档的所有信息


head -n 文件名 查看文件的前n行内容 n代表数字

查看举例: head -2 a.txt   查看a.txt的前两行内容


tail -n 文件名 查看文件后n行内容 -----非常重要---查询项目日志

查看举例: tail -2 a.txt        查看a.txt后两行内容

3.13 测试网络是否能用  

ping ip | 域名

举例:ping www.baidu.com

3.14 编辑文件  

vi 文件名

使用vi命令时----进入命令行模式---->i----进入编辑模式----->

esc键----进入命令行模式---->:wq (退出并保存) :q!(强制退出) ------注意有冒号:

如果遇到其他了就一直esc键回到编辑了

3.15 查找指定的文件在哪儿目录 或 模糊查找  

find 搜索的目录名 -name '被所搜的文件名' 搜索指定文件

查找案例: find / -name 'a.txt'   在根目录下搜索a.开头的文件


find 搜索的目录名 -name '文件.*'

模糊查找案例: find / -name 'a.*' 在根目录下搜索所有以a开头的文件

3.16 在指定文件中查找相对应的关键字并且查看是在多少行

grep 要查找的关键字 文件名

案例: grep hahaha /root/b/a   查找hahaha从 /root/b/a 下的所有关键字


grep 要查找的关键字 文件名 -n

案例: grep aaa /root/a/b -n     查看aaa关键字从 /root/a/b 下在第几行

3.17 显示行号(当vi编辑后)  

:set number

3.18 重新启动网络

systemctl restart network  

 3.19 压缩和解压命令和解压到指定目录

tar -zcvf   压缩后的名.tar.gz    被压缩的目录名

案例: tar -zcvf  yasuowenjian.tar.gz  a             压缩a文件起名为yasuowenjian.tar.gz


tar -zxvf  要解压的文件名

案例: tar -zxvf yasuowenjian.tar.gz    解压yasuowenjian.tar.gz

没有指定目录就是当前目录,因为压缩前叫a所以解压出来也是a


tar -zxvf  要解压的文件名  -C 解压到指定路径

案例: tar -zxvf yasuowenjian.tar.gz -C /       把yasuowenjian解压到 根目录下

3.20修改文件或目录的权限

下面是加权限,如果减权限 把+换成 -

chmod  u+r+w+x    文件名        给当前用户加权限

chmod  g+r+w+x    文件名        给所在组的其他成员加权限

chmod  o+r+w+x    文件名        给其他用户加权限

案例:chmod u+x yasuowenjian.tar.gz         给yasuowenjian赋值当前用户具有执行的权限


减权限


通过数字表示相对应的权限   

通过第一张图的阿拉伯数字来算  7表示读写执行操作加起来  

chmod 777 文件名 

第一个7表示当前用户 第二个表示所在的组 第三个其他用户 具有的权限

3.21刷新命令

修改完文件需要刷新

source  你文件的路径

案例:source /etc/profile

3.22查看进程

ps -ef | grep 进程名

案例:

 ps -ef | grep tomcat9

3.23关于防火墙的命令

1.查看防火墙的状态

systemctl status firewalld

2.关闭防火墙(企业中一定不能关闭防火墙)

systemctl stop firewalld

3.开启防火墙

systemctl start firewalld

4.开启开机禁用(重新开机也不会开启防火墙)

systemctl disable firewalld

5.开启开机启用

systemctl enable firewalld

6.重启防火墙

systemctl restart firewalld

7.防火墙放行指定的端口号

建议:如果软件端口号访问不到就要想到是不是没有放行端口号,不能关闭防火墙

firewall-cmd --add-port=端口号/tcp --zone=public --permanent

案例:     firewall-cmd --add-port=8080/tcp --zone=public --permanent

firewall-cmd 固定的

--add-port:添加放行的端口号

--zone:设置作用域

--permanent:是否永久放行  不加表示不是永久放行下次启动就不放行了

注意:设置后一定要重新启动防火墙

 成功会返回success


8.移除防火墙指定的端口号

firewall-cmd --remove-port=端口号/tcp --zone=public --permanent

案例:   firewall-cmd --remove-port=8080/tcp --zone=public --permanent

注意:设置后一定要重新启动防火墙

 9.查看当前防火墙放行了哪些端口,不显示代表没有

firewall-cmd --list-port

4.安装相关软件

4.1 安装jdk

1. 在liux中我们要下载liux的jdk

Java Downloads | Oracle 中国icon-default.png?t=N7T8https://www.oracle.com/cn/java/technologies/downloads/

2.跟windows一样直接拖进来就行 建议统一起名software 方便后续的软件都放到当前目录下

3.解压:

tar -zxvf jdkxxx.tar.gz

4.建议重命名太长了,方便后边配环境变量方便

mv  jdk-17.0.8   jdk17

5.配置环境变量     /etc/profile ---配置环境变量 windows中配环境变量liux也需要配置 

vi  /etc/profile

进入后↓键最下面

 i     输入

在liux中#表示注释

export jave_home=你存放jdk的路径

export path=$表示引用,表示引用之前的path的值    : 表示拼接 ,表示path拼接上你的

:wq   保存退出

发现javac命令用不了

 6.刷新/etc/profole文件

source /etc/profile

7.在任何目录试用下javac java命令

4.2 安装tomcat

1.从官网下载tomcat

Apache Tomcat® - Welcome!icon-default.png?t=N7T8https://tomcat.apache.org/任意版本

2.拖到liux系统中还是 /usr/local/software 下

3.解压

tar -zxvf apache-tomcat-xxxx

4.重命名

mv apache-xxx.tar.gz   tomcat9

5.进入tomcat解压后的bin目录

cd /usr/local/software/tomcat9/bin/

脚本命令

6.  tomcat启动

注意:要在tomcat/bin目录下使用

./startup.sh    

7.因为是在后台启动不知道启没启动  需要查看进程

ps -ef | grep tomcat

8. tomcat关闭

./shutdown.sh   

9.宿主机(window) ---访问虚拟机中的tomcat

 如果启动了也访问不到

是因为防火墙或者没开放端口

企业一般不定不能关闭防火墙

firewall-cmd --list-port 查看放行的端口号  发现没有就去放行

10.放行端口号

firewall-cmd --add-port=8080/tcp --zone=public --permanent

成功返回success

11.重启防火墙

systemctl restart firewalld

能访问到就代表成功力

 4.3安装mysql

宿主机可以通过navicat访问linux的mysql软件

如果当时你安装的centos为图像化本版,那么你在安装mysql时必须卸载掉centos图形化中自带的mysql服务器。

1 下载wget命令

yum -y install wget

2 在线下载mysql安装包

wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

3 安装MySQL

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

4. 安装mysql服务

  • 首先进入cd /etc/yum.repos.d/目录。
cd /etc/yum.repos.d/

  • 安装MySQL服务(这个过程可能有点慢)
yum -y install mysql-server

解决办法如下:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

 再次执行  如下命令

yum -y install mysql-server

5 启动MySQL

systemctl start mysqld


查看进程:

ps -ef | grep mysql

1.2 修改MySQL临时密码

MySQL安装成功后会有一个临时密码,我们可以使用grep命令查看临时密码先登录进去MySQL,然后修改MySQL密码。

1.2.1 获取MySQL临时密码

grep 'temporary password' /var/log/mysqld.log

1.2.2 使用临时密码先登录

mysql -uroot -p

我的临时密码是:a22XRJ88=+a;

1.2.3 把MySQL的密码校验强度改为低风险

set global validate_password_policy=LOW;

1.2.4 修改MySQL的密码长度

set global validate_password_length=5;

1.2.5 修改MySQL密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin'; 

1.3 允许远程访问

1.3.1 首先要关闭Cenots的防火墙或者放行端口号(企业中都是放行端口号)这里方便先关闭

sudo systemctl disable firewalld

1.3.2 修改MySQL允许任何人连接

1)首先登录MySQL

mysql -uroot -padmin

2)切换到mysql数据

use mysql;

3)查看user表

select Host,User from user;

 发现root用户只允许localhost主机登录登录

4)修改为允许任何地址访问

update user set Host='%' where User='root';

修改回去就是这个

update user set Host='localhost' where User='root';

5)刷新权限

flush privileges;

1.3.3 使用Navicat连接工具测试

 5. Shell脚本

1. 什么是Shell脚本

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 他就是一门编程语言,客户可以通过该语言与linux内核进行相应的交互。

 2.如何使用Shell

创建文件后缀必须为  .sh

编写的时候 ---必须以 #!/bin/bash 开头

#!/bin/bash          

(1)第一个Shell脚本

如果没有建文件那么用vi命令的时候会自定帮你创建好

运行

./文件名

注意: 默认该文件没有执行的权限,我们需要修改该文件的权限
chmod u+x 文件名     或者 chmod 777 文件名

(2)查看脚本结构

cat  脚本名

举例: cat demo01.sh

(3)变量

定义变量的语法:          变量名=值


如何引用变量:     $变量名   或 ${}

例子: 

#!/bin/bash
name=zhangsan
echo "my name is ${name}"

注意变量名后不要有空格

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

中间不能有空格,可以使用下划线_.

不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关健字)

(4)Shell传递参数

我们可以在执行Shell脚本时,向脚本传递参数

脚本内获取参数的格式为: $n.   n代表一个数字

1 为执行脚本的第一个参数      2 为执行脚本的第二个参数

举例:

#!/bin/bash
echo "你传入的第一个参数值:$1"
echo "你传入的第二个参数值:$2"

执行时:

./demo03.sh  参数1  参数2

 

(5) Shell数组

一个变量中可以存放多个元素,这个变量就是数组,数组它的下标是从0开始

语法:

注意这里区分是用空格

数组名=(元素 元素 元素)

#!/bin/bash
arr=(18 "张三" 太极)
echo "数组中第一个元素的内容:${arr[0]}"
#这里可以不用双引号,并且存储的值不分类型,但取值的时候必须要加大括号来取值${xxx[n]}
echo 第二个元素的内容:${arr[1]}

echo 第三个元素的内容:${arr[2]}

(6)Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括:

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符

Shell 基本运算符 | 菜鸟教程Shell 基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符关系运算符布尔运算符字符串运算符文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '): 实例 [mycode4 type='..icon-default.png?t=N7T8https://www.runoob.com/linux/linux-shell-basic-operators.html

 算数运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk和 expr,expr 最常用。
expr是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加(注意使用的是反引号*`* 而不是单引号 *`*):

两点注意:

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

+   -   \*    /     %
举例:

#!/bin/bash
a=10
b=20
var=`expr $a + $b`
echo "a和b的和为:${var}"


var=`expr $a - $b`
echo "a和b的差为:${var}"


var=`expr $a \* $b`
echo "a和b的积为:${var}"


var=`expr $a / $b`
echo "a和b的除为${var}"


var=`expr $a % $b`
echo "a和b的余为${var}"

 

关系运算符

 举例:            注意if后有空格!!!

#!/bin/bash
a=10
b=20
if [ ${a} -eq ${b} ]
 then
  echo "a等于b"
 else
  echo "a不等于b"
fi

布尔运算符

举例:

#!/bin/bash
a=10
b=20
c=30
#或运算,有一个表达式为true则返回true
if [ ${a} -gt ${b} -o ${c} -gt ${b} ]
then
  echo "~~~~~~~~~~true"
else 
  echo "==========false"
fi

(6)控制语句

if控制语句的语法

if 条件  then  满足条件执行的语句

elif 条件 then  满足条件执行的语句

...else  都不满足条件执行的语句

fi

举例:

#!/bin/bash
var=$1
if [ ${var} -eq 1  ]
then
echo "今天星期一"
elif [ ${var} -eq 2 ]
then
echo "今天星期二"
else
echo "语法有误"
fi

for控制语句的语法

for 变量名 in 数组元素

do

语句

done

举例:

#!/bin/bash

for a in 2 4 6 8
do
echo "a的值为${a}"
done

6.Nagix

1.什么是nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。 50,000 个并发连接数的响应.

 nginx它是一个反向代理的服务器,而且占用内存小,并发能力强,默认并发2w.

2.为什么要使用nginx代理

想考:随着访问人数的不断增加,tomcat服务就无法承受这种压力,tomcat默认是200,最多1000
解决方案:部署项目为集群模式。

思考:后台部署了三台服务器。---客户访问那一台。
在服务器集群的前方设置一个代理服务,由代理服务器把客户的请求发送到真实的服务器

1.代理后面真实的服务器--安全.对于客户来说不知道服务器是哪一台

2.提高我们服务器的并发能力

3.国内有哪些企业使用nginx代理服务器

1.腾讯 2.淘宝 3.京东 4.12306 5.新浪 等

4.如何使用nginx

4.1 下载

nginx newsicon-default.png?t=N7T8https://nginx.org/

 

4.2 配置依赖

这个软件使用的是c语言编写的项目。--我们要安装nginx这个软件,需要在linux安装该软件需要的依赖。

yum  install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

4.3 然后进入把下载的nginx放入linux系统

我安装软件的路径都在 cd  /usr/local/software 下

4.4 解压

tar -zxvf nginx-xxxx

4.5 创建一个文件夹

作为nginx的安装目录       路径:/usr/app/nginx

4.6进入nginx解压后的目录

 只是指定把软件装在哪里  注意: 进入nginx解压后的目录

./configure --prefix=/usr/app/nginx/

4.7进行编译和安装操作

直接用第二个也行

make               对nginx源码进行编译

make    install  编译并安装

 查看安装目录

conf: nginx的配置目录  里面比较重要的就是nginx.conf 它是nginx的配置文件

html: 静态资源目录

logs: 日志 ----如果启动nginx出现错误时,会在该目录下的日志文件中显示

sbin: 启动和关闭nginx的脚本目录

4.8 nginx的sbin脚本命令

注意:  ./ 代表当前路径 需要进入到nginx/sbin下 不想进入就输绝对路径带命令

 启动nginx----不会显示是否启动需要查看进程

./nginx                    /usr/app/nginx/sbin/nginx  绝对路径启动

ps -ef |grep nginx  查看进程

关闭nginx

./nginx  -s stop

/user/app/nginx/sbin/nginx  -s stop

当修改完nginx文件后需要重新加载nginx配置文件

./nginx -s reload    

/user/app/nginx/sbin/nginx -s reload

4.9宿主机(window)---访问虚拟机中的nginx

启动nginx后用浏览器访问nginx,nginx默认端口号是80

访问不到就看看防火墙有没有放行80端口号,按着之前软件放行端口号的步骤来,成功就是下面的图

5.nginx的配置文件的介绍


#user  nobody;
# 工作进程数 1
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 默认连接(并发)数1024  工作期间可以自己调试 但是最大是5w   
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 代理服务的配置 ---可以配置多个代理服务
    #自定义代理服务
    server{
        listen       82;         #端口号为82
        server_name  localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {             #访问的路径如果是/
           root  /usr/mynginx;   #就会去找mynginx目录 可以使用绝对路径  
           index main.html;      #并且去找首页资源 main.html  
        }
    }
    
    server {
        listen       80; #默认监听的端口号为80
        server_name  localhost;#服务的名称 以后要改成真实部署项目的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 当请求路径为 / 
        location / {
            root   html; #找到html目录  相对路径   上面那个是绝对路径
            index  index.html index.htm;#并且去找首页资源 默认是  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
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.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;
    #    }
    #}

}

下面是自定义一个代理服务流程图

编写代理服务 略

/usr/app/nginx/sbin/nginx -s reload                                        编写完后需要刷新nginx配置

mkdir /usr/mynginx                                                                      创建目录

cd /usr/mynginx                                                                            进入目录

touch main.html                                                                            创建文件

vi main.html                                                                                   编辑文件

firewall-cmd --add-port=82/tcp --zone=public --permanent       放行82端口号

成功返回success

systemctl restart firewalld                                                             重启防火墙

宿主机访问 略

6.nginx的核心功能

1. 反向代理

正向代理

它代理的是客户端,对于服务器来说,不知道客户的具体地址。

拿借钱打个比方,A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,在这个过程中B就扮演了一个正向代理的角色,这个过程中,真正借钱的人是谁,C是不知道的~
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求. 比如翻墙软件。

比如翻墙软件。  

 反向代理

反向代理它代理的是服务器,对于客户来说不知道访问具体服务器的信息。--对真实服务器具有保护的功能

还用借钱的例子,A想向C借钱,然后C借给他了,但是实际上这个钱可能C向B借的~至于钱到底是谁的,A是不知道的~
这里的C扮演着一个反向代理的角色,客户不知道真正提供服务的人是谁。
反向代理隐藏了真实的服务端,对于客户来说不知道访问的是哪台服务器。

例子: nginx反向代理服务器。 ---安装在服务器端。  

使用nginx完成反向代理的功能

准备的环境:

(1)搭建nginx服务器--之前搭建好了

(2)准备一个真实服务器---springboot项目

注意:nginx可以和真实服务器在同一个机器上

(1)准备真实服务器---192.168.198.200

为了测试方便简单写个controller

package com.example.nginx1;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("hello")
   public String hello(){
        System.out.printf("~~~~~~~~~~~`hello~~~~~~~~~~");
        return "hello!!!!!!!!!!!";
   }
}

打包

拖到linux中

 运行项目:

java -jar xxx.jar     注意:Linux环境中必须安装了jdk

 (2)修改nginx配置文件的内容---192.168.198.201

vi   /usr/app/nginx/conf/nginx.conf

要保证192.168.198.200的tomcat端口号8080放行了  和 nginx的81端口号也要放行

 192.168.198.201的nginx才能访问到200


#user  nobody;
# 工作进程数 1
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 默认连接(并发)数1024  工作期间可以自己调试 但是最大是5w   
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 代理服务的配置 ---可以配置多个代理服务


  
     #代理外部的--->需要外部的ip地址和端口号
    server{
    
        listen 81;             #端口号为81
        server_name localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {            #访问的路径如果是/
           #被代理服务器的地址:  必须注意保证19.168.198.200这台服务器8080端口被放行了
              proxy_pass   http://192.168.198.200:8080;
        }
    }
   
    #自定义代理服务本地的
    server{
        listen       82;         #端口号为82
        server_name  localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {             #访问的路径如果是/
           root  /usr/mynginx;   #就会去找mynginx目录 可以使用绝对路径  
           index main.html;      #并且去找首页资源 main.html  
        }
    }
    
    server {
        listen       80; #默认监听的端口号为80
        server_name  localhost;#服务的名称 以后要改成真实部署项目的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 当请求路径为 / 
        location / {
            root   html; #找到html目录  相对路径   上面那个是绝对路径
            index  index.html index.htm;#并且去找首页资源 默认是  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
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.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;
    #    }
    #}

}

 重新加载nginx配置文件

/usr/app/nginx/sbin/nginx -s reload

./nginx -s reload

 (3)宿主机访问nginx的服务地址

注意:记得nginx的81端口号放行

2.负载均衡

随着访问量的不断增加,一台真实服务器无法处理那么多请求。这时需要搭建真实服务器的集群。如何把请求均摊到集群的不同服务器上。 需要负载均衡组件,该组件可以帮你完成把请求均摊到集群服务器。

 (1)准备真实服务器:

两台或更多    192.168.198.200  198.168.198.201

注意:nginx可以和真实服务器在同一个机器上 ,nginx的机器,先编写了config再启动真实服务器

(2)修改nginx完成反向代理以及负载均衡

注意要放行集群服务器的tomcat8080端口号,还要放行集群端口号999


#user  nobody;
# 工作进程数 1
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 默认连接(并发)数1024  工作期间可以自己调试 但是最大是5w   
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 代理服务的配置 ---可以配置多个代理服务


    #集群方式被代理服务器的所有地址配置
    upstream jiqun{
          #注意集群服务器的tomcat8080端口号放行了
         server 192.168.198.200:8080;
         server 192.168.198.201:8080;
    }
    server{
        listen 999;   #集群端口号   注意集群端口号也要放行
        server_name localhost;
        location / {
             proxy_pass http://jiqun; #这里被代理的名字要和上面集群的名字保持一致
        }
    }

  
    #单个被代理服务器的地址配置 
    server{
    
        listen 81;             #端口号为81
        server_name localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {            #访问的路径如果是/
           #被代理服务器的地址:  必须注意保证19.168.198.200这台服务器8080端口被放行了
              proxy_pass   http://192.168.198.200:8080;
        }
    }
   
    #自定义代理服务
    server{
        listen       82;         #端口号为82
        server_name  localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {             #访问的路径如果是/
           root  /usr/mynginx;   #就会去找mynginx目录 可以使用绝对路径  
           index main.html;      #并且去找首页资源 main.html  
        }
    }
    
    server {
        listen       80; #默认监听的端口号为80
        server_name  localhost;#服务的名称 以后要改成真实部署项目的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 当请求路径为 / 
        location / {
            root   html; #找到html目录  相对路径   上面那个是绝对路径
            index  index.html index.htm;#并且去找首页资源 默认是  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
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.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;
    #    }
    #}

}

 重新加载nginx配置

/usr/app/nginx/sbin/nginx -s reload

./nginx -s reload

 (3)宿主机访问nginx的服务地址

如下图集群服务器都轮流打印了表示负载均衡成功力!

注意要放行tomcat8080和你定义nginx监听的端口号

负载均衡的策略

注意:ip哈希策略和负载策略只能用一个,不能同时存在

轮询

负载(权重)

ip哈希策略

1.轮询====默认的策略(刚刚上面的就是以轮询的方式)
2.负载====根据服务器的硬件不同,配置不同的载重

(1)修改nginx配置策略为负载   


#user  nobody;
# 工作进程数 1
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 默认连接(并发)数1024  工作期间可以自己调试 但是最大是5w   
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 代理服务的配置 ---可以配置多个代理服务


    #集群方式被代理服务器的所有地址配置
    upstream jiqun{
          #注意集群服务器的tomcat8080端口号放行了
          #(weight)负载均衡策略修改为载重.值越大处理能力越强
         server 192.168.198.200:8080 weight=1;
         server 192.168.198.201:8080 weight=2;
    }
    server{
        listen 999;   #集群端口号   注意集群端口号也要放行
        server_name localhost;
        location / {
             proxy_pass http://jiqun; #这里被代理的名字要和上面集群的名字保持一致
        }
    }

  
    #单个被代理服务器的地址配置 
    server{
    
        listen 81;             #端口号为81
        server_name localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {            #访问的路径如果是/
           #被代理服务器的地址:  必须注意保证19.168.198.200这台服务器8080端口被放行了
              proxy_pass   http://192.168.198.200:8080;
        }
    }
   
    #自定义代理服务
    server{
        listen       82;         #端口号为82
        server_name  localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {             #访问的路径如果是/
           root  /usr/mynginx;   #就会去找mynginx目录 可以使用绝对路径  
           index main.html;      #并且去找首页资源 main.html  
        }
    }
    
    server {
        listen       80; #默认监听的端口号为80
        server_name  localhost;#服务的名称 以后要改成真实部署项目的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 当请求路径为 / 
        location / {
            root   html; #找到html目录  相对路径   上面那个是绝对路径
            index  index.html index.htm;#并且去找首页资源 默认是  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
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.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;
    #    }
    #}

}

(2)重启nginx配置

/usr/app/nginx/sbin/nginx -s reload

./nginx -s reload

(3)宿主机访问nginx的服务地址

201服务比200服务打印多表示负载起了效果

3.ip哈希策略====nginx会根据客户的ip====进行哈希计算====根据计算的结果把请求转发给对应的真实服务器。

如果客户的ip没有变化,那么它访问的真实服务器也不会发生改变。


#user  nobody;
# 工作进程数 1
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 默认连接(并发)数1024  工作期间可以自己调试 但是最大是5w   
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 代理服务的配置 ---可以配置多个代理服务


    #集群方式被代理服务器的所有地址配置
    upstream jiqun{
          #注意集群服务器的tomcat8080端口号放行了
          #(ip_hash)负载均衡策略修改为哈希策略
         server 192.168.198.200:8080;
         server 192.168.198.201:8080;
         ip_hash;
    }
    server{
        listen 999;   #集群端口号   注意集群端口号也要放行
        server_name localhost;
        location / {
             proxy_pass http://jiqun; #这里被代理的名字要和上面集群的名字保持一致
        }
    }

  
    #单个被代理服务器的地址配置 
    server{
    
        listen 81;             #端口号为81
        server_name localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {            #访问的路径如果是/
           #被代理服务器的地址:  必须注意保证19.168.198.200这台服务器8080端口被放行了
              proxy_pass   http://192.168.198.200:8080;
        }
    }
   
    #自定义代理服务
    server{
        listen       82;         #端口号为82
        server_name  localhost;  #服务的名称 以后要改成真实部署项目的域名 
        location / {             #访问的路径如果是/
           root  /usr/mynginx;   #就会去找mynginx目录 可以使用绝对路径  
           index main.html;      #并且去找首页资源 main.html  
        }
    }
    
    server {
        listen       80; #默认监听的端口号为80
        server_name  localhost;#服务的名称 以后要改成真实部署项目的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 当请求路径为 / 
        location / {
            root   html; #找到html目录  相对路径   上面那个是绝对路径
            index  index.html index.htm;#并且去找首页资源 默认是  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
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.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;
    #    }
    #}

}

(2)重启nginx配置

/usr/app/nginx/sbin/nginx -s reload

./nginx -s reload

(3)宿主机访问nginx的服务地址

200服务没打印就对了,因为是根据客户ip计算,不变就不会更改

3. 动静分离

非常适合单体项目---不适合前后端完全分离的项目

把真实服务器中静态资源和动态资源分开。 把静态资源交于nginx来处理。

(1)如何完成动静分离

7.RabbitMq

1.安装

1.1 安装Socat

在线安装依赖环境:

 yum -y install gcc 
 ​
 yum -y install socat
 ​
 yum -y install openssl
 yum -y install openssl-devel

1.2 安装Erlang

 ​

 mkdir /user/app/rabbitmq && cd /rabbitmq
 ​
 # 上传 erlang-22.0.7-1.el7.x86_64.rpm 安装包上传
 ​
 # 安装
 rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
 ​

1.3 安装RabbitMQ

 cd /rabbitmq
 ​
 # 上传 rabbitmq-server-3.7.17-1.el7.noarch.rpm 安装包
 上传
 ​
 # 安装
 rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm
 ​

1.4 开启管理界面及配置

 
# 开启管理界面
 rabbitmq-plugins enable rabbitmq_management
 ​
 # 配置远程可使用guest登录mq
 cd /usr/share/doc/rabbitmq-server-3.7.17
 ​
 cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
 ​
 # 修改配置文件
 vi /etc/rabbitmq/rabbitmq.config

修改/etc/rabbitmq/rabbitmq.config配置文件:

1.5 启动

 centos6用这个命令:
 /sbin/service rabbitmq-server restart
 ​
 centos7用这个命令:
 systemctl start rabbitmq-server

1.6 配置虚拟主机及用户

6.1. 用户角色

用浏览器加上虚拟机ip再加上15672

注意防火墙放行端口号15672
http://192.168.198.201:15672

RabbitMQ在安装好后,可以访问http://ip地址:15672 ;其自带了guest/guest的用户名和密码;如果需要创建自定义用户;那么也可以登录管理界面后,如下操作:

角色说明

1、 超级管理员(administrator)

可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

2、 监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

3、 策略制定者(policymaker)

可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

4、 普通管理者(management)

仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

5、 其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

6.2. Virtual Hosts配置

像mysql拥有数据库的概念并且可以指定用户对库和表等操作的权限。RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 相当于mysql的db。Virtual Name一般以/开头。

6.2.1. 创建Virtual Hosts

6.2.2. 设置Virtual Hosts权限

 2.具体介绍和使用

MQ的基本概念-CSDN博客

8.Redis

待续

9.Jenkins

待续

10.Docker

  • 44
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值