# 常用命令
# 查看所有端口 | |
netstat -tulnp |
# Linux
学习视频地址 LINUX
[尚硅谷教学视频](http: //www.atguigu.com/download.shtml#linux)
安装下载位置,Linux
安装好以后去安装 UBUNTU
# linux 文件系统
linux 中没有盘符的概念,只有一个根目录。根目录用 /
表示。
/
根目录下有以下几个文件。/bin
/etc
/home
/lib
/usr
这些不同的目录都有不同的作用。每个目录的作用介绍可查看 Linux 目录介绍
# Linux 常用命令
pwd 查看当前在那个目录以及是那个用户。当前路径。
ls 查看当前目录下有那些文件夹,有颜色的或者有后缀名的是文件夹,可以打开,没有的是文件。
cd 进入到文件夹。进去了之后可以用
pwd
查看,使用 cd 可以打开多级路径,用 / 隔开,表示子目录。== 注意:== 区分大小写cd 快捷键,我们可以使用
cd ..
进入目录,cd 目录之下有些很长的文件夹名字,我们可能记不住,用 ls 查看很长也不想敲。这时候可以使用 Tab 键,快捷键打出来。点一下是直接获取到输入的首字母的文件,两下是打开以你输入的字母开头的文件。回到家目录。直接
cd ~
clear,清空屏幕命令。
ls -l: 罗列出目录,是以竖排这样的方式展示的,ls 后面也可以跟路径,此时,罗列出来的目录就是该路径下的目录。
ls -a: 罗列出影藏的文件目录。可以和 ls -l 一起使用。
**ls -l -a**
:竖排查看所有文件,包含隐藏文件。**ls -lha**
:竖排显示所有文件,包含隐藏文件,且大小以k
单位显示出来只要是隐藏的文件或隐藏的文件夹。用 ls 查看到的都是前面带个小点的。
在 Ubuntu 中,如果想创建一个隐藏的文件或者文件夹,只需要在前面加一个点。
通配符:类似正则表达式。
*
:表示一个或多个。?
:一个字符。- [1、2、3],也是代表一个字符,但是只能从中括号中选择一个字符。
- [a-z],是代表 a 到 z 中的任意一个字符。
mv:移动文件夹或文件,也就是剪切。如下:
mv ceshi.txt /home/siki/weiwei mv hello2.txt /home/siki/Desktop/aa/127.txt //移动以后改名字为127.txt
将
ceshi.txt
文件移动到/home/siki/weiwei
文件夹之下。我们不但可以移动,还可以在移动的时候给他修改文件名字。也就是重命名。例:mv test demo // 在当前文件夹中,移动 test 文件,且更换名字到当前文件夹。就是修改名字。
cp:复制文件夹或文件,和移动类似。复制是不删除原来位置的文件。复制的过程中,也可以重新命名。注意:cp 复制时如果是文件夹需要在前面加上
-r
。find:精确搜索,
find /home -name test.txt
上面代码说明,在 home 路径下搜索名字为 test 的文件,只要是 home 下的任何子目录下的 test 文件都看搜索出来,搜索结果为:展示搜索文件的路径。
find /home -name he* // 名字中含有 he 的文件
find /home -name '12*' // 名字以 12 开头的文件
find /home -iname 'abd' // 名字为 abc 开头且不区分大小写。
搜索 home 之下所有目录中,名字带有 he 的所有文件及文件夹。
locate 123 // 搜索索引库中的带有 123 的文件或者文件夹或者路径带有 123 的都索引出来。
last:查看出远程登录记录,其中包括,远程登录的账号、IP、星期、日期、时间、操作时长。
echo $HISTSIZE:用这个命令可以查看 linux 最多可以保存多少行记录。
history|more:这个命令可以查看所有的操作记录。使用空格翻页、一页一页的查看。
history:查询最近的历史操作记录
top:top 命令经常用来监控 linux 的系统状况。能够实时显示系统中各个进程的资源占用情况。
查看帮助手册,
需要查看帮助的命令
+–-help
,man
+ 需要查看的命令:如下ls --help mv --help man ls man mv //man命令使用q退出来。
cat:查看文件内容。所有内容直接打印出来,适用于查看内容少的文件。
cat -b 123.txt // 查看文件 123.txt 的内容,使用 - b,是显示行号。此行号不包含空行。
cat -n 123.txt // 查看文件 123.txt 的内容,使用 - n,是显示行号。此行行包括空行。
moar:也是查看文件内容。所有内容直接打印出来,适用于查看内容少的文件。这个会打印换行。其他的与 cat 相似。
grep:抓取文件中的内容;
grpe user 123.txt // 搜索文件名为 123.txt 中,包含 user 字段的哪一行内容。
grep -n user 123.txt // 加上一个 - n,是为了显示搜索到的内容显示行号。空行也算行号的
grpe -v user 123.txt // 反向搜索,搜索文件名为 123.txt 中,不包含 user 字段的哪一行内容。
grpe ^'#' /etc/services // 抓取在 /etc/services 文件 中以 #开头的数据。
grpe s$ /home // 在 /home 中 以 s 结尾的 。
grpe -i abc 123.txt // 在 123.txt 中查找 abc。且忽略大小写。
> 和 >> :**> 把得到或者查询出来的内容保存在其他文件夹,一个 > 代表是全部替换。两个 >>** 代表是接在后面。比如:
grep siki 123.txt > test.txt // 抓取文件 123.txt 中,带有 siki 字段的内容 且 将它们保存或替换 test.txt 文件中的内容。如果没有 test.txt 文件。则会在当前目录下新创建一个 test.txt 文件用于保存抓取到的文件。
grep siki 123.txt >> text.txt // 类似上面,唯一不懂的是,这个不是替换 text.txt 中的类容,而是将它接在 text.txt 文件内容的后面。
// 例子如下:
ll > 123.txt //ll 以列表的形式查看当前目录。且把查看到的目录替换保存到 123.txt 中
ll >> 123.txt //ll 以列表的形式查看当前目录。且把查看到的目录保存到 123.txt 中
总结:一个
>
替换。两个>>
加在后面。有text.txt
文件。替换里面的内容,若没有,创建新的test.txt
文件。|:管道。相当于做一个命令的连接。将一个命令的输出改变为输入。
ln:软连接。相当于 windows 的桌面快捷方式。
ln aa/123.txt aa_softlink // 意思是 为 aa/123.txt 创建一个快捷方式,快捷方式的名字叫 aa_softlin
修改快捷方式里面的内容,原文件中的内容也会同时被修改。
# 用户管理、权限。
- 添加用户:sudo
useradd
:添加新用户。
passwd
:添加密码。
初始用户可以使用 sudo 添加新用户。
sudo useradd user1 // 前面的是命令,user1 是需要添加的用户名。 |
此处添加需要输入当前除使用户的登录密码作为验证。验证成功后,就可以创建成功了。我们用这个命令查看刚才创建的用户。
cat /etc/passwd // 查看服务器所有用户。 |
查看到已经创建的用户以后,给创建的用户设置登录密码
sudo passwd user1 // 使用命令 sudo + 密码 + 需要设置密码的用户名。这里需要重复一遍 |
给 root 设置密码:
sudo passwd root //root 账户就是主账户,名字一般都是 root。
给 root 设置密码的时候需要验证一下当前账户的密码。
切换用户:su
su root // 使用 su + 需要切换的用户的名字
切换成功以后输入密码登录。
退出 root:
exit // 退出 root 以后,会自动回到初始账号上面去
删除用户:userdel
userdel user1 // 删除用户名为 user1 的用户。不删除家目录 /home。
userdel -r user1 // 加上 - r 这参数,就删除用户的家目录 /home。
用户组。
添加用户组:groupadd
groupadd group1 // 添加一个组名为 group1 的用户组
使用
cat /etc/group
查看是否添加成功。cat /etc/group // 查看是否添加成功。
修改用户组:groupmod
groupmod -n group1_new gronp // 需要加一个 - n 参数。这里注意先写需要改的名字,后面才写改的是哪个组。
用户组的删除:groupdel
groupdel group1 // 直接删除命令加需要删除的组的名字。
配置文件:passwd
cat /etc/passwd // 操作系统下的配置文件。配置用户的配置。
文件的权限
<img src="../../../../images/ 扩展知识 / Linux/image-20210527173252136.png" alt="image-20210527173252136" />
使用
ll
命令查询出来之后,文件前面总是用很多-
。前面的第一个是 d,代表是文件夹,可以打开。第一个是-
代表是文件。后面的 9 个-
。前三个代表的是自己可以操作的权限。中间三个代表的是组 group 可以操作的权限。最后一个代表其他人可以操作的权限。其中:R W X 对应的是可读(read)、可写(write)、可执行(excute)。
修改权限:chmod
u:代表当前使用的用户。第 123 个
-
g:代表该用户所在的组。第 456 个
-
o:代表其他用户的权限。第 789 个
-
a:代表 u、g、o 全部修改。
小结: 每个 u、g、o 中。又有 r、w、x 对应的读、写、执行权限
chmod u+x // 这个意思是,使用修改权限的命令。u 代表是给当前使用的用户,该 user 用户,修改,+ 就是加,给它添加一个权限。加一个 x 权限。x 为可以执行的权限。
chmod g+w // 用户组的可写权限打开。
chmod o+wx // 其他用户的写、执行权限打开。
chmod a-x // 全部的可执行权限关闭。
chmod u=rwx // 将 u(当前用户的 rwx 可读、可写、可执行)权限设置为打开。
chmod u=rwx g=rw o=rwx // 可以多个修改。
使用数字代表权限。
r = 4,w = 2, x = 1
。设置多权限就把对应的数组加起来。如下:chmod 777 test // 修改 test 文件夹的权限为 a(所以用户)rwx。可读、可写、可执行。这里的第一个 7 代表的是 u(user 自己)、第二个 7 代表的是 g(用户组)、第三个 o(他们、其他人)
chmod 774 test // 意思为:u(自己)和 g(组)权限为可读可写,o(其他人)权限为只读。
chmod 444 test // 包括自己在内的所有人员权限为:只读。
chmod 764 test //u(自己)可读可写可执行,g(组)可读可写 不可执行,o(其他人)只能读。
chmod -r 444 test // 加上一个 - r 是代表把文件夹下面的文件及文件夹的权限都改了。
这里只有三个数字是因为一个数字代表三个
-
。具体的权限看他的数字的总和。修改所属人、所属组。
chown:修改所属人。
这里需要注意的是,修改所属人估计权限不够,所以我们在前面加一个 sudo。
sudo chown user test // 修改 test 文件夹的所属人为 user
chgrp:修改所有组。
也是权限不够,需要在前面加上 sudo。
sudo chgrp user test // 修改 test 文件夹的所属组为 user
<img src="../../../../images/ 扩展知识 / Linux/image-20210528112234389.png" alt="image-20210528112234389" style="zoom:;" />
也都可以加上 **-r**,递归。也就是所有的子文件、子文件夹都修改问这个所属用户、所属组。
# 在 Linux 系统中安装 Tomcat
# 安装 JDK
安装 tomcat 之前,必须要安装 JDK。
# 使用 yum 一键安装
yum install -y java-1.8.0-openjdk-devel // 这里装完以后记得去配置jdk环境变量 |
# 查看 java 版本
java -version |
# 配置环境变量
# 找到 java 安装的路径
whereis java // 查看路径 | |
// /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz | |
ls -lrt /usr/bin/java // 查看java的bin之下路径 | |
// /usr/bin/java -> /etc/alternatives/java | |
ls -lrt /etc/alternatives/java // 查看需要配置环境的路径 | |
// /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/java | |
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java |
# 进入文件夹配置环境变量
vim /etc/profile // 进入java环境变量配置单的文件 |
在文件的末尾处添加以下代码:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64 | |
export PATH=$JAVA_HOME/jre/bin:$PATH | |
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
注意:
上面代码的第一行,**export JAVA_HOME=** 之后,改为你自己的路径,切注意,路径不包含版本号、系统号之后的 /jre/bin/java
这个路径。
# 使配置生效
source /etc/profile |
# 查看 JAVA_HOME 环境变量
echo $JAVA_HOME | |
// /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64 |
# 下载 Tomcat
进入 Tomcat 官网下载页面,下载需要的版本的 Tomcat。官网地址:Tomcat
# 安装 Tomcat
把下载好的压缩包,上传到 Linux 系统中。
创建目录
mkdir /usr/local/tomcat/
解压到需要安装的目录
tar -zxvf apache-tomcat-8.5.49.tar.gz -C /usr/local/tomcat/
解压缩以后,进入 /usr/local/tomcat/ 目录后,你会发现多一个目录,它就是 Tomcat 所在目录。Tomcat 版本不同,这个目录名有所不同,这里是 apache-tomcat-8.5.49。
启动
执行 Tomcat 的启动脚本
/usr/local/tomcat/apache-tomcat-8.5.49/bin/startup.sh
返回的结果如下:
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-8.5.49
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-8.5.49
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.49/temp
Using JRE_HOME: /usr/local/java/jdk1.8.0_231/jre
Using CLASSPATH: /usr/local/tomcat/apache-tomcat-8.5.49/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.49/bin/tomcat-juli.jar
Tomcat started.
启动完成以后。
验证
Tomcat 默认端口是 8080,在浏览器中输入对应 IP 和端口,比如:http://192.168.1.111:8080,就可以访问了
# 在 Tomcat 上部署项目
把需要部署的项目放到 webapp 目录之下。这时候我们输入自己的 ip:8080 / 项目文件名 /index.html 可以正常的查看到我们的项目。但这个时候,我们发现,在访问我们的项目内容时,必须加上我们的项目名字 "myweb",这样很不好。
我们可以编辑 conf/server.xml 进行配置,打开 server.xml 文件,找到 Host 元素,默认配置如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="myProject" path=""/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
我们需要在 Host 内部增加 Context 的内容,增加之后如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="myProject" path=""/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
这个时候,就可以通过这种不用加项目名的 http://localhost:8080/index.html 形式访问了
这里需要 == 注意:== 的是
<Context docBase="myProject" path=""/>
docBase 后面跟的是我们的项目名称。
# Linux 下重启 Tomcat
进入 linux 系统下 Tomcat 的 bin 目录
/usr/local/tomcat/apache-tomcat-8.5.30/bin
关闭一下 Tomcat 服务,特别是已经启动的情况下,只不过有些异常
./shutdown.sh
检查一下 tomcat 是否确实已经关闭
ps -ef | grep java
假如出现以下类似的提示,表示 tomcat 已经关闭
root 16117 16036 0 13:51 pts/0 00:00:00 grep --color=auto java
最后重新启动 tomcat
./startup.sh
# Tomcat 部署域名 + 证书
部署步骤:
- 搭建 Tomcat 环境。
- 申请域名证书。
- 部署域名的 http 访问。
- 部署域名的 https 访问。
- 强制使 http 跳转至 https。
我这里从第三步开始。
# 部署域名的 http 访问。
部署好 Tomcat 后,找到对应目录下的 conf 文件找到 server.xml 文件修改对应的配置。找到 Host 添加域名绑定配置
<Host name="www.xn--xkr52xh3grqg.cn" appBase="webapps" | |
unpackWARs="true" autoDeploy="true"> | |
<Context docBase="myProject" path=""/> | |
<!-- SingleSignOn valve, share authentication between web applications | |
Documentation at: /docs/config/valve.html --> | |
<!-- | |
<Valve className="org.apache.catalina.authenticator.SingleSignOn" /> | |
--> | |
<!-- Access log processes all example. | |
Documentation at: /docs/config/valve.html | |
Note: The pattern used is equivalent to using pattern="common" --> | |
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" | |
prefix="localhost_access_log" suffix=".txt" | |
pattern="%h %l %u %t "%r" %s %b" /> | |
</Host> |
配置详情:
<Host name="域名" appBase="webapps" | |
unpackWARs="true" autoDeploy="true"> | |
<Context path="" docBase="网站文件路径"/> | |
</Host> |
测试域名访问成功后,进行下一步测试。
# 配置域名 https 访问
将域名的 ssl 证书放到 Tomcat 中的 conf 文件中。在 server.xml 文件中找到 ssl 配置中做如下配置修改:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" | |
maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.xn--xkr52xh3grqg.cn"> | |
<SSLHostConfig hostName="www.xn--xkr52xh3grqg.cn"> | |
<Certificate certificateKeystoreFile="conf/qianmonianhua.jks" certificateKeystorePassword="123456" | |
type="RSA" /> | |
</SSLHostConfig> | |
</Connector> |
这一段仔细找,默认是写好了的。但是是注释的。我们需要把注释符号去掉。
配置详情:
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="域名"> | |
<SSLHostConfig hostName="域名"> | |
<Certificate certificateKeystoreFile="conf/证书路径以及名称" certificateKeystorePassword="证书密码" type="RSA"/> | |
</SSLHostConfig> | |
</Connector> |
这里一定不要忘了第一行上面的 defaultSSLHostConfigName="域名"
,否则会出现 404!
为了做强制 https。所以我也在这时候修改了如下配置:
<Connector port="80" protocol="HTTP/1.1" | |
connectionTimeout="20000" | |
redirectPort="443" /> |
redirectPort 改成 ssl 的 connector 的端口 443,重启后便会生效
# 强制使 http 跳转至 https
到 conf 目录下的 web.xml。在 </welcome-file-list> 后面,</web-app>,也就是倒数第二段里,加上这样一段
<login-config> | |
<!-- Authorization setting for SSL --> | |
<auth-method>CLIENT-CERT</auth-method> | |
<realm-name>Client Cert Users-only Area</realm-name> | |
</login-config> | |
<security-constraint> | |
<!-- Authorization setting for SSL --> | |
<web-resource-collection> | |
<web-resource-name>SSL</web-resource-name> | |
<url-pattern>/*</url-pattern> | |
</web-resource-collection> | |
<user-data-constraint> | |
<transport-guarantee>CONFIDENTIAL</transport-guarantee> | |
</user-data-constraint> | |
</security-constraint> |
这一段在 web.xml
文件的最下面。最后的位置。加上保存即可。