Linux 基本使用和程序部署
基本命令
文件操作
顯示當前目錄下的文件
ls:顯示當前目錄下的文件
ll:以列表的形式展示,包括隱藏文件

進入目錄 && 顯示當前路徑
cd:進入目錄(后面跟相對路徑或者絕對路徑)
./ 表示當前目錄 …/ 表示上級目錄
pwd : 顯示當前路徑

創建文件夾 && 創建文件
mkdir : 創建文件夾(后面跟文件名)
mkdir -p : 創建多級目錄
?
touch : 創建文件(后面跟文件名)
上傳 && 下載
rz : 上傳文件
sz : 下載(后面跟文件名)
上傳文件 也可以將 要上傳的文件 直接拖到終端里。
查看文件內容
cat : 查看文件(后面跟文件名)直接打開全文。退出后文件內容仍顯示在屏幕上。
more : 查看文件(后面跟文件名)顯示一頁。退出后文件內容仍顯示在屏幕上。 按空格進入下一頁,按 b 進入上一頁。按 ctrl + c 結束。
結束的一些套路:
? ctrl + c 結束。
? 兩次 ctrl + c 。
? exit
? 文件相關:
? :q!
? :q
less : 查看文件 (后面跟文件名)顯示一頁。退出后文件內容不留在屏幕上。 page up / page down 翻頁。
/ : 進入文件后,按 / 進行搜索(/ 后面跟你要搜索的內容)
:q : 退出文件
head : 查看文件,查看開頭 n 行,head 后面跟數字 可以手動指定 查看行數。
tail : 查看文件,查看最后 n 行,head 后面跟數字 可以手動指定 查看行數。
刪除文件
rm : 刪除文件
rm -r : 刪除多級目錄,目錄里面的文件也會刪掉。
?
編輯文件內容
vi : 進入文件
i : 進入編輯模式
ESC : 退出編輯模式
:w : 保存
:q : 退出
:wq : 保存并退出
:q! : 強制退出
:wq! : 強制保存并退出
復制文件
cp [文件名] [目的地] : 復制文件。
移動文件
mv [文件名] [目的地] : 移動文件。這條命令也可以達到重命名的效果。下圖表示把 cat.jpg 重命名為 cat2.jpg。
查找文件
grep [要找的文件] [在哪個文件中找] : 查找文件
?
grep 不僅僅能查文件,它最主要的功能是查找。想查什么用它就對了。
進程相關
查看當前系統上運行的進程
ps [參數] : 查看當前系統上運行的進程
ps aux : 查看所有進程。(顯示內容更多)
ps aux : grep “進程名”
ps aux : grep “進程 id”
ps -ef : 查看所有進程。(顯示一部分內容)
管道簡單介紹
| : 表示把 “|” 前面命令的輸出,作為"|"后面命令的輸入。
例:輸入 ps -ef | grep “redis” 這條命令前半部分的含義是 查看當前系統上運行的所有進程。后半部分的含義是 查找 帶 “redis” 的文件。 組合起來就是 查找當前系統上運行的進程名字帶 “redis” 的進程。輸出:
查看系統網絡狀態
netstat [參數] : 查看系統網絡狀態
搭建 Java 部署環境
apt 介紹
apt 是啥呢?它就跟手機上的應用商店一樣,你可以在上面下載各種軟件。
在 linux 中主要有兩種下載軟件包的方法,一個是去官網下載,另一個就是用 apt 下載。
需要注意的是:在使用大多數 apt 命令時,必須要以 sudo 權限的用戶身份運行。
sudo apt list : 列出 apt 中所有的包。可以使用 grep 命令過濾輸出。
sudo apt-get update : 更新軟件包數據庫。一般在安裝軟件之前,都需要先更新一下 apt 數據庫。
sudo apt install 包名稱 : 添加軟件包
sudo apt remove 包名稱 : 刪除軟件包,不會刪除配置文件。
sudo apt purge 包名稱 : 刪除軟件包,會刪除配置文件,一般推薦使用這個刪。
?
JDK 安裝
-
sudo apt-get update : 更新軟件包數據庫。一般在安裝軟件之前,都需要先更新一下 apt 數據庫。
-
查找 JDK 包
apt list | grep “jdk”
-
安裝 JDK
sudo apt install openjdk-17-jdk
-
查看是否安裝完成
java -version
MySQL 安裝
-
查找安裝包
apt list | grep “mysql-server”
-
安裝 MySQL
sudo apt install mysql-server
-
查看 MySQL 狀態
sudo systemctl status mysql
MySQL 安全相關設置
你按照好 MySQL 之后,默認的 MySQL 設置是不安全的,為了保證數據安全,我們需要做如下設置。
運行: sudo mysql_secure_installation
運行后會彈出如下文字:
這是在讓你選擇密碼的安全級別,數字 0、1、2 分別表示低中高,我們選 2。
這是在問你是否要刪除默認用戶,根據自己需求選擇。
這是在問你,這臺機器上的 MySQL 是否只在當前機器上運行。
選 Y,表示別的機器無法遠程連接你的 MySQL數據庫。
MySQL 默認會生成一個 test 數據庫,這是在問你要不要刪除。
這是在問是否讓你的設置生效。
設置密碼
-
連接 MySQL 服務器
sudo mysql
-
使用 alter user 命令修改密碼
alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘密碼’;
設置完成密碼后,后續再進入 MySQL 的命令:
mysql -u用戶名 -p密碼
MySQL 卸載
-
停止 MySQL
sudo systemctl stop mysql
-
卸載 MySQL
sudo apt-get remove --purge mysql-server mysql-client mysql-common
-
刪除 MySQL 配置文件和數據
sudo rm -rf /etc/mysql /var/lib/mysql
-
清理殘留文件和目錄
sudo apt-get autoremove
sudo apt-get autoclean
-
檢查是否有殘留
dpkg --list | grep -i mysql-*
-
移除相關包
apt-get purge mysql*
-
驗證卸載結果
mysql --version
部署 Web 項目到 Linux
什么是部署?
把程序安裝到生產環境上,這個過程就稱為部署。
- 開發環境(dev):開發人員使用的環境。
- 測試環境(test):測試人員使用的環境。
- 生產環境(prod):真實用戶使用的環境。
環境配置
數據準備
把之前的數據庫建表的腳本,放在服務器上運行,建立同樣的表結構。
配置文件修改
程序部署到服務器,通常需要修改配置文件。比如:關閉日志打印,修改密碼等等。
當然可以在你的開發環境上修改好,之后在送到服務器上。但是這樣很不方便,需要改來改去。
為了方便部署,我們可以為不同的平臺 創建各自的配置文件。
dev 表示開發環境。 prod 表示生產環境
這么多配置文件,到底哪個文件會生效呢?
答: 只有 application.yml 生效,其余配置文件都不會生效。
如何讓其他配置文件生效呢?
我們在 application.yml 中輸入如下代碼:
此時 application-prod.yml 就會生效啦。
需要注意的是 application-名稱.yml 是固定格式,必須這樣寫!!!
但是這樣還是很麻煩,還需要手寫 prod。
我們可以進一步的把它設置成變量。
打開 pom 文件,按照如下設置:
application.yml 中這樣設置:
刷新 Maven。
設置好了,那該怎么選擇用哪個呢?
打包
先檢查你的 pom 文件中是否有以下配置。
沒有的話在 里面加上。
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
如果沒有該插件,那么你打的包中不會有第三方依賴的東西。也就是這些:

都做好以后,點擊右側的 Maven,點擊 package。

打好的文件在:
如果顯示:
去下載對應的包即可:
apt install lrzsz
完成!

啟動 .jar 包
java -jar 包名
但是這樣啟動后,一旦你把命令框關掉,你的程序也就關掉了。
讓你的程序在后臺啟動
nohup java -jar 程序包名 &
查看滾動日志
tail -f 日志名稱
常見問題
-
無法訪問
輸入以下命令來查看端口號是否啟動。
netstat -nltp|grep 端口號
輸入以下命令來查看所有 java 程序
ps -ef|grep java
-
確認端口號是否開放
-
確認程序是否可以正常訪問
curl http://127.0.0.1:8080/blog_login.html
-
確認防火墻是否打開(默認是關閉的狀態)
sudo ufw status
如果防火墻打開了,還需要再打開防火墻的端口號。如果不知道防火墻怎么弄,上網查資料,或者找云服務器的客服。
-
服務器未啟動
- 查看端口號是否正確
- 查看日志
殺掉進程
-
查找進程 id
在日志上直接找
用命令查找:
netstat -nltp|grep 8080
或者
ps -ef|grep java
-
殺掉進程
kill 進程id
本文到這里就結束啦~