一.Linux的安装
1.1 VMWare虚拟机安装
- bin -> usr/bin : 这个目录存放最经常使用的命令
- boot : 这个目录存放启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
- 双击安装程序;
- 自定义安装--选择将虚拟机安装的位置路径;
- 用户体验设置--取消勾选"自动更新"和"统计信息发送给用户";
- 创建快捷方式到桌面,保留到开始菜单;
- 点击"开始安装",等待安装,加载进度;
- 点击许可证,输入许可证(百度查找);
以下为VMWare12PRO版本序列号:
*5A02H-AU243-TZJ49-GTC7K-3C61N
VF5XA-FNDDJ-085GZ-4NXZ9-N20E6
UC5MR-8NE16-H81WY-R7QGV-QG2D8
ZG1WH-ATY96-H80QP-X7PEX-Y30V4
AA3E0-0VDE1-0893Z-KGZ59-QGAVF*
- 安装完成。
1.2 Centos系统安装
- 官网下载ISO镜像文件https://www.centos.org/,版本介绍:
- 标准版DVD-ISO:有图形界面,最常用,本次学习也是该版本
- 最小版Minimal-ISO:没有图形界面
- 全量版Everything-ISO:包含的软件最丰富,占用的空间比较大;
- 打开虚拟机,创建新的虚拟机;
- 选择“典型”安装;
- 选择已经下载好的 ISO 镜像文件(在下载保存的路径下查找);
- 修改 Linux 系统的显示名称(在虚拟机用于显示你的Centos的名称),选择将要安装的位置路径;
- 修改磁盘大小,一般选择磁盘大小为20G,选择"将虚拟磁盘划分为多个文件";
- 修改硬件设置,自定义硬件设置(后期也可以修改),取消勾选"创建后开启虚拟机"。若电脑本身有16G运行内存,推荐Centos分配内存2G;若只有8G,建议分配1G;
- 点击完成,等待安装;
- 镜像加载完成,在虚拟机查看Centos硬件信息;
- 点击开启虚拟机,开始安装Centos,(可能弹出'二进制..'窗口,直接点击确定);
- 选择安装 Linux 系统,(此处需要鼠标进入虚拟机,直接点击虚拟机屏幕),上下箭头进行选择安装版本(一般选择Install CentOs Linux 7),按回车开始安装;
- 设置系统语言,选择“EngLish”,点击"Continue";
- 设置信息:
- 点击"DATE & TIME"设置时间,选择(亚洲、上海、24小时制、日期),点击Done完成时间设置;
- 点击"KEYBOARD"设置键盘,点击+号,输入chinese可以设置从键盘输入中文,点击"add",点击Done完成;
- 点击"LANGUAGE SUPPORT"设置语言支持,选择"j简体中文"加入中文,点击Done完成;
- 点击"INSTALLTIOAN SOURCE",点击Done完成;
- 点击"SOFTWARE SELECTION" 选择安装的 Linux 的系统类型,选择"GNOME Destop"桌面版,点击Done完成;
- 点击"INSTALLATION DESTINATION"设置磁盘管理,不用添加新磁盘,直接点击Done完成;
- 点击"NETWORK & HOST NAME"设置网络,点击"OFF"打开网络设置,查看ip信息,点击Done完成;
- 点击"Begin Install"开始真正安装。
- 在开始安装界面设置 root用户的t密码,点击"ROOT PASSOWRD",输入root的密码,点击Done完成(若密码过于简单,需要点击两次DONE);
- 设置完密码等待系统安装完成。
- 点击"LICENSING"设置许可证,选择 I Accept...接收许可,点击完成配置;
- 安装完成后进入Centos,设置引导页面
- 设置语言:英语
- 设置时区:默认,next,next,点击"skip"不绑定谷歌账号
- 设置普通用户和密码:非root用户名
- 完成以上所有,启动Centos。
二.Linux目录
- bin -> usr/bin目录
该目录存放Linux最经常使用的命令(如常用ls,cat,mkdir等),类似于jdk的bin目录; - boot
该目录存放启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件 - dev
dev 是 Device(设备)的缩写, 该目录下存放的是 Linux 的外部设备文件,Linux 中的设备也是以文件的形式存在 - etc
这个目录存放所有的系统管理所需要的配置文件,包括即将安装的常用的各种软件。(相当于环境变量配置) - home
用户的主目录,存储每个用户文件的根目录(即home下拥有多个不同用户的根目录);在 Linux 中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名 - lib->user/lib
这个目录存放着系统最基本的动态连接共享库,其作用类似于 Windows 里 的 DLL 文件,几乎所有的应用程序都需要用到这些共享库。 - mnt
系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容 - opt
这是给 linux 额外安装软件所存放的目录,通常安装大型软件。比如你安装一个 Oracle 数据库则就可以放到这个目录下,默认为空。 - root
该目录为系统管理员目录,root 是具有超级权限的用户 - tmp
这个目录是用来存放一些临时文件的。 - usr
存放共享的系统资源,一般开发程序员安装软件的位置,如JDK、Mysql、Tomcat等。非常重要的目录,用户的很多应用程序和文件都放在这个目录下(通常是/usr/local目录),类似于windows 下的 program files 目录。 -
var
这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行的各种日志文件。
三.Linux基础命令与Windows基础命令比较
- Linux常用操作命令
ls(查看目录)、ll(查看详细目录)、cd(切换目录)、pwd(展示当前位置)、cp(复制)、mv(剪切/改名)、cat(查看)、tail(查看后10行)、touch(创建文件)、rm(删除文件-rf)、mkdir(创建目录)、rmdir(删除目录)、vi(编辑文件内容)、vim(编辑文件内容、高级语法)、wc(统计行词字符)、wq(退出)、grep(文件内搜索)、ps(查看进程)、echo(向控制台输出)、yum(安装包操作)、which(搜索文件)、|(管道)、tar(压缩)。
在Linux系统下,操作的对象只有目录,没有CDEF硬盘,"/"表示了Linux的绝对路径,相对路径使用具体目录格式。在详细目录的表示中,d开头表示目录,l开头表示软链接,-开头表示文件。
- vi编辑文件内容的步骤
vi 文件名 --> 打开文件 --> 进入命令模式 --> 按i/a进入编辑模式 --> 按Esc进入底行命令模式(可以使用命令对文件内容操作) --> 输入: --> 输入wq保存、输入q!则是强制退出。
3.1 目录操作命令(目录操作需要带参数 -rf)
命令 | Linux系统 | Windows系统 |
---|---|---|
列出目录文件 | ls | dir |
ls -l(显示文件目录的详细信息,缩写为ll) | ||
ls -a(显示所有包括隐藏文件,-表示文件,d表示目录,l表示软链接) | dir /a(显示所有包括隐藏文件) | |
改变当前目录 | cd | cd |
进入父目录 | cd ../ | cd .. |
进home目录 | cd ~ | |
复制 | cp (-rf 递归复制) | copy |
cp 旧文件名.txt 新文件名.txt | ||
cp 旧文件名.txt /新目录/新文件名 | ||
cp -rf 旧目录 新目录 | ||
创建文件 | touch 文件名 | touch 文件名 |
删除文件 | rm 文件名 | del 文件名 |
rm -r(递归删除,将该目录下的子目录文件递归删除,需询问yes) | ||
rm -rf(强制删除,直接删除,不询问) | ||
创建目录 | mkdir 目录名 | md 目录名 |
删除目录 | rmdir 目录名 | rmdir 目录名 |
设置目录文件权限 | chmod u+rwx 文件名 | |
设置目录文件所有者 | chown user.group 文件名 | |
批处理 | .sh | .bat |
帮助 | cmd --help / -h |
—————————————————————————————————
3.2 文件-内容操作命令
命令 | Linux系统 | Windows系统 |
---|---|---|
创建文件 | touch 文件名 | touch 文件名 |
删除文件 | rm 文件名 | del 文件名 |
rm -r(递归删除,将该目录下的子目录文件递归删除,需询问yes) | ||
rm -rf(强制删除,直接删除不询问) | ||
显示文件内容 | cat(显示最后一屏内容) | type |
more(显示百分比,回车查看下一行,空格查看下一页,q退出查看) | more | |
less(使用键盘上的PgUp和PgDn向上和向下翻页,q结束查看) | ||
head -参数数字 (查看文件的头 参数 行,Ctrl+C结束) | ||
tail -参数 数字 (查看文件的后 参数 行,Ctrl+C结束,tail -f 文件 可以对某个文件进行动态监控) | ||
统计行数 | wc (行数 单词数 字符数) | |
显示文件信息 | file | |
修改文件内容 | vim 文件名 | |
vim 文件名 --> 进入文件(文件命令模式) --> 按i、o、a转换为编辑模式 --> 编辑文件 --> 按Esc进入底行模式 --> 输入:wq保存退出、q!强制退出 | ||
查找文件 | find 目录 -name ‘文件名’ (注意文件所在位置路径) | |
例如:find /bin -name ls | ||
定位可执行文件位置 | which | |
在文本文件内查找 | grep 关键词 文件名 | find |
不区分大小写查找 | grep -i 关键词 文件名 | |
grep "关键词" 文件名 | ||
以独立关键词查找 | grep-w 关键词 文件名 | |
压缩文件 | tar -zcvf 压缩名.tar.gz 被压缩文件名 | |
使用压缩 | tar -z | |
创建压缩文档 | tar -c | |
显示压缩文件名 | tar -v | |
指定归档(压缩)文件名 | tar -f | |
指定归档(压缩)文件名 | tar -t | |
解压 | tar -x | |
查看压缩文件内容 | tar -C | |
解压到指定文件 | tar -xvf | |
启动运行程序 | gnome -open、open | start |
向屏幕打印、输出 | echo "内容" | |
重定向覆盖 | echo "内容" > 文件名 | 将打印的内容添加到重定向文件中,若文件不存在则创建再添加;文件存在先清空文件,再写入内容。 |
重定向追加 | echo "内容" >> 文件名 | 将打印的内容追加到重定向文件中,若文件不存在则创建再添加;文件存在,则追加到内容。 |
—————————————————————————————————
3.3 系统信息查询命令
命令用途 | 命令 | 备注 |
---|---|---|
显示内核版本 | uname -a | |
显示发布版本 | lsb_release -a | |
cat 、etc、issue | ||
显示id信息 | id、whoami | |
显示当前登陆用户 | who | |
显示当前环境信息 | env | |
显示启动中检测到的硬件信息 | dmesg | |
显示系统的PCI设备 | lspci | |
显示系统的USB | lsusb | |
显示cpu信息 | less 、proc、cpuinfo | |
显示内存 | less 、proc、menminfo | |
显示硬盘存储信息 | df -h |
—————————————————————————————————
3.4 进程-任务控制命令
最常用:ps -ef | grep 关键词(查看xxx用户的进程信息)
命令用途 | 命令 | 备注 |
---|---|---|
显示进程信息 | ps | |
显示当前所有进程的信息 | ps -ef | |
显示当前所有进程 | ps -e | |
显示进程信息 | ps -f UID/PID | |
查看进程 配合管道 | ps -ef | grep 关键词 |
BSD格式显示进程信息 | ps -auxf | |
杀死进程 | kill 进程id | |
强制杀死进程 | kill -9 进程id | |
杀死所有 | killall postgresql | |
暂停中断当前前台任务 | ctrl - z | |
恢复任务到后台 | bg | |
恢复任务到前台 | fg |
—————————————————————————————————
3.5 网络命令
命令用途 | 命令 | 备注 |
---|---|---|
显示启动的网络服务 | netstat -anli less | |
显示路由表信息 | netstat -r | |
显示ip | ip -a | |
ifconfig | ||
显示防火墙信息 | iptables -list | |
远程登陆 | ssh user@host | |
发送ping信息 | ping ip | |
命令行下载 | wget url | |
查看网络连通性 | curl -o url |
—————————————————————————————————
3.6 用户管理命令
命令用途 | 命令 | 备注 |
---|---|---|
修改命令 | passwd username | |
创建用户 | useradd username | |
删除用户 | userdel username | |
修改用户 | usermod | |
退出 | exit 、ctrl + D | |
切换用户(默认root) | su [-]username | |
以su后的权限执行 | sudo -u user cmd |
—————————————————————————————————
3.7 其他命令
命令用途 | 命令 | 备注 |
---|---|---|
显示日期时间 | date | |
日历 | cal2014 | |
清除屏幕 | clear | |
搜索软件包 | yum search tree | |
删除软件包 | yum remove 安装包名称 | |
安装软件包 | yum install 安装包名称 | |
重启系统 | reboot | |
关机 | shutdowm -h 定时时间 |
四.Linux的安装JDK
打开虚拟机,启动Centos
-
ifconfig查看centos的ip地址(ens33那个)
打开Xshell远程控制工具,连接到centos,新建Xftp文件传输会话
-
下载JDK,可以使用wget 官网JDK下载网址下载Linux版本的JDK(以tar.gz结尾),也可以使用xftp文件传输工具从本地下载好的JDK压缩包上传到centos的/home目录下的任意用户目录
-
下载/上传好JDK压缩文件后
-
使用tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/解压到指定的/usr/local/目录下
在/etc目录下的profile文件中添加环境变量(profile相当于windows的环境变量),若怕错误修改profile文件导致无法修改,可以先备份该文件
-
使用vi或vim对profile文件进行编写添加环境变量,在文件最后添加内容,如下:(根据自己的JDK版本和解压位置添加)
-export JAVA_HOME=/usr/local/jdk1.8.0_121
-export PATH=$JAVA_HOME/bin:$PATH
-export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
*若不会在centos命令行或Xshell命令行修改profile内容,可以在xftp的会话窗口找到profile文件使用记事本打开,直接编写保存
-
修改保存好profile文件后,使用source编译该配置文件生效
最后使用java -version 检查是否配置成功(若和windows下的信息一致则成功,取代了centos自带的OpenJDK)
五.Linux的安装Mysql
-
同JDK的下载安装,可以使用命令wget地址下载,也可以使用xftp上传本地已下载好的压缩包
-
切换到接收文件的用户/home/testme目录(testme是本次实验的当前用户),查看上传的压缩文件
-
使用命令tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ 解压上传的tomcat压缩包到/usr/local目录下
-
使用命令yum list installed | grep mariadb检查系统是否安装了 mariadb 数据库(mariadb数据库是Centos自带的mysql的分支)
若Centos自带了mariadb会和mysql配置环境冲突,使用命令yum -y remove mariadb-libs.x86_64进行卸载再安装Mysql
对已解压的文件改名(为了简短易记),使用命令mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql-5.7.18
在mysql-5.7.18的目录下创建data数据文件夹,用于存放以后所有的表数据。
使用useradd mysql创建mysql用户,以便于执行 mysqld 命令(初始化Mysql基础信息的命令)
在 mysql-5.7.18/bin目录下执行命令./mysqld --initialize --user=mysql --datadir=/usr/local/mysql-5.7.18/data --basedir=/usr/local/mysql-5.7.18,./表示在当前路径下的mysqld用户执行初始化mysql命令。命令执行完会产生数据库root用户的临时密码:root@localhost:密码
启用安全功能,在mysql-5.7.18/bin目录下使用命令./mysql_ssl_rsa_setup --datadir=/usr/local/mysql-5.7.18/data对服务器与数据库之间的的数据文件传输进行加密,
mysql安装后,需要更改mysql-5.7.18整个文件夹目录权限(原权限仅限于root用户),需更为自创建的mysql用户。在/usr/local/目录下执行命令chown -R mysql:mysql /usr/local/mysql-5.7.18/
启动MySQL服务,在mysql-5.7.18/bin目录下执行命令 ./mysqld_safe & &表示后台启动)。服务启动后,使用ps -ef | grep mysql查看进程,确认 msyql 是否启动
在mysql-5.7.18/bin目录下执行命令./mysql -uroot -p,输入初始密码root@localhost:后进入mysql,接着必须使用命令alter user 'root'@'localhost' identified by '新密码';进行密码修改
授权远程访问mysql,未授权只能本(centos)机访问,使用命令grant all privileges on . to root@'%' identified by '新密码';(. 表示数据库名.数据库表,root@'%' 表示用户名@ip地址,%模糊查询ip地址)
以上步骤完成后,开始使用mysql客户端连接centos数据库进行测试,使用ifconfig查看centos的ip地址,若可以直接连接则使用root账号或密码,也可以用自创建的mysql账号密码登录。
若不能连接数据库,原因一般有二:远程访问权限未开启(上面步骤已开启),防火墙未关闭(centos防火墙阻止连接)
六.Linux的安装Tomcat
-
同JDK的下载安装,可以使用命令wget地址下载,也可以使用xftp上传本地已下载好的压缩包
-
tomcat压缩包上传成功
-
使用命令tar -zxvf apache-tomcat-9.0.0.M26.tar.gz -C /usr/local/ 解压上传的tomcat压缩包到/usr/local目录下
-
解压成功后,到tomcat的bin目录下使用命令./startup.sh启动tomcat,./表示在当前位置执行文件
-
tomcat启动后,到浏览器访问Linux下安装的tomcat是否启动成功时,会遇到Linux防火墙开启,不能访问到tomcat的8080端口号:
- 需要使用命令systemctl status firewalld先查看防火墙状态,再用命令systemctl stop firewalld去关闭防火墙即可,若想重启防火墙则用systemctl start firewalld命令
-
查看catalian.out日志文件,经常使用tail -f catalina.out命令观察日志文件,此文件相当于eclipse中的console控制台,存储了tomcat启动过程中的一些信息。
查看localhost_access_log_yyyy-MM-dd.log日志文件 ,该文件每天只产生一份。
经常使用tail -f localhost_access_log_yyyy-MM-dd.log命令检测或者持续观察该日志文件,可以记录并分析tomcat 每天接收到的 http 请求信息。tomcat 服务器上运行的 web 应用接收的请求,请求方式(get,post),请求地址,请求参数(get 请求),处理是否成功(状态码)都在此文件记录。
七.Linux部署WEB应用项目
- 使用war包方式将web应用项目发布到centos的tomcat的webapps目录下,即可在 tomcat 中运行 web 应用
- 在 Eclipse 或IDEA或STS开发环境中,选择任意一个 web 应用,右键选中此项目,选择 File --> Export --> Web --> WAR file --> Browse保存到指定目录
- 使用 Xftp上传 刚刚打包的war 文件到centos系统中的 Tomcat的 webapps 目录
- 在 centos中切换到 tomcat 安装目录的/bin下,执行启动 Tomcat 的命令./startup.sh
- 在浏览器输入访问地址:http://centos的ip地址:端口号(一般为8080)/项目名/index.jsp
Linux常见面试题
查看网络TCP端口的使用情况的命令是什么?
Windows:ipconfig -all
Linux:ifconfig -a查看某一指定进程id为xxx是否在运行的命令是什么?
ps -f 进程id将目录/A拷贝到目录/B/c的命令是什么?
cp -rf /A /B/c查看系统启动日志的最后50行命令是什么?
tail -f 50 catalina.out(启动日志名)写出命令 统计xxx.log文件包含XXX单词(不区分大小写)的行数?
echo | wc -l | grep -i XXX单词 xxx.log统计/AAA/bbb目录下后缀是.txt的文件总大小的命令是?
find /AAA/bbb -type *.txt |wc -l若远程主机不可访问,简述一下排查过程以及使用到的工具和命令?
使用ifconfig查看远程主机ip地址是否跟本地ip地址同一个网关,使用systemctl status firewalld先查看防火墙状态是否开启,用命令systemctl stop firewalld关闭防火墙。使用工具Xshell或者SRT