Linux的基本使用及項目部署


Linux的基本使用

下載虛擬機VMware Workstation或者[Windows Terminal]

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

安裝CentOS

  1. 在windows解壓

  2. 在VMware 中打開解壓后的.vmx文件

  3. 虛擬網絡設置(將默認的橋接模式改為NAT模式)

    • 默認的網絡配置是橋接模式,直接接入當前的網絡環境,如果網絡不穩定IP會變

    • NAT,相當於在windowns系統中獨立開辟一塊新的網絡空間,IP地址固定不變,無論是否接入外網,都可以訪問CentOS

    • 更愛虛擬機設置

    • 在centos終端輸入:ifconfig查看虛擬機IP地址

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

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. 操作文件及目錄

  3. 系統常用命令

  1. 壓縮解壓縮

  2. 文件權限操作

    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)表示

  3. 常用快捷鍵及符號命令

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

Vim編輯器

vim是Linux系統上內置的一個常用文本編輯器,vim是vi的升級版,比vi跟家強大

基本的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 文件
    

  • 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中)

    使用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應用

    • 如果打包錯誤原因

      在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
      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM