前言
报了一个就业培训班,上课的同时想把自己的学习过程记录下来。
课堂任务
安装虚拟机CentOS 7
点击查看详细内容
下载并安装VMware Workstation
下载CentOS 7系统镜像
回车之后稍等一段时间,会弹出安装界面
分别设置好ROOT PASSWORD和USER CREATION,然后等待安装完成
重启后输入账户密码即可
配置虚拟机和物理机能互相ping通
点击查看详细内容
- 设置虚拟机的网络连接为NAT模式
- 在VMware Workstation中打开【编辑】→【虚拟网络编辑器】,记住NAT模式的子网地址,我这里是192.168.86.0,86是重点
- 打开“网络和Internet”设置,更改适配器选项,修改VMware Network Adapter VMnet8属性,其中修改IP地址和默认网关时,只有红框框起来的部分跟我不一样,(192.168.X.Y中的X修改为NAT模式的子网地址86,Y分别是1和2),其他都一样
- 修改虚拟机的IP地址,在终端输入
vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 然后按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
- 改完之后按Esc,输入:wq,然后按回车。接着在终端输入以下代码来查看是否修改成功。
cat /etc/sysconfig/network-scripts/ifcfg-ens33
- 重启网络
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的部分常用命令
点击查看详细内容
-
su
英文:swith user
说明:切换用户。
语法:su [用户名]
-
cd
英文:change directory
说明:切换当前目录至指定目录名。
语法:cd [目录名]
cd /
切换根目录cd ..
回到上一级目录cd .
当前目录cd ~
当前用户的宿主目录(root为/root,普通用户为/home/用户名) -
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-的意思分别是读,写,执行,无权限。
-
pwd
英文:print working directory
说明:查看当前工作目录。 -
mkdir
英文:make directory
说明:创建文件夹。
语法:mkdir [选项] [目录]
mkdir -p /tmp/test/t1/t
此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录 -
cp
英文:copy
说明:将源文件复制至目标文件,或将多个源文件复制至目标目录。
语法:cp [源文件或目录] [目的目录]
cp -i
提示cp -r
复制目录及目录内所有项目cp -a
复制的文件与原文件时间一样 -
mv
英文:move
说明:移动文件或目录,重命名文件或目录。
语法:mv [源文件或目录] [目的目录或新名称]
-
rm
英文:remove
说明:删除一个目录中的一个或多个文件或目录,如果没有使用-r
选项,则rm
不会删除目录。
语法:rm [选项] [文件或目录...]
rm -r
将目录及以下之档案亦逐一删除。rm -f
即使原档案属性设为只读,亦直接删除,无需逐一确认。 -
cat
英文:concatenate
说明:用于连接文件并打印到标准输出设备上。
语法:cat [选项] [文件名]
cat -A
显示所有内容,包括隐藏的字符cat -n
显示行号
补充:
- 一次显示整个文件的内容
cat filename - 从键盘创建一个文件
cat > filename - 将几个文件进行合并为一个文件
cat file1 ffile2 > file3
-
more
说明:类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的命令就是按空格
键(space)就往下一页显示,按b
键就会往回(back)一页显示,按回车
键(enter)显示下一行
语法:more [选项] [文件名]
more -num
一次显示的行数 -
head
说明:查看文件的开头部分的内容,默认为查看头10行的内容。
语法:head [选项] [文件名]
head -q
隐藏文件名head -v
显示文件名head -c <数目>
显示的字节数head -n <行数>
显示的行数 -
tail
说明:查看文件的末尾部分的内容。
语法:tail [选项] [文件名]
-
ln
英文:link files
说明:为某一个文件在另外一个位置建立一个同步的链接。
语法:ln -s [选项] [源文件或目录] [目标文件或目录]
ln -b
删除,覆盖以前建立的链接ln -d
允许超级用户制作目录的硬链接ln -f
强制执行ln -i
交互模式,文件存在则提示用户是否覆盖ln -n
把符号链接视为一般目录ln -s
软链接(符号链接)ln -v
显示详细的处理过程 -
man
说明:帮助命令。
语法:man [命令]
-
help
说明:帮助命令。
语法:help [命令]
-
find
说明:用来在指定目录下查找文件。如果使用该命令时,不指定路径,则在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
语法:find [搜索路径] [选项] [匹配条件]
find /etc/ -name "init"
在路径/etc/
下查找文件名符合init
的文件。find /etc/ -iname "init"
在路径/etc/
下查找文件名符合init
的文件,忽略大小写。 -
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$
-
ps
英文:process status
说明:显示当前进程的状态,类似于 windows 的任务管理器。
语法:ps [options] [--help]
ps -ef
显示所有命令,连带命令行。ps -ef | grep [进程关键字]
查找指定进程格式。ps -A
列出所有的进程。 -
gzip
说明:用于压缩文件,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
语法:gizp [选项] [文件或目录]
补充:
- 压缩所有文件
gzip * - 将单个文件进行解压
gzip -d test.txt - 将每个文件进行解压
gzip -dv * - 递归压缩abd目录
gzip -r abd/ - 递归解压abd目录
gzip -dr abd/
- 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编辑器
点击查看详细内容
插入命令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"的字符串N
与n
刚好相反,为『反向』进行前一个搜寻动作。例如/vbird
后,按下N
则表示『向上』搜寻"vbird"。
在Linux中部署Tomcat
点击查看详细内容
-
下载Tomact7
官方下载地址Apache Tomcat® - Apache Tomcat 7 Software Downloads -
上传Tomact到root目录下
打开SSH,先连接虚拟机,然后传输Tomcat到虚拟机root目录下 -
切换到root目录并解压Tomcat
cd /root
tar -zxvf apache-tomcat-7.0.57.tar.gz
- 目录改名
mv apache-tomcat-7.0.57 tomcat7
- 启动Tomcat
cd /root/tomcat7/bin
./startup.sh
- 报错,原因是未安装JDK
在Linux中配置jdk
点击查看详细内容
-
下载JDK8
官方下载地址Java SE Development Kit 8 — 下载 | Oracle 中国 -
上传JDK到/root目录下
跟上传Tomcat的步骤差不多。 -
切换到root目录并解压JDK
cd /root
tar -zxvf jdk-8u171-linux-x64.tar.gz
- 目录改名
mv jdk1.8.0_171/ jdk8
- 配置环境变量
vi /etc/profile
按G
跳转到最后一行,写入以下内容
export JAVA_HOME=/root/jdk8
export PATH=$PATH:$JAVA_HOME/bin
:wq
保存并退出后,终端再输入
source /etc/profile
- 验证jdk是否安装成功
终端输入以下三行命令,若每行命令执行后会有对应的提示信息,则代表安装成功
java
javac
java -version
启动虚拟机的Tomcat并用物理机访问
点击查看详细内容
-
打开SSH,在/root/tomcat7/webapps/下创建一个文件夹aaa,然后随便放一张图片进去
例如/root/tomcat7/webapps/aaa/pic.jpg -
启动Tomcat
cd /root/tomcat7/bin
./startup.sh
- 查看启动日志
tail -f ../logs/catalina.out
- 物理机访问Tomcat
http://192.168.86.145:8080/
http://192.168.86.145:8080/aaa/pic.jpg
注:这里访问的是虚拟机的IP地址,端口号默认为8080。如果无法访问就接着看下一点,能访问则可跳过。
关闭Linux和Windows的防火墙(非必须)
点击查看详细内容
如果在上一步中无法访问到虚拟机Tomcat,那么可能是防火墙的影响。
- 查看Linux防火墙允许端口
firewall-cmd --list-all
- 配置Linux防火墙开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令解析:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数设置,重启后会失效
- 重启防火墙
firewall-cmd --reload
执行完上述命令后,物理机应该可以访问到Tomcat了,后续的点了解即可。
- 配置Linux防火墙移除8080端口
firewall-cmd --remove-port=8080/tcp --permanent
- 关闭Linux防火墙
终端输入以下命令即可关闭防火墙
sudo systemctl stop firewalld.service
- 开启Linux防火墙
相应的,开启防火墙的命令如下
sudo systemctl start firewalld.service
- 关闭Windows防火墙
Win+R,输入“firewall.cpl”后回车,然后在左边找到并点击启用或关闭Windows Defender防火墙
,在打开的页面中选择关闭防火墙。
修改Linux主机名字及映射关系
点击查看详细内容
- 修改Linux主机名字
vi /etc/sysconfig/network
内容如下,其中HOSTNAME即为主机名
# Created by anaconda
NETWORKING=yes
HOSTNAME=number026
- 修改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
- 修改Windows映射关系
资源管理器打开C:\Windows\System32\drivers\etc,打开hosts文件,在末尾新开一行并添加下面的内容
192.168.86.145 number026
- 尝试以主机名访问Tomcat
http://number026:8080/
http://number026:8080/aaa/pic.jpg
课后任务
Linux同步北京时间
点击查看详细内容
- 删除自带的localtime
rm -rf /etc/localtime
- 创建软链接到localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 安装
yum install ntpdate
- 同步时间
ntpdate -u ntp.api.bz
在Linux中部署MySQL
点击查看详细内容
参考资料
CentOS7安装MySQL(8.0版本)
Linux上安装Mysql
- 查看系统是否安装了mysql数据库
rpm -qa | grep mysql
- 查询到已安装的MySQL后,执行以下命令依次卸载(若没有查询到,则说明没有安装MySQL,可直接跳过此步)
yum remove mysql-xxx-xxx
- 删除MySQL的配置文件(MySQL卸载不会自动删除配置文件,需自行清理)
- 首先使用如下命令查找出所用的配置文件
find / -name mysql
- 根据需求使用以下命令
依次
对配置文件进行删除
rm -rf [找到的MySQL目录或文件]
- 删除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
- 查看自己Linux的版本
cat /etc/redhat-release
-
找到对应的版本进行下载
MySQL :: Download MySQL Yum Repository -
复制下载文件的全名:mysql80-community-release-el7-3.noarch.rpm
-
在Linux中下载MySQL
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
如果提示未找到命令wget,则需要先安装wget,然后再执行上述命令
yum -y install wget
- 切换到/usr/local目录下
cd /usr/local/
- 安装MySQL源
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
- 检查是否安装成功
执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo及 mysql-community-source.repo
cd /etc/yum.repos.d/
ls -l
- 查看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
- 安装MySQL
sudo yum install mysql-community-server
该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等,安装时间会比较长。
- 启动MySQL
systemctl start mysqld.service
- 查看MySQL状态
systemctl status mysqld.service
- 重启MySQL
systemctl restart mysqld.service
- 停止MySQL
systemctl stop mysqld.service
- 获取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
- 登录MySQL
mysql -uroot -p
执行后会提示输入密码,这里输入密码是不显示的,直接输就行
- 修改密码
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
- 设置允许远程登录
use mysql;
update user set user.Host='%' where user.User='root';
- 刷新权限
flush privileges;
- 设置开机启动MySQL
systemctl enable mysqld
systemctl daemon-reload
- 配置Linux防火墙开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重启防火墙
firewall-cmd --reload
- 物理机连接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并实现负载均衡
点击查看详细内容
- 安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
- 下载PCRE安装包
cd /usr/local/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
- 解压PCRE安装包
tar zxvf pcre-8.37.tar.gz
- 进入安装包目录并编译安装
cd pcre-8.37
./configure
make && make install
- 查看pcre版本
pcre-config --version
- 下载Nginx安装包
cd /usr/local/
wget http://nginx.org/download/nginx-1.19.9.tar.gz
- 解压Nginx安装包
tar zxvf nginx-1.19.9.tar.gz
- 进入安装包目录并编译安装
cd nginx-1.19.9
./configure
make && make install
- 配置Linux防火墙开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
- 重启防火墙
firewall-cmd --reload
- 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
-
物理机访问虚拟机IP
http://192.168.86.145/
访问后能看到Nginx提示,则代表Nginx正常运行 -
准备第二个Tomcat
cd /root
tar -zxvf apache-tomcat-7.0.57.tar.gz
- 目录改名
mv apache-tomcat-7.0.57 tomcat7-b
- 修改端口号
vi /root/tomcat7-b/conf/server.xml
通过搜索命令/port="8005"
找到如图位置,修改成9005,然后保存
通过搜索命令/port="8080"
找到如图位置,修改成9080,然后保存
通过搜索命令/port="8009"
找到如图位置,修改成9009,然后保存
- 启动Tomcat
cd /root/tomcat7-b/bin
./startup.sh
- 配置Linux防火墙开放9080端口
firewall-cmd --zone=public --add-port=9080/tcp --permanent
- 重启防火墙
firewall-cmd --reload
-
物理机访问Tomcat
http://192.168.86.145:9080/ -
分别往两个Tomcat中设置不同的页面以便看到效果
在Tomcat的webapps中放了文件夹aaa,里面是index.html,页面体内容是8080!
在Tomcat-b的webapps中放了文件夹aaa,里面是index.html,页面体内容是9080! -
修改tomcat默认启动页
vi /root/tomcat7/conf/server.xml
- 修改Nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
如图,在http{}中添加如下内容,并按上图修改红框的部分
upstream myserver{
server 192.168.86.145:8080;
server 192.168.86.145:9080;
}
- 重启两个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
- 打开浏览器进行访问
http://number026/