- Linux


>> Linux 远程控制管理

Linux安装的是Ubuntu服务器版本(UBuntu Server 16.04 X64),作为服务器的电脑,一般不会放在身边,一般放在机房有专人看管维护,或者托管到运营商,我们平时操作的电脑是客户机;所以要控制服务器,就要通过远程控制的方式;

传统的网络服务程序,FTP、POP、Telnet本质上都是不安全的,因为它们在网络上通过明文传送口令和数据,这些数据很容易被截获;

SSH(Secure Shell)是LInux上的一种安全远程连接技术,由客户端和服务端组成;它可以把传输数据进行加密、压缩,预防攻击的同时还可以加快传输速度;

  • SSH 默认端口号:22
  • 远程连接工具:SecuetCRT

只要是连接,就有服务端和客户端;服务端创建监听端口,一直等待客户端请求服务端的监听端口;客户端发送请求到服务端,两端一连上就是长连接(tcp/ip连接),连上之后数据就能互相传递了;

SSH连接有两种方式:

  • 基于口令的连接方式:知道服务器的账号密码即可远程登录,口令和数据会在传输过程中国被加密;
  • 基于秘钥的安全验证:客户端创建一对秘钥,公有秘钥上传到服务端上自己的宿主机目录中,私钥保存在本地;客户端在访问服务端IP地址的时候,会将私钥传到服务端,与服务端上保存的公钥进行匹配,若匹配成功就可直接登录;
    (免密登录:没有免密才是最安全的!)

~ Shell

Shell是一个特殊的应用程序,本质上是一个命令解释器,下通系统调用,上通各种应用,连接系统和应用之间的交互;

在没有图形界面之前,Shell充当用户界面,用户需要运行某些应用的时候,要通过Shell输入命令,建立运行程序;

同时Shell是可编程的,可以执行符合Shell语法的文本,这个文本称为Shell脚本;

Shell是Linux默认主流的bash;

echo $SHELL:查看当前shell版本;
cat /etc/shells:查看本机器支持的shell的版本;
chsh -s /bin/sh:切换到指定的shell上;


>> Linux 目录结构

bin:存放二进制可执行文件;(绿色显示)(.exe)(ls、cat、mkdir等)
boot:存放用于系统引导时使用的各种文件;就是启动文件,系统启动时运行的文件;
dev:用于存放设备文件;
etc:存放系统配置文件;
home:存放所有用户文件的根目录;
lib:存放跟文件系统中的程序运行所需要的共享库及内核模块;Linux运行需要的依赖,类似Java程序运行时需要的第三方依赖;
mnt:系统管理员安装临时文件系统的安装点;
opt:额外安装的可选应用程序包所放置的位置;
proc:虚拟文件系统,存放当前内存的映射;
root:超级用户目录;
sbin:存放二进制可执行文件,只有root才能访问;
tmp:用于存放各种临时文件;
usr:(存放手动安装的程序) 用于存放系统应用程序,比较重要的目录/usr/local本地管理员软件安装目录:自己安装的程序必须放置在该目录;
var:用于存放运行时需要改变数据的文件;Eg:MySQL的dtd文件;

Linux安装软件,软件中的文件是分开存放的,例如:配置文件放在/etc目录下,可执行文件放在/bin目录下;而Windows安装的软件的文件存放在一起;


>> Linux 常用命令

coreutils 联机帮助

  • 命令区分大小写;
  • 命令太长一行放不下时,可在第一行尾输入“\”字符,按回车键,这时shell会返回大于号“>”作为提示符,表示该命令尚未结束,允许继续输入命令;
  • XX --help:打印XX命令用法;
  • man find/其他指令:查看指令用法;
~ 重启/关机
  • sudo reboot:重启
  • sudo shutdown -r now:重启
  • sudo shutdown -h now:关机
