linux学习

1 Linux 目录结构


常用目录说明

root管理员所在目录

home普通用户的主目录

bin所有的命令可执行文件所在目录

etc系统配置文件所在的目录

usrUnix Share Resource,资源目录,很多软件就安装在这个目录下

2 Linux命令提示符

3 目录操作命令


cd [OPTION] [DIR]

Change the current directory to dir, 切换当前路径

dir

.  当前目录

.. 上一级目录

~ 用户主目录

- 上一次的目录

举个栗子:

切换到系统根目录    cd /

切换到该目录下usr目录    cd usr

切换到上一层目录    cd ..

切换到用户主目录,如果是root管理员,则是到root目录

cd /root

或:

cd ~

切换到上一个所在的目录

cd -

mkdir [OPTION] DIRECTORY

Make directories, 创建目录

举个栗子:

进入root目录

cd ~

在root目录下创建aaa目录

mkdir aaa

使用.方式的相对路径,在当前目录下创建bbb目录

mkdir ./bbb

在root目录下,在bbb目录下创建ccc目录

mkdir ~/bbb/ccc

使用..在上一级目录下创建eee目录

mkdir ../eee

使用绝对路径在root下创建目录fff目录

mkdir /root/fff

【重点】ls [OPTION] [FILE]

List directory contents, 显示目录内容

参数

-l

以详细的方式显示文件和目录。ls -l可以缩写成ll

-a

显示所有的文件和目录包含隐藏的文件和目录

隐藏的文件和目录以 . 开头

举个栗子:

进入root目录,以精简形式查询当前目录下的内容

cd /root

cd ~

ls

以详细形式查询当前目录下的内容,可以缩写成ll

ls -l

ll

在当前目录下创建一个隐藏的目录.ccc

mkdir .ccc

以精简形式查询当前目录下的所有的内容,包含隐藏文件

ls -a

以详细形式查询当前目录下的隐藏内容,-la和-al都可,也可以使用ll -a

ls -al

ll -a

第一列字母含义

字母含义

ddirectory, 目录

-文件

l 链接,类似快捷方式


find [PATH] [-name pattern]

search for files in a directory hierarchy, 搜索目录树上的所有文件

参数

-name pattern

指定要查询的字符串

* 匹配多个字符

? 匹配1个字符

举个栗子:

在/root目录下,查询当前目录下所有的文件和目录

cd /root

find  -name   *

查询/根目录下(包括子目录),名以abc开头的目录和文件

cd /

find  -name   abc*

查询根目录即其子目录下以cc开头的三个字符的目录或文件

cd /

find  -name   cc?

1.按照文件名查找

    (1)find / -name httpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找

    (2)find /etc -name httpd.conf  #在/etc目录下文件httpd.conf

    (3)find /etc -name '*srm*'  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件

    (4)find . -name 'srm*'   #表示当前目录下查找文件名开头是字符串‘srm’的文件

    2.按照文件特征查找 

    (1)find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)

    (2)find / -atime -2   # 查找在系统中最后48小时访问的文件

    (3)find / -empty   # 查找在系统中为空的文件或者文件夹

    (4)find / -group cat   # 查找在系统中属于 group为cat的文件

    (5)find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)

    (6)find / -mtime -1   #查找在系统中最后24小时里修改过的文件

    (7)find / -user fred   #查找在系统中属于fred这个用户的文件

    (8)find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)

    (9)find / -size -1000k   #查找出小于1000KB的文件

    3.使用混合查找方式查找文件

    参数有: !,-and(-a),-or(-o)。

    (1)find /tmp -size +10000c -and -mtime +2   #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件

         (2)find / -user fred -or -user george   #在/目录下查找用户是fred或者george的文件文件

         (3)find /tmp ! -user panda  #在/tmp目录中查找所有不属于panda用户的文件


mv [OPTION] SOURCE DEST

move (rename) files, 移动、重命名文件或目录

举个栗子:

将root文件夹下的aaa目录改成abc

cd /root

mv aaa abc

使用touch创建一个空文件为aaa,再使用mv将aaa文件改名为xyz

touch aaa

mv aaa xyz

cp [OPTION] SOURCE DEST

copy files and directories, 复制文件或目录

参数

