就业培训学习记录-day001

前言

报了一个就业培训班,上课的同时想把自己的学习过程记录下来。

课堂任务

安装虚拟机CentOS 7

下载并安装VMware Workstation
下载CentOS 7系统镜像








回车之后稍等一段时间,会弹出安装界面




分别设置好ROOT PASSWORD和USER CREATION,然后等待安装完成


重启后输入账户密码即可

配置虚拟机和物理机能互相ping通

  1. 设置虚拟机的网络连接为NAT模式

  2. 在VMware Workstation中打开【编辑】→【虚拟网络编辑器】,记住NAT模式的子网地址,我这里是192.168.86.0,86是重点

  3. 打开“网络和Internet”设置,更改适配器选项,修改VMware Network Adapter VMnet8属性,其中修改IP地址和默认网关时,只有红框框起来的部分跟我不一样,(192.168.X.Y中的X修改为NAT模式的子网地址86,Y分别是1和2),其他都一样

  4. 修改虚拟机的IP地址,在终端输入
vi /etc/sysconfig/network-scripts/ifcfg-ens33
  1. 然后按i进行编写,将该部分的内容中,除了UUID、IPADDR、GATEWAY,其余的修改得跟下面一致,多的内容删掉,少的内容补上。IPADDR和GATEWAY中的第三个数字改成自己NAT模式的子网地址86
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f52356b8-9021-2329-t941-1578f5b7g911
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.86.145
GATEWAY=192.168.86.2
NETMASK=255.255.255.0
PEERD=no
DNS1=8.8.8.8
DNS2=8.8.8.4
  1. 改完之后按Esc,输入:wq,然后按回车。接着在终端输入以下代码来查看是否修改成功。
cat /etc/sysconfig/network-scripts/ifcfg-ens33
  1. 重启网络
service network restart


08. 查看虚拟机IP地址,为192.168.86.145

ip addr


09. 在物理机中尝试是否能ping通虚拟机IP,输入ping 192.168.86.145

10. Win+R,输入cmd后回车,然后输入ipconfig,查看物理机IP地址,为192.168.43.122

11. 在虚拟机中尝试是否能ping通物理机IP,输入ping 192.168.43.122 -c 4

12. 打开SSH(Secure Shell Client,点击查看安装教程),填写好信息即可连接虚拟机终端

了解Linux的部分常用命令

  1. su
    英文:swith user
    说明:切换用户。
    语法:su [用户名]

  2. cd
    英文:change directory
    说明:切换当前目录至指定目录名。
    语法:cd [目录名]
    cd / 切换根目录
    cd .. 回到上一级目录
    cd . 当前目录
    cd ~ 当前用户的宿主目录(root为/root,普通用户为/home/用户名)

  3. ls
    英文:list
    说明:不仅可以查看文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
    语法:ls [选项]
    ls -a 列出目录所有文件,包含以.开始的隐藏文件
    ls -A 列出除.及..的其它文件
    ls -r 反序排列
    ls -t 以文件修改时间排序
    ls -S 以文件大小排序
    ls -h 以易读大小显示
    ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
    补充1:文件名颜色的含义:【普通文件】白色,【目录】蓝色,【可执行文件】绿色,【压缩文件或者包文件】红色,【链接文件】青色,【设备文件】黄色,【其他文件】灰色
    补充2:使用选项-l时,对各项信息的说明,例子如下

lrwxrwxrwx.   1 root root    7 Mar 27 05:59 bin -> usr/bin
dr-xr-x---.   5 root root  272 Mar 27 01:33 root
-rw-r--r--.   1 root root  571 Mar 27 03:26 myres.tar.gz