~ 操作文件目录命令
  • ls:显示文件和目录列表;

    • ls [-l -a] [name]
    • -l:列出文件的详细信息;
    • -a:列出当前目录所有文件,包含隐藏文件;
    • -d:只显示当前目录下的各个子目录名;
  • mkdir:创建目录;

    • mkdir [-p] dirName
    • -p:父目录不存在的情况下先生成父目录;
  • cd:切换目录;

    • cd [dirName]
  • touch:创建文件 - 生成一个空文件;(文本文件)
    修改指定文件的时间标签,把已存在的文件的时间标签更新为系统当前时间(默认方式),它们的数据原封不动的保存下来;若该文件尚未存在,则创建一个空新文件;

    • touch fileName.txt
  • echo:写文件 - 生成一个带有内容的文件;

    • echo message > 1.txt
    • message后面不加 > 表示直接将message在控制台显示;message用单引号括起来表示原样输出,否则多个空格合并为一个输出;
    • 一个 > 表示message替换文件中原有内容;
    • 两个 >> 表示追加内容,不删除文件中原有内容;
  • cat:读文件 - 显示文本文件内容;

    • cat fileName:控制台显示
    • cat f1 f2 > f3:合并文件;
  • cp:复制文件或目录;(目的目录要存在)

    • cp source dest
    • -r:同时复制目录下所有文件及子目录内容;
    • 所有目标文件指定的目录必须已经存在,cp命令不能创建目录!
    • cp file /home/mengqc/f:将file复制到/home/mengqc目录下,并改名为f;
  • rm:删除文件;

    • rm fileName
    • -f:强制删除文件或目录;
    • -r:递归删除,同时删除该目录下的所有文件;
    • -i:使用文件扩展名删除多个文件时,逐一询问是否要删除文件;
  • mv:剪切文件或目录,或者重命名;

    • mv source dest
    • 若将一个文件移到另一个已经存在的目标文件中,则目标文件的内容会被覆盖;
    • mv 命令可将源文件移至一个目标文件中,或将一组文件移至一个目标目录中;
    • 源文件被移至目标文件有两种结果:
        若目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变;
        若目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖已经存在的同名文件;若源文件与目标文件在同一个目录下,mv的作用就是改文件名;
    • 当目标文件是目录时,源文件或目录参数可以有多个,则所有源文件都会被移至目标文件中,所有移到该目录下的文件都将保留以前的文件名;
  • find:在文件系统中查找指定的文件(搜索文件);

    • find -name fileName:从当前目录 递归查找指定文件;精确查找
    • find -iname fileName:-iname表示文件名忽略大小写;不区分大小写
    • find / -name fileName:从linux的根目录/下开始, 递归查找指定文件;模糊查找
    • find ~ -name "*.txt":从当前用户的home目录下查找指定文件;
  • grep:在指定的文本文件中查找指定字符串(检索文件内容);

    • grep "要搜索的字符串" "指定查找的文件范围"
    • grep "要搜索的字符串":不指定文件范围,会从标准输入设备(控制台)读取数据;
    • -o:只输出符合正则表达式的字符串;
    • -v:过滤掉包含相关字符串的内容;
    • grep:一次只能搜索一个指定的模式;
    • egrep:等同于grep -E,可以使用扩展的字符串模式进行搜索;
    • fgrep:等同于grep -F,是快速搜索命令,它检索固定字符串,但是不识别正则表达式;
  • **管道操作符 |:将指令连接起来,前一个指令的输出作为后一个指令的输入;

    • 管道操作符只能处理前一个命令的正确输出,不处理错误输出;
    • 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃;
    • 常用来作为接收管道数据的命令有:sed、awk、grep、cut、head、top、less、more、wc、join、sort、split等;
  • awk:对文件内容做统计;grep过滤数据,awk进行统计;

    • 一次读取一行文本,按输入分割符进行切片,切成多个组成部分;将每个分片直接保存在内建的变量中,$1,$2,…($0表示行的全部内容),引用指定的变量可以显示指定的切片的内容;支持对单个切片的判断,支持对所有切片进行循环判断,默认分隔符为空格;

    • awk '{print $1,$4}' fileName1 fileName2:获取指定文件的第一列和第四列的内容;逐行遍历文本内容,将每行的各个部分按照空格切片出来,进行保存;

    • awk '$1=="aa" && $2==12{print $0} fileName’:获取指定文件第一列值为"aa",第二列值为12的行的所有内容;

    • awk '($1=="aa" && $2==12) || NR==1 {print $0} fileName':显示表头内容;NR表示从awk开始执行后,按照记录分隔符,读取的数据的次数,默认的记录分隔符为换行符,因此NR默认读取的就是数据的行数;

    • awk -F "," '{print $2}' fileName:指定切片分隔符;

    • grep 'str' fileName | awk '{arrStr[$1]++}END{for(i in arrStr) print i "\t" arrStr[i]}':定义一个数组,用它的下标来保存行切片的内容,数组的值就对应行切片的值,进行累加,END表示扫描结束需要做什么操作,就是执行花括号里面的内容:遍历数组里面的内容;

  • sed:批量替换/删除文件内容;

    • stream editor,流编辑器,适用于对文本的行内容进行处理、编辑;
    • sed -i 's/^zhang/Zhang/g' fileName:将以zhang开头的的字符串,改成Zhang;
      -i:直接在目标文本中做修改;默认是将修改后的内容输出到终端;
      s:表示要进行字符串的操作;
      第一个反斜杠后面:要被替换的内容,^表示筛选出以xx开头行;'s/. / s t r / ′ : /str/': /str/表示以xx结尾;斜杠表示转义特殊字符;
      第二个反斜杠后面:要替换成的目标内容;
      第三个反斜杠后面:不写g,默认替换每一行第一次匹配的内容;g表示替换所有;
    • set -i 's/\.$/\;/g':将以.结尾的行的.替换成;
    • set -i '/^ *$/d':删除空行;
    • set -i '/str/d':删除包含str的行;
  • tree:以树状图列出目录的内容;

  • ln:建立软连接;

    • ln 需要创建软连接的文件的位置 目标 - ln a/1.txt 2.txt
    • 软连接相当于是快捷方式;在2.txt文件中修改文件内容,1.txt文件中同步修改;
  • more:分页显示文本文件内容;

    • Space键,显示文本的下一屏内容;
    • Enter键,只显示文本下一行内容;
    • 按斜线**“/”**,接着输入一个模式,可以在文本中寻找下一个相匹配的模式;
    • H键,显示帮助屏,该屏上有相关的帮助信息;
    • B键,显示上一屏内容;
    • Q键,退出more命令;
  • less:分屏显示文件内容;

    • more区别:more只能向前浏览,less能向前、向后浏览文件;
    • PageUp键,向上翻页;
    • PageDown键,向下翻页;
    • Q键,退出 less 程序;
  • head:显示文件开头内容;

  • tail:显示文件结尾内容;

    • -f:跟踪输出;
    • tail -100f XXX.log:查看最近100行;