-r  递归复制目录,连同子目录一起复制,recursive

举个栗子

当前是root目录,复制/proc/dma文件到root目录下的bbb目录中

cp /proc/dma ./bbb

将/etc目录下所有c开头的文件复制到root目录下的bbb目录下

cp -r /etc/c* /root/bbb

将/etc目录下所有h开头的文件和目录复制到root目录下的eee目录,连同子目录下的内容一起复制

cp -r /etc/h* /root/eee

rm [OPTION] FILE

remove files or directories, 移除文件或目录

参数

-r, 递归地移除目录中的内容。recursive

-f, 忽略不存在的文件,并且从不向用户提示。force

举个栗子:

同时删除eee目录下的hostname和hosts文件

rm /root/eee/hostname*

rm /root/eee/hosts

进入root下的bbb目录,删除所有文件名csh,任意扩展名的文件

rm csh.*

进入root目录下的eee目录,递归删除httpd目录和所有子目录的文件,不进行确认,强制删除。

rm -rf httpd

【常用】man

an interface to the on-line reference manuals, 在线参考手册

举个栗子:

查看mkdir命令的参考手册

查看ls命令的参考手册


4 文件操作命令

相关命令概要

cat [OPTION] [FILE]

concatenate files and print on the standard output, 显示文件内容

more [OPTION] FILE

file perusal filter for crt viewing, 在显示器上阅读文件的过滤,分页显示文件

[Enter] 逐行显示

[Space] 逐页显示

[Q] 退出

head [OPTION] [FILE]

output the first part of files, 输出文件的开始部分

参数

-n 显示指定的前n行,默认10行

tail [OPTION] [FILE]

output the last part of files, 输出文件的末尾部分

-n 显示指定的后n行,默认10行

less [OPTION] [FILE]

opposite of more, 分页或翻页显示文件内容

参数

-N 显示行号

[Ctrl + U]向上翻一页

[PageUp]向上翻一页

[Ctrl + D]向下翻一页

[PageDn]向下翻一页

[Q] 退出

touch [OPTION] FILE

change file timestamps, 修改文件的时间戳,创建一个文本文件,长度是0个字节

举个栗子:

查看当前目录下Demo.java文件的全部内容

cat Demo.java

分页查看当前目录下Demo.java文件内容,按回车键一行一行的看,按空格健一页一页的看

more Demo.java

查看当前目录下Demo.java文件的前10行内容

head Demo.java

查看当前目录下Demo.java文件的后10行内容

tail Demo.java

查看当前目录下Demo.java文件的前5行内容

head -n 5 Demo.java

查看当前目录下Demo.java文件的后5行内容

tail -n 5 Demo.java

使用less命令显示Demo.java文件,显示行号

less -N Demo.java


5 vim文本编辑器


vim的三种模式

模式说明

命令模式可以移动光标、删除字符等操作,打开文件时即进入这个模式

编辑模式在此模式下可以输入字符,进行编辑等操作

底行模式可以输入命令对编辑的文件进行查找,保存,退出等操作

vim三种模式的切换

vim命令

命令描述

i在光标的前面插入字符

a在光标的后面插入字符

o在光标的下一行插入字符

yy复制当前行

p如果之前已经复制了这个就可以粘贴

dd删除当前行

u撤销前面的操作undo

/字符串在内容中搜索指定的字符串 n:向后继续查找 N:向前继续查找

wq保存并退出

q!强制退出,不保存

wq!强制保存退出,用于只读文件

操作演示

vim Hello.java  用vim编辑器创建/打开Hello.java文件,这时进入命令模式。

按i键,进入编辑模式,输入以下内容:

publicclassHello{

publicstaticvoidmain(String[]args) {

System.out.println("Hello!");

  }

}

按Esc键,进入命令模式,按冒号进入底行模式

输入:wq回车,表示存盘退出

使用cat Hello.java查看文件的内容

使用vim打开Hello.java文件,进入命令模式。

将光标移动到System.out这一行,按yy复制

按3次p,粘贴这一行三次

publicclassHello{

publicstaticvoidmain(String[]args) {

System.out.println("Hello!");

System.out.println("Hello!");

System.out.println("Hello!");

System.out.println("Hello!");

  }

}

按dd删除最后一行

按i进入编辑模式