共显示了七列信息,从左至右依次为:权限(10字符+1结尾点)、文件数、文件所有者、文件所有者所在的组、文件大小(byte)、修改日期、文件名称。
其中权限的第1个字符代表:【-】普通文件,【d】目录文件,【l】链接文件,【b】块设备文件,【c】字符设备文件,【p】管道文件。
后9个字符每三3个为一组,每组代表的意思分别为文件所有者、文件所有者所在的组、其他用户对该文件拥有的权限。
rwx-的意思分别是读,写,执行,无权限。

  1. pwd
    英文:print working directory
    说明:查看当前工作目录。

  2. mkdir
    英文:make directory
    说明:创建文件夹。
    语法:mkdir [选项] [目录]
    mkdir -p /tmp/test/t1/t 此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录

  3. cp
    英文:copy
    说明:将源文件复制至目标文件,或将多个源文件复制至目标目录。
    语法:cp [源文件或目录] [目的目录]
    cp -i 提示
    cp -r 复制目录及目录内所有项目
    cp -a 复制的文件与原文件时间一样

  4. mv
    英文:move
    说明:移动文件或目录,重命名文件或目录。
    语法: mv [源文件或目录] [目的目录或新名称]

  5. rm
    英文:remove
    说明:删除一个目录中的一个或多个文件或目录,如果没有使用-r选项,则rm不会删除目录。
    语法: rm [选项] [文件或目录...]
    rm -r 将目录及以下之档案亦逐一删除。
    rm -f 即使原档案属性设为只读,亦直接删除,无需逐一确认。

  6. cat
    英文:concatenate
    说明:用于连接文件并打印到标准输出设备上。
    语法:cat [选项] [文件名]
    cat -A 显示所有内容,包括隐藏的字符
    cat -n 显示行号
    补充:

  • 一次显示整个文件的内容
    cat filename
  • 从键盘创建一个文件
    cat > filename
  • 将几个文件进行合并为一个文件
    cat file1 ffile2 > file3
  1. more
    说明:类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的命令就是按空格键(space)就往下一页显示,按b键就会往回(back)一页显示,按回车键(enter)显示下一行
    语法:more [选项] [文件名]
    more -num 一次显示的行数

  2. head
    说明:查看文件的开头部分的内容,默认为查看头10行的内容。
    语法:head [选项] [文件名]
    head -q 隐藏文件名
    head -v 显示文件名
    head -c <数目> 显示的字节数
    head -n <行数> 显示的行数

  3. tail
    说明:查看文件的末尾部分的内容。
    语法:tail [选项] [文件名]

  4. ln
    英文:link files
    说明:为某一个文件在另外一个位置建立一个同步的链接。
    语法:ln -s [选项] [源文件或目录] [目标文件或目录]
    ln -b 删除,覆盖以前建立的链接
    ln -d 允许超级用户制作目录的硬链接
    ln -f 强制执行
    ln -i 交互模式,文件存在则提示用户是否覆盖
    ln -n 把符号链接视为一般目录
    ln -s 软链接(符号链接)
    ln -v 显示详细的处理过程

  5. man
    说明:帮助命令。
    语法:man [命令]

  6. help
    说明:帮助命令。
    语法:help [命令]

  7. find
    说明:用来在指定目录下查找文件。如果使用该命令时,不指定路径,则在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
    语法:find [搜索路径] [选项] [匹配条件]
    find /etc/ -name "init" 在路径/etc/下查找文件名符合init的文件。
    find /etc/ -iname "init" 在路径/etc/下查找文件名符合init的文件,忽略大小写。

  8. grep
    说明:命令用于查找文件里符合条件的字符串。
    语法:grep [选项] [需查找的字符串] [文件或路径]
    grep -c init services 在services中查找init并显示其出现的次数。
    grep -v init services 在services中查找不包含init的内容。
    补充:

  • 从文件中读取关键词进行搜索
    cat text.txt | grep -f text2.txt
  • 找出以u开头的行内容
    cat text.txt | grep ^u
  • 找出以hat结尾的行的内容
    cat text.txt | grep hat$
  1. ps
    英文:process status
    说明:显示当前进程的状态,类似于 windows 的任务管理器。
    语法:ps [options] [--help]
    ps -ef 显示所有命令,连带命令行。
    ps -ef | grep [进程关键字] 查找指定进程格式。
    ps -A 列出所有的进程。

  2. gzip
    说明:用于压缩文件,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
    语法:gizp [选项] [文件或目录]
    补充:

  • 压缩所有文件
    gzip *
  • 将单个文件进行解压
    gzip -d test.txt
  • 将每个文件进行解压
    gzip -dv *
  • 递归压缩abd目录
    gzip -r abd/
  • 递归解压abd目录
    gzip -dr abd/
  1. tar
    英文:tape archive
    说明:用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
    语法:tar [压缩后的文件名] [要压缩的文件或目录]
    补充:
  • 对abd目录的所有文件进行打包
    tar -cf text.txt.tar *
  • 再对打包后的文件进行压缩
    gzip text.txt.tar
  • 解压
    gzip -d text.txt.tar.gz
  • 解包
    tar -xf text.txt.tar
  • 对abd目录的所有文件进行打包加压缩
    tar -zcvf text.tar *
  • 对tar进行解压和解包
    tar -zxvf abd/text.tar -C /root/abcd/

