Linux 系統優化

HammerZe發表於2021-12-16

Linux 系統優化

image

1、系統資訊檢視方法

  • 檢視系統名稱資訊:

    # cat /etc/redhat-release
    CentOS release 7.5.1804
    
  • 檢視系統核心版本

    # uname -r
    3.10.0-862.el7.x86_64
    
  • 檢視系統硬體位數

    # uname -m
    x86_64
    

  • 檢視系統所有資訊

    • 引數 :-a
    [root@localhost ~]# uname
    Linux
    [root@localhost ~]# uname -a
    Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    

2、系統基礎優化

2.1、新增系統普通使用者

  • 新增系統普通使用者:useradd [使用者名稱]

  • 設定使用者密碼 :passwd [使用者名稱]

    • 免互動模式:echo [密碼]|passwd --stdin [使用者名稱] (一般用在指令碼檔案中)
  • 切換使用者資訊:susu -

    • 二者區別就是su是切換使用者,但是切換後的使用者缺少相應的檔案或環境變數;su -相當於重新登入,切換後的使用者攜帶環境變數或相應檔案
    • 通過pwdecho $PATH兩個命令檢視超管和普通使用者切換後的區別
    • root使用者切換到普通使用者不需要輸入密碼
    • 普通使用者切換到root使用者需要輸入密碼

使用者切換原理圖:

image


  • 檢視當前登入使用者資訊:whoami命令

    [root@localhost ~]# whoami
    root
    
  • 檢視當前使用者登入系統的終端 :who命令

    [root@localhost ~]# who
    root     tty1         2021-12-15 08:50
    root     pts/0        2021-12-15 15:14 (192.168.15.1)
    root     pts/2        2021-12-15 16:52 (192.168.15.1)
    
    # tty和pts的含義
    tty ---- 代表虛擬機器開的視窗
    pts ---- 代表此時Xshell開的視窗
    

2.2、命令提示資訊優化

  • 通過echo $PS1命令修改顯示命令列提示符格式資訊

臨時切換提示

  • 大寫方式

    [root@localhost ~]# echo $PS1
    [\u@\h \W]\$
    # 大寫方式只能顯示路徑基名,不顯示完全路徑
    [root@localhost ~]#cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]#
    
  • 小寫方式

    [root@localhost ~]# PS1='[\u@\h \w]\$'
    # 通過小寫方式這樣就能顯示完整路徑了
    [root@localhost ~]#cd /etc/sysconfig/network-scripts/
    [root@localhost /etc/sysconfig/network-scripts]#
    

永久設定切換提示

  • 相關檔案: /etc/profile
    • 在profile檔案內新增export PS1='[\u@\h \w]\$ '
    • 過載檔案命令:source
    • 過載檔案:source /etc/profile,設定成功+

2.3、下載的源資訊更新

2.3.1、 Linux中安裝軟體

  • 安裝軟體的三種方式

  • rpm安裝

  • yum安裝

  • 原始碼編譯安裝

  • 區別:

    • rpm安裝:類似於windows中的安裝包,下載下來之後直接安裝。
      • rpm缺點:不能解決依賴
    • yum安裝:基於rpm安裝,也就是在rpm安裝上增加了自動解決依賴的功能
    • 原始碼安裝:通過編譯原始碼,得到軟體包
      • 優點:可以自定製軟體包
      • 缺點:是比較複雜

注:依賴通俗理解為,如果下載wps,那麼在下載的同時,wps就會自動下載了word/excel/ppt等必備軟體,這樣就是解決了依賴,如果下載了wps沒有自動下載word等軟體,就是沒有解決依賴*


2.3.2、三種安裝詳細操作


RPM安裝
  • 命令:
    • 安裝:rpm -ivh [軟體包名稱]
    • 解除安裝:rpm -e [軟體包名稱]
    • 升級:rpm -Uvh [軟體包名稱]
    • 檢視軟體包配置檔案:rpm -qc [軟體包名稱]
    • 檢視是否安裝某軟體:rpm -q [軟體包名稱]
    • 檢視當前系統安裝了哪些軟體:rpm -qa [軟體包名稱]
    • 檢視軟體的安裝路徑內的內容:rpm -ql [軟體包名稱]

