Linux的基本使用及项目部署

Linux的基本使用

下载虚拟机VMware Workstation或者[Windows Terminal]

官方下载:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

安装CentOS

  1. 在windows解压

    Linux的基本使用及项目部署

  2. 在VMware 中打开解压后的.vmx文件

  3. 虚拟网络设置(将默认的桥接模式改为NAT模式)

    • 默认的网络配置是桥接模式,直接接入当前的网络环境,如果网络不稳定IP会变

    • NAT,相当于在windowns系统中独立开辟一块新的网络空间,IP地址固定不变,无论是否接入外网,都可以访问CentOS

    • 更爱虚拟机设置

      Linux的基本使用及项目部署

      Linux的基本使用及项目部署

      Linux的基本使用及项目部署

      Linux的基本使用及项目部署

    • 在centos终端输入:ifconfig查看虚拟机IP地址

      Linux的基本使用及项目部署

      在CentOS中ping 百度(如果能ping通说明配置成功)

      Linux的基本使用及项目部署

Linux中的目录结构

在Linux中一切皆文件所有的命令都是对文件的读、写、修改、权限修改

在Linux中根代表:/

Linux的基本使用及项目部署

/bin 二进制可执行命令

/dev 设备特殊文件

/etc 系统管理和配置文件

/etc/rc.d 启动的配置文件和

/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示

/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件

/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序

/tmp 公用的临时文件存储点

/root 系统管理员的主目录(呵呵,特权阶级)

/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。

/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里

/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。

/var 某些大文件的溢出区,比方说各种服务的日志文件

/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:

/usr/X11R6 存放X window的目录

/usr/bin 众多的应用程序

/usr/sbin 超级用户的一些管理程序

/usr/doc linux文档

/usr/include linux下开发和编译应用程序所需要的头文件

/usr/lib 常用的动态链接库和软件包的配置文件

/usr/man 帮助文档

/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里

/usr/local/bin 本地增加的命令

/usr/local/lib 本地增加的库

Linux的基本命令

红帽命令大全:https://www.linuxcool.com/

  1. 查看当前目录下的所有文件

    ls -la # -a参数查看所有文件,包括隐藏文件;-l参数包括文件的属性和权限,没隐藏文件
    
  2. 操作文件及目录

    Linux的基本使用及项目部署

    Linux的基本使用及项目部署

    Linux的基本使用及项目部署

  3. 系统常用命令

Linux的基本使用及项目部署

Linux的基本使用及项目部署

  1. 压缩解压缩

    Linux的基本使用及项目部署

  2. 文件权限操作

    linux文件权限的描述格式

    Linux的基本使用及项目部署

    r 可读权限,w可写权限,x可执行权限(也可以用二进制表示 111 110 100 --> 764)

    第1位:文件类型(d 目录,- 普通文件,l 链接文件)

    第2-4位:所属用户权限,用u(user)表示

    第5-7位:所属组权限,用g(group)表示

    第8-10位:其他用户权限,用o(other)表示

    第2-10位:表示所有的权限,用a(all)表示

    Linux的基本使用及项目部署

  3. 常用快捷键及符号命令

    Linux的基本使用及项目部署

    https://mp.weixin.qq.com/mp/homepage?__biz=Mzg2NTAzMTExNg==&hid=2&sn=1650b6338f6469ca519b080fdbbbd333

Vim编辑器

vim是Linux系统上内置的一个常用文本编辑器,vim是vi的升级版,比vi跟家强大

Linux的基本使用及项目部署

基本的vi/vim有三种模式

  • 命令模式(Command mode):当启动vim时,便会自动进入命令模式,当在键盘上敲击 iao 时会进入输入模式

    在命令模式中查找

    /tiger    # 在整篇文档中搜索tiger字符串,向下查找
    ?tiger    # 在整篇文档中搜索tiger字符串,向上查找
    
    *         # 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
    #         # 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
    
    gd        # 找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上
    
    %      # 找到括号的另一半!!
    

    拷贝删除

    3yy    # 拷贝光标所在的3行
    5dd    # 删除光标所在5行
    
  • 输入模式(Insert mode):当输入iao后便进入输入模式,在输入模式中可以对文件进行添加修改等操作

  • 底线模式(Last line mode):按下键盘ESC后在命令行输入(英文的:),进入底线模式在底线模式可以输入命令

    :q		# 退出
    :wq		# 保存退出
    :set un	# 显示该文本行号
    :6		# 跳到数字行
    