~ 系统管理命令
  • lsb_release -a:查看Ubuntu系统版本;

  • stat:显示指定文件的相关信息,比ls命令显示的内容更多;

  • who:显示所有正在使用系统的用户、所有终端名和注册到系统的时间;

    • who am i:列出使用该命令的当前用户的相关信息;
  • hostname:显示主机名称;

  • uname:显示系统信息;

  • top:显示当前系统中耗费资源最多的进程;相当于任务管理器;

  • ps:显示瞬间的进程状态;

  • du:显示指定的文件/目录已使用的磁盘空间的总量;-h:换算为M;

  • df:显示文件系统磁盘空间的使用情况;

  • free:显示当前内存和交换空间的使用情况;

  • ifconfig:显示网络接口信息;

  • ping:测试网络的联通性;

  • netstat:显示网络状态信息;

  • clear:清屏

  • kill:杀死一个进程;

    • -9:彻底杀除;
~ 压缩命令

tar

  • tar [] 打包之后压缩包的名称 欲打包目录
  • 压缩文件:tar -czvf aa.tar.gz .,将当前目录使用gzip算法打包压缩;
  • 压缩文件:tar -cjvf bb.tar.bz2 .,使用bzip2压缩;
  • 解压缩:tar -xzvf aa.tar.gz,将压缩文件解压到当前目录;
  • -c:创建压缩包;
  • -x:解压缩包;
  • -z:是否需要使用gzip压缩;
  • -j:是否需要使用bzip2压缩;
  • -v:压缩过程中显示文件;
  • -f:使用档名,在f之后要立即接档名;
  • -tf:查看归档文件里面的文件;