再任意输入一些内容

在按Esc进入命令,按冒号进入底行模式

输入q!回车,不存盘强行退出。

使用cat Hello.java发现Hello.java没有变化


6 压缩与解压命令


压缩文件扩展名

扩展名分类

.zip或.rar在windows下两种压缩文件格式

.tar在Linux下打包文件,不一定压缩

.gz在Linux下压缩文件

.tar.gz既打包又压缩

tar

manipulate tape archives, 操作压缩文件

参数

-c, --create, 压缩文件

-v, --verbose, 详细显示处理的文件

-z, --gzip, --ungzip, 用 gzip 对存档压缩或解压

-f, --file [HOSTNAME:], 指定存档

-x, --extract, --get, 从存档展开文件

-C, --directory DIR, 转到指定的目录

举个栗子:

定位于root目录,将当前目录下的Hello.java和Hello.txt文件打包成hello.tar文件,并显示详细信息。

tar -cvf hello.tar Hello.java Hello.txt

将当前目录下的Demo.* 打包并压缩成demo.tar.gz文件,显示详细信息。

tar -zcvf demo.tar.gz Demo.*

定位于root目录下,删除所有大写的Hello开头的文件

rm -rf Hello*

解压hello.tar到当前目录

tar -xvf hello.tar

释放demo.tar.gz文件到abc目录下

tar -zxvf demo.tar.gz -C abc


7 其它命令



pwd

print name of current/working directory, 显示当前工作目录

ps

process status, 查看进程状态

Linux进程

操作系统启动的时候自动启动的进程

由用户在终端上(命令行中)输入的进程

Bash进程

每个用户登录以后都会分配一个终端操作的进程

这个进程是所有终端命令的父进程,不要随意终止这个进程

参数

-a, 显示所有用户在终端上启动的进程

-u, 显示所有用户在终端启动的进程的详细信息

-x, 显示所有用户启动的所有进程

举个栗子:

在客户端中显示当前用户通过终端启动的所有进程

ps

在Linux命令行窗口运行vim Hello.txt编辑文件,显示所有用户通过终端启动的所有进程。

ps -a

显示所有用户通过终端启动的所有进程详细信息

ps -au

显示所有用户所有进程详细信息

ps -aux

输出说明

列标题说明

%CPUCPU(处理器)使用百分比

%MEM真实内存使用百分比

CMD正被执行的命令的名称

COMMAND正被执行的命令的完整名称

PID进程ID

PPID父进程的进程ID

RSS内存驻留空间大小(内存管理)

START定时启动的时间

STAT状态代码(O, R, S, T, Z)

TIME积累CPU时间

TTY控制终端的完整名称(?表示没有控制终端,该进程为守护进程)

USER用户名

VSZ虚拟大小(单位为KB)

kill [-9] signal

terminate a process, 终止进程

参数

-9 强行终止

操作演示

在Linux命令行上使用vim 编辑Hello.txt文件

在shell客户端,显示所有用户通过终端启动的所有进程,并杀死vim这个进程。

在Linux命令行可以看到进程被终止

在Linux命令行使用ping www.itcast.cn

在shell客户端,显示所有用户通过终端启动的所有进程,并强行杀死ping这个进程

在Linux命令行可以看到进程被杀掉

grep  [OPTIONS] PATTERN [FILE...]

print lines matching a pattern, 打印匹配给定模式的行

参数

-n, --line-number, 在输出的每行前面加上它所在的文件中它的行号

-v, --invert-match, 选择不匹配的行

-i, --ignore-case, 忽略大小写

举个栗子:

在Demo.java中搜索close字符串

grep close Demo.java

在Demo.java中搜索close字符串,并且显示行号

grep close Demo.java -n

在Demo.java中搜索没有close的行和行号

grep close Demo.java -nv

在Demo.java中忽略大小写搜索insert字符串并且显示行号

grep insert Demo.java -ni

|

管道命令

语法

命令1 | 命令2

解释

将一个命令(命令1)的执行结果做为另一个命令(命令2)的条件输入

操作演示

分屏显示/etc目录所有文件的详细信息,将ll的输出做为more的输入,即分屏显示。

ll /etc | more

在root目录下使用ll显示所有文件的详细信息,再在显示结果中使用grep查询Demo字符串

