Linux的基本使用
下載虛擬機VMware Workstation或者[Windows Terminal]
官方下載:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
安裝CentOS
-
在windows解壓
-
在VMware 中打開解壓后的.vmx文件
-
虛擬網絡設置(將默認的橋接模式改為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/
-
查看當前目錄下的所有文件
ls -la # -a參數查看所有文件,包括隱藏文件;-l參數包括文件的屬性和權限,沒隱藏文件
-
操作文件及目錄
-
系統常用命令
-
壓縮解壓縮
-
文件權限操作
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)表示
-
常用快捷鍵及符號命令
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/
安裝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在線安裝
安裝:
-
Xshell連接CentOS
-
在Linux中創建相應的文件夾
-
在Xshell中打開Xftp將JDK傳入CentOS中
由於Centos自帶了jdk所有要先卸載CentOS中的JDK
- jvav -version --查看JDK版本
- rpm -qa | grep jdk --檢索該系統中帶有所有jdk的文件(查看所有jdk文件)
- rpm -e --nodeps [要刪除的文件] --刪除所有JDK
-
安裝JDK
rpm -ivh jdk1.8.0_221-amd64.rpm
-
配置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應用
-
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
-
-
Linux中部署
-
CentOS系統中安裝jdk
-
CentOS系統中安裝MySQL
-
將springboot項目在windos環境下打成jar包
-
將jar包通過Xftp傳到CentOS中,在CentOS中運行
java -jar xxx.jar
-