了解vi编辑器

参考Linux vi/vim | 菜鸟教程

插入命令
a 在光标后附件文本
i 在光标前插入文本
o 在光标下插入新行

定位命令
:set nu 设置行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行

保存和退出命令
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者可以忽略文件的只读属性)

删除命令
dd 删选光标所在的行

复制和剪切命令
yy,Y 复制当前行
nyy,nY 复制当前以下n行
dd 剪切当前行
ndd 剪切当前以下的n行
p,P 粘贴当前光标所在行

搜索命令
/string 向光标后搜索指定字符串string
?string 向光标前搜索指定字符串string
n 代表重复前一个搜寻的动作。举例来说,如果刚刚我们执行/vbird去向下搜寻"vbird"这个字符串,则按下n后,会向下继续搜寻下一个名称为"vbird"的字符串。如果是执行?vbird的话,那么按下n则会向上继续搜寻名称为"vbird"的字符串
Nn刚好相反,为『反向』进行前一个搜寻动作。例如/vbird后,按下N则表示『向上』搜寻"vbird"。

在Linux中部署Tomcat

  1. 下载Tomact7
    官方下载地址Apache Tomcat® - Apache Tomcat 7 Software Downloads

  2. 上传Tomact到root目录下
    打开SSH,先连接虚拟机,然后传输Tomcat到虚拟机root目录下

  3. 切换到root目录并解压Tomcat

cd /root
tar -zxvf apache-tomcat-7.0.57.tar.gz
  1. 目录改名
mv apache-tomcat-7.0.57 tomcat7
  1. 启动Tomcat
cd /root/tomcat7/bin
./startup.sh
  1. 报错,原因是未安装JDK

在Linux中配置jdk

  1. 下载JDK8
    官方下载地址Java SE Development Kit 8 — 下载 | Oracle 中国

  2. 上传JDK到/root目录下
    跟上传Tomcat的步骤差不多。

  3. 切换到root目录并解压JDK

cd /root
tar -zxvf jdk-8u171-linux-x64.tar.gz 
  1. 目录改名
mv jdk1.8.0_171/ jdk8
  1. 配置环境变量
vi /etc/profile

G跳转到最后一行,写入以下内容

export JAVA_HOME=/root/jdk8
export PATH=$PATH:$JAVA_HOME/bin

:wq保存并退出后,终端再输入

source /etc/profile
  1. 验证jdk是否安装成功
    终端输入以下三行命令,若每行命令执行后会有对应的提示信息,则代表安装成功
java
javac
java -version

启动虚拟机的Tomcat并用物理机访问

  1. 打开SSH,在/root/tomcat7/webapps/下创建一个文件夹aaa,然后随便放一张图片进去
    例如/root/tomcat7/webapps/aaa/pic.jpg

  2. 启动Tomcat

cd /root/tomcat7/bin
./startup.sh
  1. 查看启动日志
tail -f ../logs/catalina.out
  1. 物理机访问Tomcat
    http://192.168.86.145:8080/
    http://192.168.86.145:8080/aaa/pic.jpg
    注:这里访问的是虚拟机的IP地址,端口号默认为8080。如果无法访问就接着看下一点,能访问则可跳过。

关闭Linux和Windows的防火墙(非必须)

如果在上一步中无法访问到虚拟机Tomcat,那么可能是防火墙的影响。

  1. 查看Linux防火墙允许端口
firewall-cmd --list-all
  1. 配置Linux防火墙开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent

命令解析:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数设置,重启后会失效

  1. 重启防火墙
firewall-cmd --reload

执行完上述命令后,物理机应该可以访问到Tomcat了,后续的点了解即可。

  1. 配置Linux防火墙移除8080端口
firewall-cmd --remove-port=8080/tcp --permanent
  1. 关闭Linux防火墙
    终端输入以下命令即可关闭防火墙