zip
apt-get install unzip
unzip ***.zip


>> Linux 软件的安装与卸载

  • 更新数据源https://blog.csdn.net/qq_37546891/article/details/80482031#t5

  • apt:(Advanced Packaging Tools 高级安装包工具)
    是Ubuntu下的软件包管理程序,使用它可以找到想要的软件包,并进行安装、更新、卸载;

  • apt-get 是一个下载安装软件包的简单命令行接口,一般需要root权限执行;

    • apt-get update:更新软件包列表;
    • apt-get [选项] install pkg1 [pkg2 ...]:安装软件包;
    • apt-get [选项] remove pkg1 [pkg2 ...]:删除软件包;
  • 常用命令:
    update - 更新软件包列表
    upgrade - 更新操作系统版本(慎用!!)
    install - 安装软件包
    remove - 移除软件包
    autoremove - 自动移除全部不使用的软件包;删除软件包及其依赖;
    purge - 移除软件包和配置文件
    source - 下载源码档案
    build-dep - 为源码包配置编译依赖
    dist-upgrade - 发行版升级
    dselect-upgrade - 依照 dselect 的选择更新
    clean - 清除下载的归档文件
    autoclean - 清除旧的的已下载的归档文件
    check - 检验是否有损坏的依赖

  • 选项
    -h 本帮助文件;
    -q 输出到日志 - 无进展指示;
    -qq 不输出信息,错误除外;
    -d 仅下载 - 不安装或解压归档文件;
    -s 不实际安装。模拟执行命令;
    -y 安装包的时候会询问y/n,这个参数是所有询问默认y;
    -f 尝试修正系统依赖损坏处;
    -m 如果归档无法定位,尝试继续;
    -u 同时显示更新软件包的列表;
    -b 获取源码包后编译 -V 显示详细的版本号;


>> 用户和组管理

~ 用户

Linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源,系统会根据账户来区分每个用户的文件、进程、任务、环境,使得每个用户工作互不干扰;

安装操作系统时创建了一个账户,该用户为root的代理用户,使用sudo可以提升用户权限成root的权限,不使用sudo时就是普通用户;在实际生产操作中,我们基本都是使用超级管理员账户操作Linux系统的,Linux系统默认是关闭root账户的,所以需要为root用户设置一个初始密码以方便使用;

  • sudo passwd root:设置root账户密码;
  • su:切换到root;
  • 设置允许远程登录root:
    在这里插入图片描述
~ 组
  • 私有组:当创建一个用户时没有指定属于哪个组,Linux就会建立一个与用户同名的私有组,此私有组只含有该用户;
  • 标准组:创建一个用户时可以选定一个标准组,若一个用户同时属于多个组时,登录后所属的组为主组,其他为附加组;
~ 账户系统文件说说明

https://www.funtl.com/zh/linux/Linux-用户和组管理.html#账户系统文件说明

/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow

~ 用户管理常用命令

https://www.funtl.com/zh/linux/Linux-用户和组管理.html#账户管理常用命令

增加用户
修改用户
删除用户
组账户维护
口令维护
用户和组状态


>> 文件权限管理

~ ll / ls -al 查看文件/目录的权限信息

-rw-r--r-- 1 zxj root 148 Aug 17 2015 .profile

  • - rw- r-- r--: 文件类型 / 文件所有者的权限 / 文件所属用户组的权限 / 其他用户的权限;
    • 文件类型:
      • d:表示目录;
      • -:表示普通文件;
      • l:表示链接文件(软连接);
      • c:表示串行端口字符设备文件;
      • b:表示可供存储的块设备文件;
    • 文件权限:3个一组
      • -:0,无权限;
      • r:4,读权限;
      • w:2,写权限;
      • x:1,可执行权限;
  • 1:文件连接数,指有多少文件指向同一个索引节点;
  • zxj:文件/目录所属的用户;
  • root:文件/目录所属的组;
  • 148:文件的大小,默认bytes;
  • Aug 17 2015:文件的创建时间;(最后被修改时间)
  • .profile:文件的名称;
