Linux教程

linux是操作系统。一般来讲,我们的应用程序完成开发之后, 是会把它部署到服务器上的。

windows系统的稳定性不高,linux操作系统的稳定性比windows高。目前来说,国内选择使用linux操作系统来做应用服务器的操作系统。

linux是基于unix的,开放源代码。任何个人或者公司都可以修改linux内核的源代码,实现或者增强自己想要功能。

unix之父:丹尼斯.里奇,肯.汤姆逊

linux之父:林纳斯.托瓦兹

linux是一个性能稳定的多用户网络操作系统。

目前市面上比较知名的发行版:redhat、ubuntu、debian、centos等。

Linux(三阶段) - 图1

比较 windows linux
操作界面 界面形式统一,快捷键几乎相同。 图形界面风格依发布版本不同而不同,可能互不兼容的。
驱动程序 驱动程序丰富,版本更新频繁。 由志愿者开发,由linux核心开发小组发布,由于linux开源,硬件厂商基于版权考虑并未提供驱动程序。
使用 使用比较简单,容易入门。 如果是图形界面,使用简单。但如果是文字界面,需要专门的学习才可以使用。
学习 易学难精。 难入门,入门后想学精,比较容易。
软件 商业软件多,且需要购买相应授权。 大部分软件可以自由获取,同样功能的软件选择范围小。

Linux安装

安装虚拟机和linux。

虚拟机:vmware

linux:centos6.5

系统目录和分区

目录介绍

bin:

binary的缩写,这个目录存放的是经常使用的命令。

boot:

存放的是启动linux时使用的一些核心文件。

dev:

是device(设备)缩写,存放linux外部设备。

etc:

存放所有系统管理的配置文件和子目录。

home:

用户的主目录,在linux中,每个用户都会有一个自己的目录,一般该目录名以用户的账号命名。用户对自己的home目录有完全操作权限。

lib:

存放着系统最基本的动态连接共享库,作用类似于windows中的dll文件。

lost+found:

一般来说,该目录都是空的。当系统非法关机时,这里就存放了一些文件。

media:

存放的是一些外接设备。linux系统会自动识别U盘和光驱等设备,当识别后,会将这些设备存放到media目录中。

mnt:

系统提供该目录用于让用户临时挂载别的文件系统,把光驱挂载在mnt目录,我们可以进该目录查看光驱内容。

opt

给主机额外安装软件所摆放的目录。

proc:

这是一个虚拟的目录,它是系统内存的映射。

  1. 使用以下命令可以屏蔽主机的ping命令,让别人无法ping你的机器
  2. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

root:

系统管理员目录,也称作超级权限者的用户主目录。

sbin:

super user,存放的是系统管理员使用的系统管理程序。

selinux:

redhat/centos所特有的目录,类似于windows的防火墙,是一个安全机制。

srv:

存放着一些服务启动后的需要提取的数据。

sys:

该目录下安装了linux2.6内核中新出现的一个文件系统sysfs。

tmp:

存放临时文件。

usr:

这是一个非常重要的目录,用户的很多应用程序和文件都放在该目录下,类似于windows系统中program files目录。一般会在usr/local下新建一个tmp,再把所有压缩包上传到tmp目录中,当外部资源使用完成后,可以直接删除该目录。

var:

这是一个非常重要的目录,存放着一些不断扩充着的东西。我们习惯于将那些经常被修改的目录放到该目录下,包括各种日志文件。

常用命令

ls

显示当前目录下所有子目录及文件。

常用参数:

-a:显示隐藏文件和隐藏目录。在linux中,目录或文件名以.开头是隐藏文件或隐藏目录。

-l:显示文件或目录的详细信息。ll命令与ls -l等效。

linux的命令中,参数个数可以是0到多个。

cd

进入某个目录。

cd 路径

路径:相对路径和绝对路径。

.    当前目录
..   上一级目录

相对路径不能以/开头,因为以/开头是绝对路径的表示方式。

相对路径从当前目录开始查找,绝对路径从根目录开始查找。

mkdir

创建空目录。

-p:在创建过程中,如果路径中的某一级目录缺失,会自动进行创建。