image

這樣就是從base源上下載好了lrzsz工具包!


  • 安裝、解除安裝、更新操作如下:

1、下載安裝包(我是用的是華為源)

  • 開啟華為映象源網站,選擇base源下載

image

image

我的是CentOS 7,找到7/-->os/-->x86_64/Packages/,然後去搜尋要下載的安裝包!(路徑顯示:/mirrors_os/centos/7/os/x86_64/Packages/)

image

下載好直接拖拽進Xshell框中即可,下載安裝包就完成了!

image

image


2、安裝

# 安裝命令
[root@localhost ~]# rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-34.el7_8.2             ################################# [100%]
[root@localhost ~]# zsh

3、解除安裝

# 解除安裝命令
[root@localhost]~# rpm -e zsh
[root@localhost]~# zsh
zsh: command not found: zsh

4、更新

# 更新命令
[root@localhost]~# rpm -Uvh zsh-5.0.2-34.el7_8.2.x86_64.rpm
Preparing...                          ################################# [100%]
	package zsh-5.0.2-34.el7_8.2.x86_64 is already installed
[root@localhost]~# zsh

5、軟體包名稱解釋

zsh-5.0.2-34.el7_8.2.x86_64.rpm 
軟體包名稱:zsh
版本號:5.0.2
第多少次編譯:34
適用的平臺:el7_8(CentOS 7)
適用的系統位數:x86_64
副檔名:rpm

6、補充操作

# 檢視軟體包的配置檔案有哪些
[root@localhost]~# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

# 檢視是否安裝某軟體
# 有的話顯示軟體包資訊
[root@localhost]~# rpm -q zsh
zsh-5.0.2-34.el7_8.2.x86_64
# 沒有安裝輸出未安裝
[root@localhost]~# rpm -q asfgghl
package asfgghl is not installed

# 檢視當前系統安裝了哪些軟體
[root@localhost]~# rpm -qa

#檢視軟體的安裝路徑內的內容
[root@localhost ~]# rpm -ql zsh

yum安裝命令介紹
  • 格式:yum [引數][進行的操作][軟體包名稱]

  • 引數 :

    • -y,安裝,解除安裝,更新使用-y引數是免互動模式,不需要確認y/N
    • --nogpgcheck:忽略公鑰認證安裝
  • yum命令:

    • 安裝:yum install [軟體包的名稱]
    • 解除安裝:yum remove [軟體包的名稱]
    • 更新:yum update [軟體包的名稱]
    • 檢視軟體源中是否有此軟體:yum list [軟體包的名稱]
    • 清空yum快取:yum clean all
    • 生成快取:yum makecache
    • 列出設定yum源的資訊:yum repolist
    • 清除快取目錄下的軟體包:yum clean packages
  • yum安裝的生命週期(從下載到結束):

    1. 執行yum install [軟體包名稱]

    2. /etc/yum.repos.d/目錄 找以 .repo (yum源)結尾的檔案

    3. 通過 .repo 檔案中的連結,找到對應的軟體倉庫

    4. 在對應的軟體倉庫中下載指定的軟體包

    5. 快取到/var/cache/yum/

    6. 根據快取,安裝軟體包

    7. 刪除軟體包(在/etc/yum.conf中有引數keepcache 代表是否儲存快取,0 代表不儲存 , 1 代表儲存)

    注:rpm其實就是隻執行了最後一步

  • 相關檔案:

    • yum的配置檔案:/etc/yum.conf

    • 安裝包快取目錄:/var/cache/yum/

    • 軟體倉庫目錄/etc/yum.repos.d/

注:如果跟具體的軟體包名稱,就會更新指定軟體包;如果沒有指定,則更新系統所有的需要更新的軟體包。