ll /root | grep Demo

显示Linux中所有进程的详细信息,查询ssh的字符串

ps -ax | grep ssh

shutdown

halt, power-off or reboot the machine, 停止、关闭或重启机器

参数

now, 立即关机

poweroff

同shutdown now

reboot

重启系统


8 权限操作


Linux中对每个目录和文件都做了规定,只能由满足条件的用户才能操作这个目录或文件,这个规定叫权限。

用户和组的概念

概念解释

属主目录或文件的所有者

属组所有者所在的组

其他用户其他用户和组

权限位

权限字母-权限数字对照

权限字母权限数字说明

r4Read 读取

w2Write 写入

x1eXecute 执行

-0没有权限

权限范围

权限范围说明

u    User 属主

g    Group 属组

o    Other 其他用户

a    All 上面所有的用户

权限操作

权限符号说明

+添加权限

=修改权限

-删除权限

chmod MODE FILE

change file mode bits

示例

添加权限

chmod u+x Demo.java

Demo.java,属主,添加可运行权限

chmod g+wx Demo.java

chmod a+rwx Demo.java

chmod u+x, o+w Demo.html

修改权限

chmod u=rwx, g=w, o=x Hello.txt

chmod 666 Hello.txt

删除权限

chmod 000 Demo.java

chmod u-w, g-w, Hello.txt


9 任务调度命令


crontab [OPTION]

maintains crontab files for individual users, 定时执行指定

参数

-l, 显示当有已经设置好的定时执行的任务

-e, 使用vim编辑任务

-r, 删除定时任务

定时任务的配置

一行写一个任务

每个任务有6个列,前面5列是时间,最后1列是要执行的命令

格式说明

分 时 日 月 周 命令

minute表示分钟,可以是从0到59之间的任何整数。

hour表示小时,可以是从0到23之间的任何整数。

day表示日期,可以是从1到31之间的任何整数。

month表示月份,可以是从1到12之间的任何整数。

week表示星期几,可以是从0到7之间的任何整数,0或7代表星期日,1-6表示星期一到六。

command要执行的命令

特殊字符

特殊字符说明

星号(*)代表所有可能的值。如:*,用在月上,表示每月执行;用在分上,表示每分执行

逗号(,)用逗号隔开的值指定某几个时间点。如:1,2,5,用在小时上,表示1点,2点,5点

短横(-)表示一个整数范围。如:2-6,用在日上,表示2号到6号

正斜杠(/)指定时间的间隔频率。如: 0-10/2,用在小时上,表示0点到10点中每两小时执行一次。 与星号一起使用。如: /10,用在分钟字段,表示每10分钟执行一次。

>>指定输出的设备如: * * * * * date >> /root/mydate.log

* * * * * command

每分钟执行一次

30 21 * * * command

每天的晚上9点30分

3,15 * * * * command

每小时的第3分和第15分钟执行

5,10 8-11 * * * command

每天的8点到11点的第5分和第10分钟

*/2 * * * * command

每过2分钟执行1次

date

print or set the system date and time, 打印或设置系统日期和时间

第三部分 Linux 深入

1 主机名配置

hostname

show or set the system's host name, 显示或临时设置系统的主机名

hostname [HOSTNAME]

临时设置主机名为HOSTNAME。如果hostname没有任何参数,显示主机名。

hostnamectl

control the system hostname, 永久设置系统的主机名

hostnamectl set-hostname [HOSTNAME]

永久设置主机名为HOSTNAME

举个栗子:

查看当前的主机名

hostname

设置新的主机名为itheima,再查看当前的主机名

hostname itheima

设置新的主机名为itheima,重启以后仍然有效

hostnamectl set-hostname itheima

2 服务管理

systemctl list-units *.service

显示已经启动的所有服务

systemctl start crond【常用】开启服务

systemctl stop crond【常用】关闭服务

systemctl status crond【常用】显示服务当前状态

systemctl restart crond【常用】重启服务,先关闭服务,再开启服务

systemctl reload crond重新加载服务,相当于读取新的配置

systemctl enable crond

设置服务为开机自启动

systemctl disable crond

取消服务开机启动

Linux常用服务

firewalld

3 网络管理

netstat

Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships.