如果不使用-p参数,创建时如果路径中缺失了某一级目录,创建失败。

touch

创建空文件。

vi

进行文件编辑。

vi:类似于普通文本编辑。

vim:类似于高级文档编辑器,自带颜色。

文件编辑的步骤:

1、进入文件编辑界面时,按insert或i进入可编辑状态;

2、编辑文件内容结束后,按esc退出可编辑状态;

3、退出文件编辑(有3种方式可退出)

没有对文件进行任何修改时,可以使用:q退出

对文件进行了修改,但不想保存该修改时,可使用:q!强制退出

对文件进行了修改,并要保存修改后的状态,可使用:wq保存退出

使用vi/vim进行文件编辑时,如果该文件不存在,会自动创建空文件以供使用。

cat

查看文件内容。

cat 文件1 文件2 >> 文件3:将文件1和文件2的内容联合起来放入到文件3中。

head [-n]

查看文件的前n行内容。如果不加参数n,默认查看前10行内容。

tail [-n]

查看文件的后n行内容。如果不加参数n,默认查看后10行内容。

tailf [-n]

动态查看文件的后n行内容。

less

分页查看文件内容。j ->向上 k->向下

ctrl+c

不是复制的意思,而是中断某个正在进行的操作。

echo

向文件中添加一些内容。

echo '内容' >> 文件名称

cp [-r]

复制文件或目录。

复制文件:

cp 要复制的文件 想要粘贴的路径/粘贴后文件的名称

注意:复制文件完成在粘贴时,可以修改文件名称(这不是对原文件进行重命名操作,是复制文件)

复制目录:

cp -r 要复制的目录 想要粘贴的路径/粘贴后目录的名称

mv

移动文件或目录。mv命令移动目录时,不需要-r参数。

可使用该命令完成目录或文件的重命名。

rm [-rf]

删除文件或目录。

删除文件:

rm 文件名

-f:直接执行删除操作,用户无需再次确认是否删除。

-r:操作的是目录时,需要使用此参数。

注意:删除操作需谨慎,不要直接进行删除操作,如果要删除,应该先备份再删除。

ip addr

查看IP。

clear

清屏。

df

查看磁盘可用空间及空间节点信息。

reboot

重启虚拟机。

shudown/halt

关机。

shutdown -h 时间(分钟)    多久之后关机
halt     直接关机

ln [-s]

创建软链接,类似于windows系统中创建快捷方式。

tar

解压。

tar zxvf 文件名

常用参数:zxvf

z:先解压gzip格式文件

x:解包

v:显示解压详细信息

f:使用文件,紧跟f参数后一定是空格加文件,也就是说,f是tar命令的最后一个参数

find

find 路径 方式 表达式

-name

find 路径 -name “java”

? 一个字符

* 任意多个字符

[] 任何一个 [H|d]* 以 H或者d开头的文件

  • [a-z] 小写字符
  • [A-Z] 大写字母
  • [a-Z] 大小写字母
  • [0-9]数字
find . -name "[a|A].*"
find / -name "boot.*"

-type

find 路径 -type 文件类型符号

  1. f:普通文件,如文本文件,可执行文件
  2. d:目录
  3. l:软链接文件
  4. c:字符设备,如终端,磁带机等
  5. b:块设备,如光盘,硬盘等

ps

查看进程

ps -ef | grep tomcat | grep -v grep    查看tomcat进程号,排除grep自身产生的进程号

kill

杀死进程

kill -9 进程编号

service(systemctl)

系统服务

 service   服务名    start|stop|restart|status

 systemctl  服务名  start | stop | restart |status(查看状态)

top

查看系统状态

 top

跟权限相关的命令

linux中的用户:所有者(u-user),所属组(g-group),其他用户(o-other)

所有者是文件或者目录的创建者。


  • 表示文件的类型,是目录还是文件,还是其他类型的。

第一个—-表示所有者u,第二个—-表示所属组,第三个—-表示其他用户。

‘r’:读权限

‘w’:写权限

‘x’:执行权限

‘-’:没有权限

chmod

授权。

+表示增加权限

-表示减少权限

=表示指定权限

在实际应用中,权限使用数字进行描述。