sudo systemctl stop firewalld.service
  1. 开启Linux防火墙
    相应的,开启防火墙的命令如下
sudo systemctl start firewalld.service
  1. 关闭Windows防火墙
    Win+R,输入“firewall.cpl”后回车,然后在左边找到并点击启用或关闭Windows Defender防火墙,在打开的页面中选择关闭防火墙。

修改Linux主机名字及映射关系

  1. 修改Linux主机名字
vi /etc/sysconfig/network

内容如下,其中HOSTNAME即为主机名

# Created by anaconda
NETWORKING=yes
HOSTNAME=number026
  1. 修改Linux映射关系
vi  /etc/hosts

内容如下,其中第三修改为自己虚拟机的IP地址,后面跟主机名,注意两者之间有一个空格

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.86.145 number026
  1. 修改Windows映射关系
    资源管理器打开C:WindowsSystem32driversetc,打开hosts文件,在末尾新开一行并添加下面的内容
192.168.86.145 number026
  1. 尝试以主机名访问Tomcat
    http://number026:8080/
    http://number026:8080/aaa/pic.jpg

课后任务

Linux同步北京时间

  1. 删除自带的localtime
rm -rf /etc/localtime 
  1. 创建软链接到localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  1. 安装
yum install ntpdate
  1. 同步时间
ntpdate -u ntp.api.bz

在Linux中部署MySQL

参考资料
CentOS7安装MySQL(8.0版本)
Linux上安装Mysql

  1. 查看系统是否安装了mysql数据库
rpm -qa | grep mysql
  1. 查询到已安装的MySQL后,执行以下命令依次卸载(若没有查询到,则说明没有安装MySQL,可直接跳过此步)
yum remove mysql-xxx-xxx
  1. 删除MySQL的配置文件(MySQL卸载不会自动删除配置文件,需自行清理)
  • 首先使用如下命令查找出所用的配置文件
find / -name mysql
  • 根据需求使用以下命令依次对配置文件进行删除
rm -rf [找到的MySQL目录或文件]
  1. 删除MariaDB的文件
    由于在CentOS中默认安装有MariaDB,如果我们不删除MariaDB,安装MySQL时可能会发生冲突。
  • 使用rpm 命令查找出要删除的mariadb文件
rpm -qa | grep mariadb
  • 可能出现结果:mariadb-libs-5.5.56-2.el7.x86_64,则删除查询到的程序:
yum -y remove mariadb-libs.x86_64
  1. 查看自己Linux的版本
cat /etc/redhat-release
  1. 找到对应的版本进行下载
    MySQL :: Download MySQL Yum Repository

  2. 复制下载文件的全名:mysql80-community-release-el7-3.noarch.rpm

  3. 在Linux中下载MySQL

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

如果提示未找到命令wget,则需要先安装wget,然后再执行上述命令

yum -y install wget
  1. 切换到/usr/local目录下
cd /usr/local/
  1. 安装MySQL源
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
  1. 检查是否安装成功
    执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo及 mysql-community-source.repo
cd /etc/yum.repos.d/
ls -l
  1. 查看mysql相关资源
yum repolist enabled | grep "mysql.*-community.*"

结果如下
mysql-connectors-community/x86_64 MySQL Connectors Community 185
mysql-tools-community/x86_64 MySQL Tools Community 123
mysql80-community/x86_64 MySQL 8.0 Community Server 229

  1. 安装MySQL
sudo yum install mysql-community-server

该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等,安装时间会比较长。

  1. 启动MySQL
systemctl start mysqld.service
  1. 查看MySQL状态
systemctl status mysqld.service
  1. 重启MySQL
systemctl restart mysqld.service
  1. 停止MySQL
systemctl stop mysqld.service
  1. 获取MySQL初始密码
grep 'temporary password' /var/log/mysqld.log

执行后结果如下,绿色部分是临时密码
2021-03-27T20:34:32.523779Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: wh8ojen+&fAK

  1. 登录MySQL
mysql -uroot -p

执行后会提示输入密码,这里输入密码是不显示的,直接输就行

  1. 修改密码
    BY后面是新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