~ 更改操作权限

(1)chown:change owner,更改文件/目录的所有者,所有者包含用户和用户组;

  • chown [-R] 用户名称:用户组名称 文件/目录
    -R:进行递归式的权限更改,将目录下的所有文件、子目录更新为指定用户组权限;

(2)chmod:change modify,改变访问权限;

chmod [who] [操作符号] [mode] 文件名

  • who:表示操作对象可以是以下字母的一个或组合;
    • a:表示所有用户;(系统默认的,不指定表示a)
    • u:表示用户user;
    • g:表示用户组group;
    • o:表示其他用户;
  • 操作符号:
    • +:表示添加某个权限;
    • -:表示取消某个权限;
    • =:表示赋予给定的权限,取消文档以前的所有权限;
  • mode:表示可执行的权限,可以是r、w、x;
  • 文件名:可以是使用空格分开的文件列表;

chmod +x a.txt:表示给所有用户添加对文件a的可执行权限;
chmod u=rwx,g+r,o+r test.txt-rwxrw-r--

~ 数字设定法

r=4,w=2,x=1,无=0

  • rwx:4+2+1=7
  • r-x:4+0+1=5
  • rw-:4+2+0=6

chmod 756 fileName:表示给文件加权限rwxr-xrw-


>> 软连接和硬链接

软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建


>> Linux 安装Java/Tomcat/Mysql

Ubuntu系统安装完了,数据源也配置好了,root用户的远程访问也打开了,这时候通过SSH远程连接的这个系统可以关机了:shutdowm -h now

现在打开VMware,克隆一个Ubuntu Server;

一个虚拟机也是一个对象,现在已经封装好了一个Ubuntu Server,现在创建一个它的子类(克隆),因为在操作系统中安装软件的时候,可能因为一个软件装坏而导致整个操作系统全坏,系统坏了就得重装系统,再重新配置:更新数据源、打开root远程访问等,麻烦!所以现在基于已经配置好的Ubuntu系统,创建一个克隆版本,克隆版本坏了就删除再重新克隆一个,这样就不用重装操作系统了;

克隆完之后,开启克隆版本的操作系统,使用SSH远程访问;

~ 安装Java

1、下载Linux x64的Java的JRE:jre-8u152-linux-x64.tar.gz;(JDK也可以)
https://www.oracle.com/technetwork/java/javase/downloads/index.html

2、使用ftp将jre从本地上传到服务器:
安装操作系统的时候,只安装了Open SSH这一个服务,不用直接使用ftp服务,因为ssh服务默认也支持文件传输(SFTP),这样就不用额外安装ftp服务器了;

Mac版SecureCRT需要使用rz和sz命令才能完成文件的上传或者下载,若Linux中没有这两个命令工具,则需要先安装:apt-get install lrzsz

  • rz:上传本地文件到Linux服务器;
    运行该命令会弹出选择文件的对话框,选择需要上传的文件之后,点击OK,就能完成上传操作;
  • sz 文件完整路径:从服务器下载文件到本地;
  • 上传/下载文件目录设置:Options --> session options --> terminal --> X/Y/Zmodem

3、文件上传到执行rz命令的当前目录下(root的~),上传完成后,在服务器创建文件夹soft,将文件剪切到soft目录,然后解压缩:root@Ubuntu:~/soft# tar -xzvf jdk-8u152-linux-x64.tar.gz

4、手动安装的软件只能放在/usr/local目录下,所以在该目录下创建目录java,然后将解压缩的jdk文件拷贝过去:
root@Ubuntu:~/soft# mkdir /usr/local/java
root@Ubuntu:~/soft# mv jdk1.8.0_152/ /usr/local/java
root@Ubuntu:~/soft# cd /usr/local/java

5、配置系统环境变量:
vi /etc/environment

export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

6、配置用户变量:
vi /etc/profile(在2个if中间添加)

export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

7、使用户环境变量生效:source /etc/profile

8、验证:cdjava -version

在这里插入图片描述

~ 安装Tomcat