使用3个数字(0-7)来描述目录或文件的当前权限。 chmod 000 tmp

第一个数字表示所有者的权限;

第二个数字表示所属组的权限;

第三个数据表示其他用户的权限。

‘r’:4

‘w’:2

‘x’:1

‘-‘:0

授权时,目录和文件是有区别的。

对文件而言:

r表示可以对文件进行读取:cat\head\tail\tailf

w表示可以对文件进行修改:vi/vim

x表示当前文件可以被执行,一般来说,只有scripts(脚本)和command(命令)是可以执行的。

对目录而言:

r表示可以访问当前目录:cd

w表示可以对当前目录中的子目录或文件进行创建和删除操作。touch\mkdir\rm

chmod 指定的权限 指定的目录或文件
chmod [[u|g|o][+|-|=][r|w|x|-] | 3个0-7的数字] 指定的目录或文件
含义为将指定的目录或文件的权限修改为指定的权限。注意:只有目录或文件的所有者和root用户可执行此操作。

chown

修改文件或目录的所有者。

chown 指定的用户 指定的目录或文件
含义为将指定的目录或文件的所有者修改为指定的用户。注意:只有root用户可执行此操作。

groupadd

创建一个新的用户组。

chgrp

修改文件或目录所属的用户组。

chgrp 指定的用户组 指定的目录或文件
含义为将指定的目录或文件的所属用户组修改为指定的用户组。注意:只有root用户可执行此操作。

useradd

创建新用户。

useradd 用户名

passwd

修改用户密码。

passwd 用户

id

查看用户信息。

id 用户

whoami

查看当前用户。

su

切换用户。root切换到其他,不需要输入密码。其他切换root,需要输入密码。

su 用户名

常用辅助工具

xshell:建立本地与服务器之间的远程连接,从而可以开发人员在本地对服务器进行操作。

filezilla:文件上传。

安装常用软件源
yum -y install epel-release

yum -y install 软件名
常用的如下:
vim 文档编辑
wget 远程下载
curl 客户端(client)的URL工具,用来请求 Web 服务器
lrzsz 在linux中可以代替ftp的上传和下载 使用rz命令可实现上传,只适合传输小文件,大文件应使用专业工具实现

安装JDK

步骤1:

下载资源:一定保证本地版本和远程服务器版本保持一致。jdk-11.0.6_linux-x64_bin.tar.gz

下载时应注意:下linux版本的,后缀以.tar.gz结束的。

步骤2:

文件上传。/usr/local/tmp

步骤3:

解压。

[root@localhost tmp]# tar zxvf jdk-11.0.6_linux-x64_bin.tar.gz

步骤4:

剪切至/usr/local/jdk。

[root@localhost tmp]# mv jdk-11.0.6 ../jdk

步骤5:

配置环境变量。

[root@localhost local]# vim /etc/profile

增加以下内容:
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
如果javac和java命令不能使用,则需要手动配置CLASSPATH。可用则无需配置。
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

步骤6:

导入环境变量。

[root@localhost local]# source /etc/profile

步骤7:

测试。

创建java源文件
[root@localhost tmp]# vim Test.java
内容:
public class Test{
    public static void main(String[] args){
        System.out.println("hello world!!!");
    }
}

执行javac命令编译源文件,产生可执行的字节码文件。
[root@localhost tmp]# javac Test.java
执行java命令运行字节码文件
[root@localhost tmp]# java Test
如果能正确输出hello world!!!则代表jdk安装成功。

安装Tomcat

步骤1:下载压缩包。apache-tomcat-8.5.46.tar.gz

步骤2:文件上传。/usr/local/tmp

步骤3:

解压。

[root@localhost tmp]# tar zxvf apache-tomcat-8.5.46.tar.gz

步骤4:剪切到/usr/local/tomcat8

[root@localhost tmp]# mv apache-tomcat-8.5.46 ../tomcat8

步骤5:配置环境变量。

[root@localhost local]# vim /etc/profile

添加以下内容:
export TOMCAT_HOME=/usr/local/tomcat8
export CATALINA_HOME=/usr/local/tomcat8

步骤6:导入环境变量。

[root@localhost local]# source /etc/profile

步骤7:

测试。

启动tomcat
进入tomcat8/bin目录,使用startup.sh脚本启动tomcat.
[root@localhost bin]# ./startup.sh

使用主机ip:8080去访问tomcat,如果能正确出现tomcat欢迎页面,代表安装成功,如不能,则需考虑8080是否被放开,去/etc/sysconfig/iptables中放开8080端口。
先关闭tomcat服务。
[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# vim /etc/sysconfig/iptables
复制端口号为22的那一行并粘贴,将22修改为8080即可。
修改后,应重启服务。
[root@localhost bin]# service iptables restart

再次启动tomcat,如果需要查看tomcat启动信息,可以动态查看/usr/local/tomcat8/logs/catalina.out文件
[root@localhost bin]# ./startup.sh & tailf ../logs/catalina.out
再次使用主机ip:8080去访问tomcat,可正常进入tomcat欢迎页,则安装成功。

centos7

centos7放行端口
# 在防火墙上的public区域永久打开8080防火墙
firewall-cmd --add-port=8080/tcp --zone=public --permanent
# 重启防火墙
第一种方式
systemctl restart firewalld
第二种方式
firewall-cmd --reload

安装MySQL centos6.5

步骤1:下载资源。mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

步骤2:文件上传。

步骤3:解压。

[root@localhost tmp]# tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

步骤4:剪切到/usr/local/mysql

[root@localhost tmp]# mv mysql-5.7.17-linux-glibc2.5-x86_64 ../mysql

步骤5:

创建用户和用户组。

[root@localhost local]# groupadd mysql
[root@localhost local]# useradd -r -g mysql mysql

步骤6:检查是否安装libaio组件,如果没有则安装。先检查版本,然后再安装对应版本的libaio。

[root@localhost local]# rpm -qa | grep libaio
出现以下内容代表已安装
libaio-0.3.107-10.el6.x86_64

如果没有出现以上内容, 代表未安装,此时,需要检查版本。
[root@localhost local]# yum search libaio
安装对应版本的libaio:
[root@localhost local]# yum -y install libaio

步骤7:复制配置文件。

[root@localhost mysql]# cp ./support-files/my-default.cnf /etc/my.cnf
如果出现overwrite询问输入y回车即可。

步骤8:修改配置文件。

[root@localhost mysql]# vim /etc/my.cnf

增加以下内容:
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/var/lib/mysql/mysql.sock
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
max_allowed_packet=16M

步骤9:创建/usr/local/mysql/data

[root@localhost mysql]# mkdir data

步骤10:

修改mysql目录的所有者为mysql用户。

[root@localhost mysql]# chown -R mysql:mysql ./

步骤11:初始化mysqld。

[root@localhost mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
执行成功后,请记住mysql提供的随机密码。

步骤12:复制启动脚本到资源目录。

[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

步骤13:查看mysqld服务控制脚本是否有执行权限,如果没有,需要增加执行权限。

[root@localhost mysql]# ll /etc/rc.d/init.d

如果没有,增加执行权限。
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld

步骤14:在系统服务中查看是否有mysqld,如没有,则将mysqld服务加入到系统服务中去。

查看是否有mysqld
[root@localhost mysql]# chkconfig --list mysqld
如果有,会出现以下内容。
mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off
如没有,提示如下
service mysqld supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add mysqld')

没有时,必须手动添加
[root@localhost mysql]# chkconfig --add mysqld

步骤15:添加环境变量并导入。

添加环境变量
[root@localhost mysql]# vim /etc/profile

添加以下内容。
export PATH=$PATH:/usr/local/mysql/bin

导入环境变量
[root@localhost mysql]# source /etc/profile

步骤16:创建/var/lib/mysql目录

[root@localhost mysql]# mkdir /var/lib/mysql

步骤17:给/var/lib/mysql授予最大权限。

[root@localhost mysql]# chmod 777 /var/lib/mysql

步骤18:启动mysqld服务。

[root@localhost mysql]# service mysqld start

步骤19:登录mysql。

第一次登录时,密码为随机密码,如果随机密码中有特殊符号,必须使用\转译,否则登录失败。
[root@localhost mysql]# mysql -uroot -pAjOKdfCB\(2m\_
登录成功后,第一时间修改密码
mysql> set password for 'root'@'localhost' = 'root';

步骤20:

执行到步骤19时,服务器端mysql已经可以正常使用,但服务端的mysql用户无法直接使用,一般用户会在本地远程连接服务的mysql进行操作。

此时,需要做两步操作。

1、放行服务器的3306端口

复制端口号为22的那一行并粘贴,将22改为3306
[root@localhost mysql]# vim /etc/sysconfig/iptables

重启服务
[root@localhost mysql]# service iptables restart

2、将远程服务器的mysql用户修改为可以进行远程连接的用户,即将localhost改为%。

登录mysql后,再修改mysql用户
mysql> rename user 'root'@'localhost' to 'root'@'%';

做完以上两步,可以在本地远程连接服务器端的mysql。

yum安装

    一键安装,会将所有该软件需要的依赖也同步进行安装。强烈推荐!!!
#语法
yum -y install 软件名    安装软件:-y表示安装过程中所有询问都为yes 
yum remove 软件名        删除已安装软件
yum update {软件}        更新当前软件版本,如果有新版本的话
yum info {软件}          查看软件信息
yum list 软件名          查询可供安装的软件
yum search 软件名        查询可供安装的软件

yum安装jdk1.8(openjdk)

# 安装前先检查系统中是否已安装jdk,如有,应先删除
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj
# 如检测到,可使得以下命令删除原有的jdk
rpm -qa | grep java | xargs rpm -e --nodeps
# 查看可供安装的1.8版本
yum list java-1.8*
# 安装jdk
yum -y install java-1.8.0-openjdk*
# 验证
java -version

注意:使用yum安装openjdk,无需配置环境变量。

yum安装mysql5.7

# 1 下载mysql57
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
# 2 安装rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
# 3 安装mysql
yum -y install mysql-community-server
# 4 启动mysql服务
systemctl start  mysqld.service
systemctl status mysqld.service
# 5 获取mysql安装时生成的随机密码
grep "password" /var/log/mysqld.log
# 6 登录mysql,注意:如果密码中有特殊字符,需要在特殊字符前加\进行转译
mysql -uroot -p密码
# 7 在修改密码前,关闭mysql密码验证规范,避免过于简单的密码设置失败
set global validate_password_policy=0;
set global validate_password_length=1;
# 8 设置密码,修改用户以提供远程访问
set password for 'root'@'localhost' = 'root';
rename user 'root'@'localhost' to 'root'@'%';
# 9 放行3306端口
firewall-cmd --add-port=8080/tcp --zone=public --permanent
firewall-cmd --reload
#10 防止自动更新,删除下载的mysql源
#yum -y remove mysql57-community-release-el7-10.noarch

war包项目部署

1、将项目打包生成的war包上传到远程服务器上的tomcat下的webapps,重启tomcat。

2、通过tomcat欢迎页上的manage app进行项目部署和管理。

一般来说,manager app是无法直接访问的,需要设置tomcat用户名和密码,并且指定对应权限才可以进入。

设置用户和密码,并指定权限
编辑tomcat/conf/tomcat-users.xml
[root@localhost conf]# vim tomcat-users.xml

在<tomcat-users>标签中添加以下内容:
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="root" password="root" roles="manager-gui,admin-gui"/>

如果进行以上设置还是不能访问,此时代表当前ip受限,需要放开对应权限才可以。

修改webapps/manager/META-INF/context.xml
[root@localhost webapps]# vim manager/META-INF/context.xml

对<value>标签的allow属性进行修改。
第一种修改方式:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
第二种修改方式:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="^.*$" />

修改webapps/host-manager/META-INF/context.xml
[root@localhost webapps]# vim host-manager/META-INF/context.xml
与webapps/manager/META-INF/context.xml的修改方式一致。

重新启动tomcat,配置才生效。

设置tomcat开机自启动

编辑配置文件/etc/rc.d/rc.local
vim /etc/rc.d/rc.local

在该文件的touch /var/lock/subsys/local下添加以下内容:
export JAVA_HOME=/usr/local/jdk
/usr/local/tomcat8/bin/startup.sh start