如果有下面的提示,则说明密码太简单。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决方案1:使用复杂密码,MySQL8.0默认的密码策略是要至少包含数字1个、大小写字母各一个及特殊字符一个,长度至少为8位;
解决方案2:如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以参考:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

  1. 设置允许远程登录
use mysql;
update user set user.Host='%' where user.User='root';
  1. 刷新权限
flush privileges;
  1. 设置开机启动MySQL
systemctl enable mysqld
systemctl daemon-reload
  1. 配置Linux防火墙开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
  1. 重启防火墙
firewall-cmd --reload
  1. 物理机连接MySQL


    如果没出现下图的错误,则可以直接跳过后面这部分。如果出现了,是因为MySQL8之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则变成caching_sha2_password了

    解决方案如下:
    进入虚拟机MySQL,更改加密方式(BY后面的password改成自己的密码)
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

然后更新用户密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

刷新权限

flush privileges;

接着再去连接测试就成功了

执行SQL脚本后,可能出现的错误
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决方案:

vi /etc/my.cnf

[mysqld]最后写入以下内容,然后保存

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

重启MySQL

systemctl restart mysqld.service

在Linux中部署Nginx并实现负载均衡

  1. 安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
  1. 下载PCRE安装包
cd /usr/local/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
  1. 解压PCRE安装包
tar zxvf pcre-8.37.tar.gz
  1. 进入安装包目录并编译安装
cd pcre-8.37
./configure
make && make install
  1. 查看pcre版本
pcre-config --version
  1. 下载Nginx安装包
cd /usr/local/
wget http://nginx.org/download/nginx-1.19.9.tar.gz
  1. 解压Nginx安装包
tar zxvf nginx-1.19.9.tar.gz
  1. 进入安装包目录并编译安装
cd nginx-1.19.9
./configure
make && make install
  1. 配置Linux防火墙开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
  1. 重启防火墙
firewall-cmd --reload
  1. nginx的常用命令
  • 启动nginx
cd /usr/local/nginx/sbin 
./nginx
  • 关闭nginx
cd /usr/local/nginx/sbin 
./nginx -s stop
  • 重启nginx
cd /usr/local/nginx/sbin 
./nginx -s reload
  1. 物理机访问虚拟机IP
    http://192.168.86.145/
    访问后能看到Nginx提示,则代表Nginx正常运行

  2. 准备第二个Tomcat

cd /root
tar -zxvf apache-tomcat-7.0.57.tar.gz
  1. 目录改名
mv apache-tomcat-7.0.57 tomcat7-b
  1. 修改端口号
vi /root/tomcat7-b/conf/server.xml

通过搜索命令/port="8005"找到如图位置,修改成9005,然后保存

通过搜索命令/port="8080"找到如图位置,修改成9080,然后保存

通过搜索命令/port="8009"找到如图位置,修改成9009,然后保存

  1. 启动Tomcat
cd /root/tomcat7-b/bin
./startup.sh
  1. 配置Linux防火墙开放9080端口
firewall-cmd --zone=public --add-port=9080/tcp --permanent
  1. 重启防火墙
firewall-cmd --reload
  1. 物理机访问Tomcat
    http://192.168.86.145:9080/

  2. 分别往两个Tomcat中设置不同的页面以便看到效果
    在Tomcat的webapps中放了文件夹aaa,里面是index.html,页面体内容是8080!
    在Tomcat-b的webapps中放了文件夹aaa,里面是index.html,页面体内容是9080!

  3. 修改tomcat默认启动页

vi /root/tomcat7/conf/server.xml
`/Host name`搜索到上面的内容,在该行下一行位置添加 ``` ``` 同样对tomcat7-b进行类似的操作 ``` ```
  1. 修改Nginx配置文件
vi /usr/local/nginx/conf/nginx.conf


如图,在http{}中添加如下内容,并按上图修改红框的部分

upstream myserver{
  server 192.168.86.145:8080;
  server 192.168.86.145:9080;
}
  1. 重启两个Tomcat和Nginx
/root/tomcat7/bin/shutdown.sh
/root/tomcat7/bin/startup.sh 
/root/tomcat7-b/bin/shutdown.sh
/root/tomcat7-b/bin/startup.sh 
/usr/local/nginx/sbin/nginx -s reload
  1. 打开浏览器进行访问
    http://number026/
原文地址:https://www.cnblogs.com/ast935478677/p/14591819.html