yum私有倉庫構建

私有倉庫分類:本地版、遠端版

本地版構建步驟

本地版是本機使用

  • 下載必須的軟體包

    yum install yum-utils createrepo -y
    

    注:使用'yum-utils'來維護YUM並提高其效能,[yum-utils包詳解]((29條訊息) 怎麼讓linux支援yum,如何安裝和使用'yum-utils'來維護Yum並提高其效能_火車合鳥子的部落格-CSDN部落格)

  • 建立軟體倉庫

    [root@localhost opt]# mkdir -p /opt/repos
    [root@localhost repos]# pwd
    /opt/repos
    
  • 初始化軟體倉庫

    • 命令:createrepo [軟體倉庫路徑]
    # 初始化倉庫
    [root@localhost ~]# createrepo /opt/repos/
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    
    # 切換路徑檢視初始化結果,多了一個repodata目錄
    [root@localhost ~]# cd /opt/repos/
    [root@localhost repos]# ll
    total 4
    drwxr-xr-x 2 root root 4096 Dec 16 20:47 repodata
    # repodata目錄記憶體儲的是對應關係,不要修改
    
    
  • 初始化後建立Packages目錄,下載對應的軟體包,我用zsh做例子(華為源提前下載好的)

    [root@localhost repos]# mkdir /opt/repos/Packages
    [root@localhost repos]# ll
    total 4
    drwxr-xr-x 2 root root    6 Dec 16 20:51 Packages
    drwxr-xr-x 2 root root 4096 Dec 16 20:47 repodata
    # 此時/repos裡面就有兩個目錄,Packages下存放安裝包,移動準備好的軟體安裝包(zsh舉例)
    [root@localhost repos]# mv /root/zsh-5.0.2-34.el7_8.2.x86_64.rpm Packages/
    [root@localhost repos]# ll /opt/repos/Packages/
    total 2440
    -rw-r--r-- 1 root root 2497380 Dec 16 15:37 zsh-5.0.2-34.el7_8.2.x86_64.rpm
    
    