vim按键

  • 移动光标

    # 移动光标的方法
    h 或 向左箭头键(←)    # 光标向左移动一个字符
    j 或 向下箭头键(↓)    # 光标向下移动一个字符
    k 或 向上箭头键(↑)    # 光标向上移动一个字符
    l 或 向右箭头键(→)    # 光标向右移动一个字符
    
    5j		          # 向下移动5行      
    10l			  # 向右移动10字符      
    
    n(space)    	  # 按下数字n,例如10,然后按下空格,光标会向右移动10个字符
    
  • 底线命令

    :! command   # 暂时离开vim指令模式,执行command的结果
    例如 :!ip a   # 临时看一下ip信息,然后可以回到vim
    
    :set nu    # 显示vim行号
    :set nonu   # 取消行号
    

用户管理

? 用户分为超级用户和普通用户(root);Linux系统是多用户、多任务的分时操作系统,系统上的每一个进程都有一个特定的文件,每一个文件都被一个特定的用户所拥有。如果需要使用系统资源,首先必须向系统超级用户申请成为普通用户,然后以普通用户的身份进入系统。超级用户可以对普通用户进行跟踪,并设置他们的访问权限,这样可以保证系统安全

  • 查看id

    id		# 每一个用户都有唯一的id
    
  • 查看用户所有

    cat /etc/passwd
    
  • 添加用户

    useradd -m username	  # 创建一个username用户
    
  • 删除用户

    userdel -r username	  # 删除用户名的时候将他的目录页一并删除掉
    
  • 修改用户

    usermod
    
  • 切换用户

    us			# 切换用户
    
    us username		# 切换用户
    
    sudo su		# 从普通用户切换到root命令
    
  • 设置用户密码

    password username	# 设置用户密码
    --> new password:123456
    --> re password:123456
    
  • 锁定账户!

    passwd -l [username]
    
  • 查看主机名

    hostname		   # 查看主机名:
    hostname [name] 	   # 修改主机名(修改后重启生效)
    

管理用户组

? 每一个用户都属于一个用户组或者多个组每个组的权限都不一样,系统可以对一个用户组中的所有用户进行集中管理;

  • 增加一个新的

    groupadd 选项 用户组
    可以使用的选项有
    	-g GID 指定新用户组的组标识号(GID)。
    	-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
    # 例如
    groupadd sheep 
    	# 此命令向系统中增加了一个新组sheep,新组的组标识号是在当前已有的最大组标识号的基础上加1。
    groupadd -g 1010 sheep2
    	# 此命令向系统中增加了一个新组sheep2,同时指定新组的组标识号是1010
    
  • 删除一个已有用户组

    groupdel 用户组
    # 例如
    groupdel sheep2
    
  • 修改用户组属性

    groupmod 选项 用户组
    常用的选项有
    	-g GID 为用户组指定新的组标识号
    	-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
    	-n新用户组 将用户组的名字改为新名字
    
  • 切换组

    newgrp root # 将用户切换为root
    
  • 文件查看

    cat /etc/passwd

    --> cat /etc/passwd
    --> rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    --> rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
    --> chrony:x:991:988::/var/lib/chrony:/sbin/nologin
    --> radvd:x:75:75:radvd user:/:/sbin/nologin
    --> qemu:x:107:107:qemu user:/:/sbin/nologin
    --> ntp:x:38:38::/etc/ntp:/sbin/nologin
    --> rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    --> nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    --> avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    `用户名:口令(登入密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录shell`
    `这个文件的每一行都代表这一个用户,我们可以从这里看出这个用户主目录载哪里,可以看到属于哪一个组`
    `登入口令:把真正的加密后的用户口令存放到/etc/shadow文件中`
    

    cat /etc/shadow

    `这个文件是/etc/shadow文件。有超级用户才拥有该文件读权限,这就保证了用户密码的安全性`
    

    cat /etc/group

    `用户组的所有信息都存放在/etc/group文件中`
    

磁盘管理

  • df :列出文件系统的整体磁盘使用量

    df [-ahikHTm] [目录或文件名]
    选项与参数
    	-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统
    	-k :以 KBytes 的容量显示各文件系统
    	-m :以 MBytes 的容量显示各文件系统
    	-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
    	-H :以 M=1000K 取代 M=1024K 的进位方式
    	-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
    	-i :不用硬盘容量,而以 inode 的数量来显示
    
  • du:检查磁盘空间使用量

    du [-ahskm] 文件或目录名称
    选项与参数
    	-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已
    	-h :以人们较易读的容量格式 (G/M) 显示
    	-s :列出总量而已,而不列出每个各别的目录占用容量
    	-S :不包括子目录下的总计,与 -s 有点差别
    	-k :以 KBytes 列出容量显示
    	-m :以 MBytes 列出容量显示
    

进程管理

在Linux中,每一个程序都有自己的一个进程,每一个进程都有一个id号

每一个进程都会有一个父进程

进程可以有两种存在方式:前台!后台运行!

一般的话服务都是后台运行的,基本的程序都是前台运行的

命令

  • ps查看当前系统中正在执行的各种进程的信息

    • -a 显示当前终端运行的所有进程信息

    • -u 以用户的信息显示进程

    • -x 显示后台运行进程的参数

      #  | 在Linux这个叫做管道符  A|B
      # grep 查找文件中符号条件的字符串
      ps -aux|grep
      
  • ps -ef(查看父进程的信息)

    # 进程树
    pstree -pu
    	-p 显示父id
    	-u 显示用户组
    
  • 结束进程

    # 强制结束进程
    kill -9 [进程的id]
    
  • ps -help(查看ps帮助文档)

项目部署

安装Xshell和Xftp

在Windows和Linux中真正控制计算机硬件(CPU、内存、显示器)的只有操作系统内核(Kernel),Windows中图像界面和cmd都是架设在用户和内核之间的桥梁,为了方便用户控制计算机而存在的,为了安全原因,用户不能直接接触内核,因此需要在用户和内核之间增加"命令解释器",这样即简化了用户操作,又能保障内核的安全,在Linux中,这个命令解释器就是"Xshell";

通俗的说Xshell就是能够远程访问并操作Linux系统

而Xftp就是Xshell能联通的基础上将本地文件转递到Linux系统中

Xshell官网:https://xshell.en.softonic.com/

Xftp官网:https://www.netsarang.com/zh/xftp/

安装JDK

下载JDK官网:https://www.oracle.com/cn/java/technologies/javase-downloads.html

软件包一般分为两种:

包类型 是否编译 示例
源码包 需要编译 nginx-1.12.1.tar.gz
二进制包 已编译 mysql-community-common-5.7.12-1.e17.x86_64.rpm

软件安装一般有三种方式:rpm、解压缩、yum在线安装

安装:

  1. Xshell连接CentOS

  2. 在Linux中创建相应的文件夹

  3. 在Xshell中打开Xftp将JDK传入CentOS中

    由于Centos自带了jdk所有要先卸载CentOS中的JDK

    • jvav -version --查看JDK版本
    • rpm -qa | grep jdk --检索该系统中带有所有jdk的文件(查看所有jdk文件)
    • rpm -e --nodeps [要删除的文件] --删除所有JDK
  4. 安装JDK

    rpm -ivh jdk1.8.0_221-amd64.rpm
    
  5. 配置JDK的环境变量

    # 打开CentOS环境变量
    vim /etc/profile
    
    # 打开输入模式
    i
    
    # 环境变量
    JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
    CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
    PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    export PATH CLASSPATH JAVA_HOME
    
    # 退出
    ESC --> :wq
    

安装Tomcat

官网下载:http://tomcat.apache.org/

  • Xftp传输Tomcat

  • 解压缩

    # 解压缩
    tar -xvf apache-tomcat-9.0.34.tar.gz
    
  • 在CentOS中启动Tomcat

    在Tomcat包bin文件夹中有tomcat启动和关闭的文件子要运行该文件即可

    ./startup.sh 	# 运行startup.sh 文件
    

    Linux的基本使用及项目部署

  • CentOS开放8080端口

    # 1、简称防火墙的状态
    	# 如果为running表示开启,not running表示防火墙关闭,需要开启
    firewall-cmd --state
    # 2、开启防火墙
    systemctl start firewalld.service
    # 3、开发8080端口
    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    # 4、重启防火墙
    systemctl restart firewalld.service
    # 5、重新载入配置
    firewall-cmd --reload
    