1、下载压缩文件并上传到服务器:
root@Ubuntu:~# cd soft/
root@Ubuntu:~/soft# rz

2、解压缩,并将文件移动到/usr/local目录下:
root@Ubuntu:~/soft# tar -xzvf apache-tomcat-8.5.23.tar.gz
root@Ubuntu:~/soft# mv apache-tomcat-8.5.23 /usr/local

3、修改端口号:8080 --> 80
root@Ubuntu:/usr/local# cd /usr/local/apache-tomcat-8.5.23/conf
root@Ubuntu:/usr/local/apache-tomcat-8.5.23/conf# vi server.xml

4、启动Tomcat:
root@Ubuntu:/usr/local# cd /usr/local/apache-tomcat-8.5.23/bin
root@Ubuntu:/usr/local/apache-tomcat-8.5.23/bin# ./startup.sh

5、浏览器访问:
192.168.141.176:80

6、关闭Tomcat服务:
root@Ubuntu:/usr/local/apache-tomcat-8.5.23/bin# ./shutdown.sh

~ 安装MySQL

1、安装mysql-serverapt-get install mysql-server

2、查看MySQL安装在哪:whereis mysql

3、通过查看配置文件,来查看MySQL数据存放路径:
root@Ubuntu:/etc/mysql# cat my.cnf:查看配置文件,配置是分开的,该文件引入了下面两个文件的内容;
在这里插入图片描述

4、配置MySQL数据存放路径的配置在/etc/mysql/mysql.conf.d路径下:
root@Ubuntu:/etc/mysql/mysql.conf.d# vi mysqld.cnf
datadir = /var/lib/mysql
cd /var/lib/mysql
默认有3个数据库:
在这里插入图片描述

5、配置远程访问:
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
bind-address 0.0.0.0

6、重启MySQL服务:
service mysql restart

7、服务器上登录mysql,授权:
mysql -u root -p
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';

8、MySQLWorkbench测试连接服务器:


>> 部署应用到生产环境

1、使用远程登录 导入数据库到Linux服务器:
$ mysql -h 192.168.141.177 -u root -p:使用本地终端登录到数据库;
mysql> create database myforum;:创建数据库;
mysql> use myforum;:使用刚才创建的数据库;
mysql> source /Users/zxj/文档/Workspace/myforum/001_creat_myforumdb.sql;:使用脚本导入数据库;

2、将项目打包:
cd /Users/zxj/文档/Workspace/myforum进入到项目目录;
mvn clean package -Dmaven.test.skip=true:打war包;
Building war: /Users/zxj/文档/Workspace/myforum/target/myforum-0.0.1-SNAPSHOT.war:打好的war包在该目录下;

3、部署的时候不直接部署war包,因为war包更新的时候重新部署,会把原来的war包删掉,为了安全起见只直接部署文件夹;
所以将文件打包压缩成zip文件,并上传到Linux服务器;

apt-get install unzip:安装解压缩.zip文件的程序;
root@Ubuntu:~/soft# cd /usr/local/apache-tomcat-9.0.21/webapps/ROOT
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/webapps/ROOT# rm -fr *:删除root下所有内容;
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/webapps/ROOT# mv /root/soft/myforum-0.0.1-SNAPSHOT.zip .将zip文件复制到Tomcat的webapp的Root目录:
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/webapps/ROOT# unzip myforum-0.0.1-SNAPSHOT.zip:解压缩;将解压缩后的文件直接放在root目录下;
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/bin# ./shutdown.sh
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/bin# ./startup.sh

4、浏览器访问失败:没有修改数据库地址;
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/logs# tail -f catalina.out:查看日志;
root@Ubuntu:/usr/local/apache-tomcat-9.0.21/webapps/ROOT/myforum-0.0.1-SNAPSHOT/WEB-INF/classes# vi db.properties:修改数据库地址为服务器的地址;

5、浏览器访问:http://192.168.141.177;将项目部署到Tomcat的webapps的ROOT目录下,直接在地址栏输入Linux服务器地址即可;将Tomcat端口由8080改为80,访问的时候也可以不输入端口号;

文章参考博客视频教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值