显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组。

参数

-n --numberic, 显示进程的IP地址和端口号

-t -tcp, 只显示使用TCP协议进程

-l -listening, 只显示正在网络监听的进程(默认选项)

-p -program, 显示程序的名字和进程的ID

-r -route, 显示路由表

举个栗子:

显示TCP协议的网络连接

netstat -t

显示TCP协议和监听中的网络连接

netstat -tl

显示TCP协议和监听中的网络连接,显示IP地址和端口号

netstat -tln

显示TCP协议和监听中的网络连接,显示IP地址和端口号,显示程序的名字

netstat -tlnp

显示路由表

netstat -r

4 网卡配置

设置ip分为2种类型,dchp和static。

dchp是动态获取ip

static是配置静态ip

dhcp动态获取ip,可能ip经常会发生变化,导致客户端无法连接到。静态ip配置后就不会发生改变,这样客户端连接服务器具有更好的安全性。

关闭网卡

修改/etc/sysconfig/network-scripts/ifcfg-enp0s3,ONBOOT参数设置为"no"

运行命令systemctl restart network

运行命令ping www.itcast.cn,查看外网能否连接

按原步骤,激活网卡

配置静态IP地址

运行命令netstat -r,查看网关地址

修改/etc/sysconfig/network-scripts/ifconfig-enp0s8

BOOTPROTO=static

IPADDR=192.168.56.102

GATEWAY=192.168.56.0

NETMASK=255.255.255.0

DNS1=114.114.114.114


5 SSH免密登录

为什么要登录

在企业中,多台Linux机器是可以相互之间进行登录和退出的。用Linux自带的SSH客户端命令,可以通过输入用户名和密码的方式登录到另一台Linux机器中。

非对称加密

非对称加密特点

密钥成对出现(公钥、私钥)

使用公钥加密,就使用私钥解密

使用私钥加密,就使用公钥解密

SSH

Secure Shell 协议,安全壳协议。用于Linux之间加密登录一种协议

SSH两种验证机制

直接输入用户名和密码的方式

ssh username@ip

免密登录,直接登录,不需要输入用户名和密码

如果网络中Linux服务器比较多,需要记住每台服务器的密码也是比较痛苦的事。你无需知道另一台机器上的帐号和口令,也可以登录到远程主机。我们说的SSH免密登录,就说的是这种方式

ssh-keygen

生成公钥和私钥,生成的公钥和私钥在/root/.ssh目录下。id_rsa是私钥,id_rsa.pub是公钥

ssh-copy-id

ssh-copy-id root@192.168.56.102

将新生成的密钥(公钥)发送到指定服务器。在服务器的/root/.ssh/autorized_keys文件中。

ssh root@192.168.56.102

不需要输入密码了

6 用户管理命令

useradd [OPTION] LOGIN

create a new user or update default new user information, 创建一个新用户或更新默认新用户信息,创建好的用户信息在/etc/passwd文件中

参数

LOGIN 指定创建的用户名

-m --create-home 创建用户的同时,在/home下创建用户的主目录[默认参数]

-g --gid <GROUP>

创建用户的同时,指定用户所在的组。

未指定组名:默认就在一个与用户同名的组中。组名与用户名相同。

操作演示

进入/home目录,查看目录的内容

cd /home

ll

创建用户Jack,并且创建用户主目录

useradd Jack

再次ll查看/home目录下存在Jack目录,默认用户Jack在一个叫Jack的组中。

ll

创建用户Tom,把用户放在Jack这个组中,并且创建Tom主目录

useradd Tom -g Jack

通过ll查看/home目录下的信息

ll

查看/etc/passwd文件,可以看到创建的用户信息

more /etc/passwd

passwd [OPTION] [username]

update user's authentication tokens, 更新用户密码。

参数

username 只有管理员才可以给指定的用户设置密码,默认为当前用户。

操作演示

设置Jack的密码为abc123。如果提示无效的密码,忽略即可,再次输入同一个密码,修改成功。

passwd Jack

在Linux控制台先logout登出。以Jack登录,注:用户名和密码大小写是敏感的

whoami

print effective userid, 查看自己的用户名

su [OPTION] [username]

run a command with subtitute user and group ID, 切换用户

参数

username 指定要切换的用户名,默认为root