部署Web应用

使用SSM开发或者是使用原生的Javaweb开需要在Linux中下载安装Tomcat

  • 将在Windows中编写好的应用通过Xftp传输到CentOS(文件放在linux系统tomcat文件夹的webapps中)

    Linux的基本使用及项目部署

    Linux的基本使用及项目部署

    Linux的基本使用及项目部署

    使用Tomcat部署应用是以war包的方式,通过将war包拖到CentOS中的tomcat的webapps文件夹中

安装MySQL

官网下载:https://dev.mysql.com/downloads/mysql/

  • Xftp传输MySQL

  • 解压缩

    # 解压缩
    tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar
    
  • 删除CentOS自带的mariadb数据库

    # 查看是否有mariadb数据库
    rpm -qa | grep mariadb
    # 强制删除该数据库
    rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps
    
  • 解压后只需要安装4个即可(解压后有多个安装包)

    rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm --nodeps --force
    rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm --nodeps --force
    rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm --nodeps --force
    rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm --nodeps --force
    
  • 初始化MySQL

    mysqld --initialize
    
  • 授权防火墙

    # 启动防火墙
    chown mysql:mysql /var/lib/mysql -R;
    # 在防火墙中启动MySQL服务
    systemctl start mysqld.service;
    # 启动后让数据库可用
    systemctl enable mysqld;
    
  • 查看数据库初始化密码(初始化时MySQL会自动随机设置密码)

    # 检索/var/log/mysqld.log问价中的关键字password
    cat /var/log/mysqld.log | grep password
    
  • 登入数据库

    mysql -uroot -p
    password
    
  • 修改密码

    ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH
    mysql_native_password BY ‘password‘;
    
  • 开启远程访问(便于Xshell远程连接)

    create user ‘root‘@‘%‘ identified with mysql_native_password by ‘root‘;
    grant all privileges on *.* to ‘root‘@‘%‘ with grant option;
    flush privileges;
    
  • 开发3306端口(退出MySQL操作)

    # 将3306端口加到防火墙中
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    # 重新启动防火墙
    systemctl restart firewalld.service
    # 重新加载防火墙
    firewall-cmd --reload
    
  • 更改时区(MySQL 安装默认使用美国的时区,北京时间比美国晚 8 小时)

    set global time_zone=‘+8:00‘;
    
  • 在windos中连接CentOS数据库测试

部署SpringBoot应用

  1. Windows本地部署

    • 打包springboot应用

      Linux的基本使用及项目部署

    • 如果打包错误原因

      在springboot应用中,是以jar包的方式部署的,在jar包的内部集成了Tomcat

      在springboot打成jar包时报错可在maven中添加:

      <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
       <resources>
       <resource>
           <directory>src/main/java</directory>
           <includes>
               <include>**/*.xml</include>
               <include>**/*.XML</include>
               <include>**/*.yml</include>
           </includes>
       </resource>
       <resource>
           <directory>src/main/resources</directory>
               <includes>
                   <include>**/*.xml</include>
                   <include>**/*.XML</include>
                   <include>**/*.yml</include>
               </includes>
           </resource>
       </resources>
      </build>
      

      我在使用cmd部署springboot应用是碰到配置jdk一直报错的情况,可在cmd中输入以下命令

      C:\Users\EyE>SET JAVA_HOME=D:\Program Files\jdk-11.0.9.1+1
      
      C:\Users\EyE>SET CLASSPATH=%JAVA_HOME%\lib
      
      C:\Users\EyE>SET Path=%JAVA_HOME%\bin
      
      C:\Users\EyE>javac
      
  2. Linux中部署

    • CentOS系统中安装jdk

    • CentOS系统中安装MySQL

    • 将springboot项目在windos环境下打成jar包

    • 将jar包通过Xftp传到CentOS中,在CentOS中运行

      java -jar xxx.jar
      

Linux的基本使用及项目部署

上一篇:如何在多进程中使用tdqm查看进度


下一篇:VMware Authorization Service 未运行怎么解决?