image

  • 再次初始化嘗試驗證是否成功,不報錯為成功

    [root@localhost repos]# createrepo /opt/repos/
    Spawning worker 0 with 1 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    # 沒有報錯代表成功了
    
  • 新增yum源

    # 防止原有的源影響測試本地源結果
    # 去yum源,做備份
    [root@localhost repos]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# mkdir backup
    [root@localhost yum.repos.d]# mv *.repo backup/
    [root@localhost yum.repos.d]# ll
    total 4
    drwxr-xr-x 2 root root  237 Dec 16 21:04 backup
    
    # 新增本地yum源
    [root@localhost ~]# yum-config-manager --add-repo=file:///opt/repos
    Loaded plugins: fastestmirror
    adding repo from: file:///opt/repos
    
    [opt_repos]
    name=added from: file:///opt/repos
    baseurl=file:///opt/repos
    enabled=1
    
    # 切換目錄,檢視是否新增yum源
    [root@localhost repos]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# ll
    total 4
    drwxr-xr-x 2 root root 268 Dec 16 21:07 backup
    -rw-r--r-- 1 root root  85 Dec 16 21:09 opt_repos.repo
    # 成功新增opt_repos.repo
    
    # 檢視,發現源下載連結變為本地的file://
    [root@localhost yum.repos.d]# cat opt_repos.repo 
    [opt_repos] # 源的名稱
    name=added from: file:///opt/repos # 源的簡介
    baseurl=file:///opt/repos # 源的下載地址
    enabled=1 # 是否啟用,1為啟用,0為不啟用
    
  • 清理快取,生成快取

    # 清理
    [root@localhost yum.repos.d]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: opt_repos
    Cleaning up list of fastest mirrors
    Other repos take up 664 M of disk space (use --verbose for details)
    
    # 生成
    [root@localhost yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror
    Determining fastest mirrors
    opt_repos                                                         | 2.9 kB  00:00:00     
    (1/3): opt_repos/filelists_db                                     | 5.7 kB  00:00:00     
    (2/3): opt_repos/other_db                                         | 1.6 kB  00:00:00     
    (3/3): opt_repos/primary_db                                       | 2.5 kB  00:00:00     
    Metadata Cache Created
    
  • 測試

    [root@localhost yum.repos.d]# yum install zsh
    

    現在下載已經是本地新增的源下載,opt_repos

image

image


遠端版構建

優化本地版,其他機器可以用,接下來用克隆機嘗試使用本機的

  • 下載必須的軟體包
  • 建立軟體倉庫
  • 下載對應的軟體
  • 初始化軟體倉庫
  • 新增yum源
  • 生成快取

上面列出這幾步和本地版完全一樣參考上面,下面步驟續上步驟

  • 獲取華為開源網站中Base源url內容

    # 本地只有一個安裝包,去華為開源網站獲取,執行以下命令
    [root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
    

image

注:curl 是一種命令列工具,作用是發出網路請求,然後獲取資料,顯示在"標準輸出"(stdout)上面。

  • 如果要把這個網頁儲存下來,可以使用 -o 引數:
  • curl -o [檔名] [URL]
  • 新增yum源:

    • 命令:yum-config-manager --add-repo=[yum源url根路徑]

    • 注意:yum源根路徑為含有Packages和repodata兩個目錄

image

# 新增yum源
[root@localhost yum.repos.d]# yum-config-manager --add-repo=https://repo.huaweicloud.com/epel/7/x86_64/
Loaded plugins: fastestmirror
adding repo from: https://repo.huaweicloud.com/epel/7/x86_64/

[repo.huaweicloud.com_epel_7_x86_64_]
name=added from: https://repo.huaweicloud.com/epel/7/x86_64/
baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
enabled=1
  • 安裝遠端訪問軟體(Nginx)

    # 忽略公鑰安裝
    [root@localhost yum.repos.d]# yum install nginx --nogpgcheck
    
  • 修改nginx的配置檔案

    [root@localhost yum.repos.d]# rpm -qc nginx
    /etc/logrotate.d/nginx
    /etc/nginx/fastcgi.conf
    /etc/nginx/fastcgi.conf.default
    /etc/nginx/fastcgi_params
    /etc/nginx/fastcgi_params.default
    /etc/nginx/koi-utf
    /etc/nginx/koi-win
    /etc/nginx/mime.types
    /etc/nginx/mime.types.default
    /etc/nginx/nginx.conf
    /etc/nginx/nginx.conf.default
    /etc/nginx/scgi_params
    /etc/nginx/scgi_params.default
    /etc/nginx/uwsgi_params
    /etc/nginx/uwsgi_params.default
    /etc/nginx/win-utf
    
    # 只修改/etc/nginx/nginx.conf檔案
    註釋掉:include /etc/nginx/conf.d/*.conf;
    修改路徑: root         /opt/repos;
    新增索引:autoindex on;    ---# 作用是目錄索引
    

vim /etc/nginx/nginx.conf 檔案

image

  • 測試

    • 命令:nginx -t
    [root@localhost yum.repos.d]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    # 測試成功
    
  • 啟動nginx

    [root@localhost yum.repos.d]# systemctl start nginx
    
  • 關閉selinux和firewalld

    [root@localhost ~]# systemctl disable --now firewalld
    [root@localhost ~]# setenforce 0
    
  • 瀏覽器測試

    瀏覽器檢視本機http://192.168.15.100/
    

image

  • 克隆機測試

    [root@localhost ~]# cd /etc/yum.repos.d/
    # 裝yum-utils擴充套件
    [root@localhost yum.repos.d]# yum install yum-utils -y
    
    # 備份源
    [root@localhost yum.repos.d]# mkdir backup
    [root@localhost yum.repos.d]# mv *.repo backup/
    [root@localhost yum.repos.d]# ll
    total 0
    drwxr-xr-x. 2 root root 268 Dec 16 22:18 backup
    
    # 新增yum源
    [root@localhost yum.repos.d]# yum-config-manager --add-repo=http://192.168.15.100/
    Loaded plugins: fastestmirror
    adding repo from: http://192.168.15.100/
    
    [192.168.15.100_]
    name=added from: http://192.168.15.100/
    baseurl=http://192.168.15.100/
    enabled=1
    
    # 清理快取、生成快取
    [root@localhost yum.repos.d]# yum clean all
    [root@localhost yum.repos.d]# yum makecache
    
    # 測試下載
    [root@localhost yum.repos.d]# yum install zsh 
    
    

image

注.下次不能在網頁開啟本機ip地址,重啟nginx服務就可!


3、系統安全優化

3.1 關閉selinux安全服務功能

  • 相關檔案:/etc/selinux/conf

  • 永久關閉 :vim /etc/selinux/conf

image

  • 臨時關閉/開啟(設定立即生效):setenforce 0 /1(0代表臨時關閉,1代表開啟).
[root@localhost]~# setenforce 0
[root@localhost]~# setenforce 1

3.2關閉防火牆

  • 防火牆底層:

    • firewalld 底層 --> iptables -->系統安全框架
  • 檢視防火狀態:

    • systemctl status firewalld
  • 暫時關閉防火牆

    • systemctl stop firewalld
  • 永久關閉防火牆

    • systemctl disable firewalld
  • 重啟防火牆

    • systemctl enable firewalld
  • 啟動防火牆

    • systemctl start firewalld

4、防止系統亂碼優化

4.1 出現亂碼情況設定

# 檢視字符集
[root@localhost ~]# echo $LANG
en_US.UTF-8

# 設定字符集
export LANG=en.US-gb2312

# 檢視字符集
[root@localhost ~]# echo $LANG
en.US-gb2312

4.2 解決亂碼 情況設定

  • 臨時修改系統字符集資訊
# 檢視系統當前使用字符集
echo $LANG
# 設定字符集
export LANG=en.US-gb2312

# 設定中文的
export LANG=zh_CN.UTF-8

  • 永久修改系統字符集資訊
# 備份配置資訊
cp /etc/locale.conf /etc/locale.conf
# 編寫配置檔案
echo 'LANG="en_US.UTF-8"'  >/etc/locale.conf
source /etc/locale.conf
# 檢視配置資訊
echo $LANG

補充知識:

  • 什麼是源?

源就是來源,就是你安裝軟體時,程式從哪裡獲取軟體包(安裝程式在你的機器上,但需要安裝的東西卻在軟體源伺服器上)。

什麼是軟體源?

軟體源就相當於軟體庫,需要安裝什麼軟體,只需要簡單使用命令來進行安裝,其實你可以把他稱為軟體倉庫。安裝軟體時,就是從倉庫裡面調取資料放在你的機器上。

什麼是映象?

映象,原意是光學裡指的物體在鏡面中所成之像。引用到電腦網路上,一個網站的映象是指對一個網站內容的拷貝。映象通常用於為相同資訊內容提供不同的源,特別是在下載量大的時候提供了一種可靠的網路連線。製作映象是一種檔案同步的過程。“映象網站”(英文:Mirror sites [1] ),又譯作“映象站點” ,亦即把一個網際網路上的網站資料“拷貝”到本地伺服器,並保持本地伺服器資料的同步更新,因此也稱為“複製網路站點” 。

映象源就是把官方的源做一個映象,你可以在這下載軟體。

官方源如果在國外,下載軟體可能會很慢,這時候就需要換成國內的映象源。


?[源概念參考博文]((29條訊息) 什麼是源,什麼是映象_xiaoxiannv666的部落格-CSDN部落格_映象源是什麼意思)


image


【總結不易,頂一下吧各位老闆!】

相關文章