操作演示

当前用户是root,临时切换成Jack,不用输入密码

cd进入用户主目录,pwd显示当前的目录,观察前面的提示符

从Jack用户切换回root,需要输入密码。

cd进入用户主目录,pwd显示当前的目录

输入2次exit再回到root用户

userdel [OPTION] LOGIN

delete a user account and related files, 删除用户账户和相关文件

参数

LOGIN 指定删除的用户名

-r --remove, 删除用户的同时,也删除它的主目录

操作演示

使用root删除用户Tom,同时删除Tom的主目录。如果Tom已经登录,则删除失败

在/home目录下已经找不到Tom主目录了

usermod [OPTION] LOGIN

modify a user account, 修改用户帐户

参数

LOGIN 指定修改前的原用户名

-l, login NEW_LOGIN 指定修改后的新用户名

操作演示

确认Jack这个用户不在线,如果在线需要将Jack登出

修改Jack的登录名为Rose

usermod -l Rose Jack

修改以后在Linux控制台,使用Rose重新登录

7 用户组管理命令

groupadd [OPTION] GROUP

create a new group, 创建一个新组。在/etc/group文件中,包含了所有创建组的信息

操作演示

添加一个新的组America

查看/etc/group文件,做为主组的用户不会显示出来。

usermod [OPTION] LOGIN

modify a user account, 修改用户帐户。一个用户只能有一个主组,可以有多个从组

参数

-g, --gid GROUP

修改用户的主组

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]

修改用户的从组(附属组),可以有多个从组

操作演示

进入/home目录,ll显示home目录的内容可以看到Rose是属于Jack这个组

将Rose这个用户的主组Jack修改为America组

使用ll显示/home目录,查看Rose用户所属组名变成了America

创建两个组:China和Japan

将Rose添加进China和Japan两个从组中,组名之间使用逗号隔开。

查看/etc/group文件,查看到Rose与组的关系。文件中主组看不到用户的列表。

gpasswd [OPTION] GROUP

将用户从附属组(从组)中删除

参数

GROUP

指定要删除的组名

-d, --delete USER

将用户从附属组(从组)中删除

操作演示

把Rose从America这个组中删除,删除失败。

把Rose从China这个组中删除

查看/etc/group文件,发现Rose已经从China组中删除

groupmod [OPTION] GROUP

modify a group definition on the system, 修改组的名字

参数

-n, --new-name NEW_GROUP

将组名改成新的组名

操作演示

在/home目录下ll查看修改前的信息

将Rose的主组名America改成USA

查看/home目录信息,发现Rose的组名已经改成USA

groupdel [OPTION] GROUP

delete a group, 删除一个组

参数

GROUP

删除指定的组

操作演示

删除USA组,删除失败,因为还有Rose把它做为主组

删除Japan这个组

删除China这个组

查看/etc/group文件,发现没有这两个组的信息了

8 软件安装命令

rpm [OPTION]

Red Hat Package Manager, 对linux中已经安装的软件进行管理

参数

-v--verbose

提供更多的详细信息输出

-q 软件名

查询当前系统是否安装了指定的软件

-a

查询所有已经安装的软件

-h

在安装的过程中显示进度条 # 50%

-i, --install 软件名

安装指定的软件

操作演示

查看所有安装的软件

rpm -qa

查看gcc-c++这个软件包是否安装

rpm -q gcc-c++

安装指定的软件

rpm -ivh 软件名

yum [OPTION] [command] [package ...]

Yellowdog Updater Modified, 从指定的服务器自动下载包并且安装,可以自动处理依赖关系,一次安装所有依赖的软件包。

参数

-y 所有的提问都回答yes

命令

install, 安装软件

remove, 卸载软件

举个栗子:

安装gcc-c++ 这个安装包,安装的提示全部回答yes

yum –y install gcc-c++

第四部分 Linux服务器搭建

1 JDK安装


配置Java环境

进入“/soft”目录,解压jdk到指定目录/usr/local下

  tar -xvf jdk-8u211-linux-x64.tar.gz -C /usr/local/

查看解压后的目录,目录中有jdk1.8.0_211为jdk解压的目录

配置jdk环境变量,打开/etc/profile配置文件,将下面配置拷贝进去。export命令用于将shell变量输出为环境变量。

注:在linux下以冒号分隔不同的路径,而windows下是分号。

注:引用变量在linux下是$变量名, 在windows下是%变量名%

/etc/profile

#set java environment

JAVA_HOME=/usr/local/jdk1.8.0_211

CLASSPATH=.:$JAVA_HOME/lib

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

重新加载/etc/profile配置文件,并测试

source /etc/profile

判断JDK是否安装成功

java -version

javac -version

编写Hello World程序

Hello.java

publicclassHello{

publicstaticvoidmain(String[]args) {

System.out.println("Hello World!!!");

    }

}

编译成字节码文件

javac Hello.java

执行Java程序

java Hello


2 MySQL安装

MySQL在线下载安装

注:需要连接互联网,在线mysql的安装包,5.6的版本大约86M

查看CentOS是否自带的MySQL,如果已经安装需要卸载。如果没有找到,则表示没有安装。

rpm -qa | grep mysql

在线获取CentOS7的mysql的rpm安装文件,直接执行如下命令

wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

这条语句只是下载了一个rpm文件,25K大小

执行安装命令

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

得到两个配置文件,在/etc/yum.repos.d目录下。

mysql-community.repo用于指定下载哪个版本的安装包

mysql-community-source.repo用于指定下载哪个版本的源码

修改MySQL的下载配置文件

vim /etc/yum.repos.d/mysql-community.repo

# Enable to use MySQL 5.6

[mysql56-community]

name=MySQL 5.6 Community Server

baseurl=http://repo.mysq.com/yum/mysql-5.6-community/el/7/$baseurl/

# 设置为1,表示下载

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql80-community]

name=MySQL 8.0 Community Server

baseurl=http://repo.mysq.com/yum/mysql-8.0-community/el/7/$baseurl/

# 设置为0,表示不下载

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

在当前目录/etc/yum.repos.d下执行下面的命令,开始在线下载:客户端,服务器端,开发的工具包。

yum -y install mysql-community-client mysql-community-server mysql-community-devel

这里需要比较长的时间,要从互联网上下载86M左右的内容

使用rpm命令,可以查询到mysql已经安装好的包

rpm -qa | grep mysql

启动MySQL服务并登录

启动mysql的服务

systemctl start mysqld

将mysql加到系统服务中并设置开机启动

systemctl enable mysqld

登录mysql,root用户默认没有密码

mysql -u root -p

在mysql中修改自己的密码

set password = password('root');

设置远程访问权限

开启mysql的远程登录权限,默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启,并且刷新权限缓存。

远程登录mysql的权限登录mysql后输入如下命令

grant all privileges on *.* to 'root'@'%' identified by 'root';

flush privileges;

开放Linux的对外访问的端口3306

#开放3306端口

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

#开放的端口永久保存到防火墙

firewall-cmd --zone=public --add-port=3306/tcp --permanent

#重启防火墙

systemctl restart firewalld

客户端Windows连接MySQL

在本地Windows系统使用Navicat Premium软件连接虚拟机中的Linux系统安装的MySQL


3 Tomcat安装与项目发布

安装步骤

解压Tomcat到/usr/local下

tar -xvf apache-tomcat-8.5.27.tar.gz  -C /usr/local/

开放Linux的对外访问的端口8080

firewall-cmd --zone=public --add-port=8080/tcp --permanent

重启防火墙

systemctl restart firewalld

进入bin目录,启动Tomcat

chmod +x *.sh

./startup.sh

在Windows下打开浏览器访问Linux的8080端口

进入bin目录下,关闭服务器。关闭服务器以后,浏览器不能再访问。

./shutdown.sh


修改mysql底层码表

问题

由于mysql软件底层码表使用的不是utf-8,导致执行sql语句中文乱码。需要设置客户端和服务器端的编码为utf-8

解决方案

修改mysql的配置文件

vim /etc/my.cnf

在mysqld条目下增加以下配置,指定服务器的字符集为utf-8

[mysqld]

​character-set-server=utf8

增加客户端的默认字符集的配置,指定为utf-8,将下面的配置放到文件的结尾处

[client]

​default-character-set=utf8

文件保存退出后,重启mysql服务

systemctl restart mysqld

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容