2023年10月30日 星期一

(Centos-7) 指令_學習文_很多很雜

基本指令
cd abc -> 進入子目錄
cd/ -> 進入根目錄
ll -> 顯示目前路徑檔(詳細)
ls -> 同上(簡略)
cp -> 拷貝
mkdir -> 建立目錄
rm -> 刪除檔案或資料夾
mv -> 移動檔案或改名
clear -> 清屏
pwd -> 顯示目前路徑
more -> 顯示文字文檔
uname -a -> 查看目前核心版本號
vim -> 文字編輯器
fdisk -> 硬碟分割區
mkfs -> 格式化
chmod -> 改變檔案權限
free -> 查看剩餘內存
grep -> 依條件高亮顯示文本
man -> 顯示指令的help文檔
df -h -> 查看磁碟剩餘空間
du -sh dir -> 查看資料夾名稱"dir"所佔用的空間
lsof -i:8080 -> 查看8080埠是否被佔用
find . -name "filename.txt" -> 搜尋目前目錄下filename.txt文件,包括各級子目錄
 
幾個有用的指令
tail -n 20 [filename] (顯示filename最後20行)
chmod -R 777 [dir] (將dir整體變成777)
rm -rf [dir] (整體刪除dir)
cp -r -a ./* /[dir] (將目前路徑下所有檔案包含子目錄全部拷貝到dir)
tar -xvzf [filename] (解壓縮gz檔)
gzip -d [filename] (解壓縮gz檔)
unzip -x [filename] (解壓縮zip檔) [壓縮目前目錄下全部內容:zip -r filename.zip ./*]
rpm -ivh [filename](安裝一個套件)
rpm -Uvh [filename](升級一個包)
rpm -e [filename](卸載一個套件)
nohup [cmds] >/dev/null 2>&1 & (無任何輸出或log,在背景執行一個cmds指令)
[如果只是無提示運行任意指令,可以簡單地在指令最後加上一個" & " 號碼即可]
 
附參數的alias快捷指令:
 
# nano ~/.bashrc
輸入以下內容:
alias psa="psa"
psa()
{
     ps -A|grep $@
}
光碟退出
# source ~/.bashrc
# psa bash (相當於ps -A|grep bash)
  1703 pts/0 00:00:00 bash
 
簡單的開機自啟動方法
# crontab -e (輸入這條指令後會自動開啟預設編輯器,一般是vim)
然後輸入:
@reboot sleep 5;/root/autoexec.sh
意思是:每次系統重新啟動後,執行autoexec.sh腳本。
 
分割區 & 格式化
  1. 先看看有幾個實體硬碟:
  #fdisk -l
  2. 選擇一個實體硬碟來分區
  #fdisk /dev/vdb1 (我這裡為vdb1)
  3. 進去後使用的是快捷指令:
  p : 查看目前分區
  d:刪除目前分割區
  n:建立一個新的分區
  w: 記憶體退出(所有變更生效)
  q: 不存檔、退出(所有變更不生效,安全)
  一個一個子分割區先刪除乾淨之後才能建立新分割區
 
如果是新硬碟,一般來說的預設操作流程是:
Created a new DOS disklabel with disk identifier : 選n
Select (default p): 選取(p)主分區
Partition number (1-4, default 1): 選(1)個分區
First sector (2048-419430399, default 2048): 直接敲回車 (起始扇區)
Last sector, +sectors or +size{K,M,G,T,P} (2048-419430399, default 419430399): 直接敲回車
Command (m for help): p (查看一下分區設定)
Command (m for help): w (寫入)
 
格式化:
  mkfs.ext4 /dev/vdb1
  等待命令執行完成
  4. 掛載新硬碟到作業系統的某個節點上
  mkdir /data
  mount /data /dev/vdb1
 
5. 大功告成後,可用 df -h 指令再查看查看
 
安裝Aapache:
  1. yum install httpd.x86_64 (安裝)
  2. systemctl start httpd.service (啟動)
  3. systemctl enable httpd.service (自啟)
 
  然後到瀏覽器那邊測試:http://伺服器ip
  會出現一個Testing 1.2.3的測試頁。
  Apache的主頁預設路徑: /var/www/html/
  Apache的主設定檔路徑:/etc/httpd/conf/httpd.conf
 
 
安裝PHP:
  1. yum groupinstall 'PHP Support' -y (安裝)
  2. systemctl restart httpd.service (重啟Apache即可)
 
 
安裝mysql支援(其實是mariadb):
yum install mariadb-server mariadb -y
systemctl start mariadb
systemctl enable mariadb
 
 
MySQL初始密碼問題
  忘記root密碼,root權限被意外剝奪,看不到mysql表這種情況:
  1. systemctl stop mariadb.service (先關服務)
  2. /usr/bin/mysqld_safe –skip-grant-tables & (進入安全模式)
  3. mysql -uroot (不需要密碼,直接進人)
  4. show databases;可以看到mysql表了
  5. use mysql;
  6. update user set password=password('yournewpasswordhere') where user='root';
  7. flush privileges;
 
 
VSFTP 安裝
  首先看看伺服器裝了vsftp沒: rpm -qa|grep vsftpd
  先卸載了再說:yum remove vsftpd
  然後:
  #yum install vsftpd (先裝)
  改: etc/vsftpd/vsftpd.conf
  這兩行:
  anon_upload_enable=YES (允許匿名使用者上傳)
  anon_mkdir_write_enable=YES (允許匿名使用者建立目錄)
  然後這樣還是不行的,還需要把vsftp的主上傳目錄改為777,
  否則會報553 Could not create file錯誤。
  chmod -R 777 /var/ftp
  然後回到命令列這邊:
  systemctl start vsftpd.service (開始服務)
  systemctl enable vsftpd.service (自啟)
【特別注意事項】
回到VPS,要建立一個對應入站放行規則,
 
出站無需設置,否則無法連接。
 
一般VPS都有這個選項,在WEB介面裡設置,方法基本上大同小異。
本地用戶登陸,首先設定檔如下:
  anonymous_enable=NO
  local_enable=YES
  write_enable=YES
  local_umask=002
  userlist_enable=YES
  userlist_deny=YES
  userlist_file=/etc/vsftpd/user_list
  use_localtime=YES
  dirmessage_enable=YES
  xferlog_enable=YES
  connect_from_port_20=YES
  xferlog_std_format=YES
  listen=YES
  pam_service_name=vsftpd
  tcp_wrappers=YES
 
然後新增一個新的客戶: cent
  useradd cent -s /sbin/nologin
  passwd cent
  mkdir /var/ftp/pub
  chown -R cent /var/ftp/pub
  chmod -R 755 /var/ftp/pub
  設定檔裡沒有設定chroot_local_user (即將使用者約束在各自的home資料夾)
 
ps: 這樣設定的權限很大,使用者可以瀏覽並修改整個伺服器檔案。
 
BTW:另外還有一款名為Bitvise SSH Client的遠端存取軟體,本身的作用和putty之類差不多,但它功能極其強大,自帶SFTP,如果你本無意架設一個真正的FTP站點,而僅僅是為了 方便自己上傳下載檔案的話,選擇這款免費軟體就足夠了,無需任何設置,登入即用!
 
全新安裝官方版MySQL
  以下為全新安裝官方原版MySQL的方法:
1:為yum指令新增來源
  先搞清楚到底要下載哪個來源,用指令:uname -a
  看看伺服器版本號,我這邊顯示的是el7
  然後去這個網址:
MySQL :: Download MySQL Yum Repository
  下載一個:mysql57-community-release-el7-11.noarch.rpm (對應之前的el7)
  注意:如果是Centos 6,則需要下載針對el6核心所使用的rpm
然後用滑鼠右鍵點擊下載鏈接,複製絕對地址,直接用wget指令下載
(如果您找不到絕對位址,也可以先用瀏覽器下載到本機再FTP到伺服器也一樣):
 
然後執行以下指令:
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
這個動作很快,就幾秒鐘的事兒。
 
2. 安裝MySQL
有了來源之後,就可以用這個指令安裝了:
yum install mysql-community-server
注意這個過程非常漫長,要有耐心。
 
裝完之後會有一個小結,如果原機裝有Mariadb或舊版MySQL的話,可以看到
Replaced:
mysql-libs.i686 0:5.1.73-8.el6_8
會被新裝這個MySQL取代(Replaced)掉。
 
3. 啟動服務
裝完後,用以下指令開啟MySQL服務:
systemctl start mysqld.service
systemctl enable mysqld.service (自啟動)
systemctl status mysqld.service (查看狀態)
這一步驟也是有可能出問題的,如果之前舊的Maroadb或MySQL在/var/lib/ 下面有mysql目錄(這是mysql主資料目錄,所有的資料庫、表格之類都存放於此),則會報錯 :
initialize specified but the data directory has files in it. Aborting.
還好這個問題不難解決,刪除這個資料目錄:
  #rm -rf /var/lib/mysql
刪除之後,不能再去手動建立,只要執行mysql,程式就會自動建立。

4. 初始化設定
在上面的安裝過程中,產生了一個臨時密碼,在/var/log/mysqld.log檔案裡,
第一步是讓它高亮出來:
grep 'temporary password' /var/log/mysqld.log
記下這個密碼。
 
用剛才那個臨時密碼登陸:
mysql -uroot -p
 
進去之後用這個指令改變初始密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
 
如果顯示: Your password does not satisfy the current policy requirements
 
這不是大問題,只是說明密碼強度不夠,再想一個複雜一點的密碼就好。
 
5. 設定遠端存取
現在整個兒MySQL基本上就已經裝好了,但僅限於本地使用(對於BS結構的程式來說夠了)
如果還需要用Navicat等工具遠端登陸,或是一些CS結構的軟體,還需要做下一步:
mysql -uroot -p (首先進入mysql伺服器,用剛才設定的新密碼)
mysql>use mysql;
mysql>update user set host = '%' where user = 'root'; (將root帳號的host改為%也就是說任意客戶端皆可存取)
mysql>FLUSH PRIVILEGES; (全域刷新一下就OK了,現在再試試Navicat應該就能連通了)
 
7. 在已經設定了root密碼的情況下重新修改root密碼的方法(忘記了root密碼怎麼辦):
首先要進入安全模式
systemctl stop mysqld.service (先關mysql服務)
vi /etc/my.cnf (修改mysql設定檔)
加入一行:
skip-grant-tables
依序按ESC : w q ! (依序按這5個建,記住不是同時按哦,再按回車,表示盤退出)
systemctl start mysqld.service (啟動mysql)
mysql -uroot -p (不需要密碼直接進入)
use mysql;
update mysql.user set authentication_string = PASSWORD('123456′) where User='root';
FLUSH PRIVILEGES;
quit;
從mysql命令列模式出來之後,
systemctl stop mysqld.service (先關閉mysql)
vi /etc/my.cnf
去掉skip-grant-tables這一行,或是在前面加個#號註解掉 (不能一直讓mysql工作在安全模式裡面啊,root都不需要密碼的,尺度太大了)
改完之後,像前面一樣,依序按 ESC : w q ! 這5個鍵,碟盤退出。
systemctl start mysqld.service (再重啟mysql即可)
 
-------------------------------
NodeJS
 
1. 安裝nodejs和cnpm (cnpm源自淘寶,比原版npm快得多)
 
yum install -y nodejs.x86_64
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install forever -g (用cnpm裝一個forever)
 
2. 開機自動運行預設網站的方法:
 
首先要搞清楚forever的路徑:
 
whereis forever
forever: /usr/bin/forever (這就是forever的實際路徑)
 
3. 建立一個service服務文件:
 
nano /usr/lib/systemd/system/myweb.service
 
輸入以下內容:
 
[Unit]
Description=myweb
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/bin/forever start /root/myweb/bin/www
ExecReload=/usr/bin/forever stopall && /usr/bin/forever start /root/myweb/bin/www
ExecStop=/usr/bin/forever stopall
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
 
注意:Type=forking 這行的意思是,像nginx那種輸入指令後程式自動駐留記憶體的就用forking,而其他前台程序,就是指那些運行完畢後(或按下CTRL+C)不自動駐 留記憶體的程序,最簡單的比如說ls 這一類,此處就用Type=simple
 
光碟退出。
 
systemctl daemon-reload
systemctl start myweb
systemctl enable myweb (開機自動運轉)
 
Java JDK環境安裝
 
1. 訪問
(下載相對應的rpm包,CentOS 7下載jdk-8u151-linux-x64.rpm,ps:只能用瀏覽器下載了再上傳到伺服器,直接wget不行)
2. mkdir /usr/java (java安裝在/usr/java裡)
3. cd /usr/java
4. 上傳rpm包到/usr/java
5. rpm -ivh jdk-8u151-linux-x64.rpm
6. 輸入java -version,如果不報錯,而是彈出java版本號,表示安裝成功!
 
GNOME環境安裝 + VNC伺服器安裝
 
Step 1 . 先以 root 帳號登錄,建立1個VNC帳號並設定密碼
 
useradd -c "User Joe Configured for VNC Access" joevnc
passwd joevnc
 
Step 2 . 安裝 GNOME 桌面
 
yum groupinstall -y "GNOME Desktop" (centos7)
dnf groupinstall -y "Server with GUI" (centos8)
reboot
 
Step 3 . 安裝 TigerVNC Server
 
yum install -y tigervnc-server
 
Step 4 — 設定 VNC Service
  也就是剛才設定的joevnc,將vncserver的預設設定檔拷貝為兩個獨立的設定文件,編號為4和5:
 
 
舊版方法:
 
用vi編輯器修改4號設定文件,也就是使用者joevnc的設定檔:
 
 
找出兩個<USER>,將他們改為joevnc:
 
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i"
PIDFile=/home/joevnc/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
 
新版本方法:此文件不需要做任何修改。
 
Step 4 . 設定 VNC 密碼
用exit命令註銷目前root用戶,然後重新打開一個命令列終端連接,以joevnc身份登入。
 
注意:此處新舊版本不一樣,先說舊版方法:
 
用joevnc登入之後 (記住,接下來的操作都是以joevnc完成的,不是root)
輸入命令:
vncserver
設定一個存取密碼,記得這是vnc的存取密碼,跟joevnc本身的系統密碼不是一回事。
舊版設定比較簡單,這一步驟完成後,就可以輸入exit,登出joevnc,重新以root帳號登入了。
 
新版本方法:
 
新版已經取消 vncserver 這個指令了,
改為輸入:
vncpasswd
輸入之後會在"家"(~)資料夾自動建立 .vnc 目錄,
joevnc用戶這邊算完成了,用exit註銷之後再用root登錄,然後:
 
將預設設定檔拷貝給joevnc:
cp /etc/tigervnc/vncserver-config-defaults /home/joevnc/.vnc/config
然後編輯這個檔案:
vim /home/joevnc/.vnc/config
改正這樣:
 
session=gnome
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=2000x1200
localhost
alwaysshared
 
光碟退出。
 
還沒完,root還需要修改這個檔案:
vim /etc/tigervnc/vncserver.users
加一行:
:4=joevnc
 
光碟退出。
 
重新以root帳號登入之後,輸入以下指令重新啟動守護程式:
 
systemctl daemon-reload
 
開啟4號VNC(也就是用戶joevnc的設定檔)服務:
 
systemctl start vncserver@:4.service
 
讓4號VNC服務開機自啟動:
 
systemctl enable vncserver@:4.service
 
Step 5 . 設定防火牆
開啟防火牆:
 
systemctl start firewalld
 
開放5904埠:
 
firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
 
(你可能會問,為啥是5904?因為TigerVNC自身使用5900端口,而每一個VNC用戶又都擁有自己的獨立端口號,規定以"5900+VNC用戶編號" 為原則,剛才配置文件編號是4 ,那麼這兩個獨立進程的連接埠就是5900+4,當然編號隨你自己設置,不一定要4,反正記住規則是「5900+編號」 就行了)
 
刷新防火牆設定
 
firewall-cmd --reload
 
如果總是報錯,可以用systemctl stop firewalld 和 systemctl disable firewalld 乾脆把防火牆先關再說。
 
nft防火牆篇:
 
Centos8已經全面使用nftable了,也比較簡單:
 
flush ruleset
table inet filter {
         chain input {
                 type filter hook input priority 0; policy drop;
                 ct state established,related accept
                 ct state invalid drop
                 iif lo accept
                 ip protocol icmp icmp type { destination-unreachable, router-solicitation, router-advertisement, time-exceeded, parameter-problem } accept
                 ip protocol igmp accept
                 #放行埠:
                 tcp dport { 5004, 3306, 8080, 3000, http, https} accept
         }
         chain forward {
                 type filter hook forward priority 0; policy drop;
         }
         chain output {
                 type filter hook output priority 0; policy accept;
         }
}
 
存檔,比如說檔案名稱為aaa.nft,
用:nft -f aaa.nft 即可。
 
Step 6 . 使用VNC客戶端軟體
  下載網址:http://www.onlinedown.net/soft/251613.htm
  安裝很簡單,一直下一步即可,開啟主介面也沒什麼好設定的,直接在位址框輸入:
 
你的伺服器IP:5904,如127.0.0.1:5904
 
輸入完畢後點 Connect 即可。
 
連接埠5904對應的是joevnc
另外,如果你登陸桌面的時候,即使輸入了正確的密碼還是報錯:sorry.that didn't work.please try again
  那就先回到命令列,輸入:
 
passwd 用戶名
 
重新輸入一次密碼,更新之後桌面那邊就可以使用了。
 
參考文章:
 
How To Install and Configure VNC Remote Access for the GNOME Desktop on CentOS 7 | DigitalOcean
 
--------------------------------------------
Chrome:
 
 
 
然後用rpm安裝:
 
rpm -ivh google-chrome-stable_current_x86_64.rpm
 
基本上會報一堆錯誤,例如:
 
warning: google-chrome-stable_current_x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY
error: Failed dependencies:
     /usr/bin/lsb_release is needed by google-chrome-stable-74.0.3729.131-1.x86_64
     libXss.so.1()(64bit) is needed by google-chrome-stable-74.0.3729.131-1.x86_64
     libappindicator3.so.1()(64bit) is needed by google-chrome-stable-74.0.3729.131-1.x86_64
     liberation-fonts is needed by google-chrome-stable-74.0.3729.131-1.x86_64
 
不要急,報錯是正常的流程之一,現在用repoquery命令一個一個分析,例如:
 
repoquery --nvr --whatprovides libappindicator3.so.1
 
系統顯示:
 
libappindicator-gtk3-12.10.0-13.el7
 
發現少了這個包,那我們就直接用yum去安裝:
 
yum install libappindicator-gtk3-12.10.0-13.el7 -y
 
其他依葫蘆畫瓢都這麼一個一個用yum安裝即可,唯一要注意的是,/usr/bin/lsb_release 這個包是這樣安裝的:
 
yum install *lsb* -y
 
對於我的系統而言,我需要安裝以下套件:
 
yum install libXScrnSaver-1.2.2-6.1.el7 -y
yum install libappindicator-gtk3-12.10.0-13.el7 -y
yum install liberation-fonts-1.07.2-16.el7 -y
yum install *lsb* -y
 
裝完之後,再輸入一次:
 
rpm -ivh google-chrome-stable_current_x86_64.rpm
 
這回終於不報錯了,安裝成功。
 
回到桌面,發現桌面的Internet分類裡已經有了Chrome的圖示了。
  如果無法啟動,表示你現在使用的是root帳戶,因為chrome預設是不能給root使用者運行的。
  開啟檔案總管,找到 /usr/share/applications/路徑下的Chrome圖標,右鍵屬性,然後把Command改成:
 
/usr/bin/google-chrome-stable %U --no-sandbox
 
或是直接在桌面的Terminal裡面用命令列啟動:
 
/usr/bin/google-chrome-stable --no-sandbox
 
CentOS 7 開機自動啟動腳本的方法
 
  1. 在 /usr/lib/systemd/system 下面建立一個文件,這個文件名稱就是我們要設定的服務,例如現在想自訂一個服務rockage:
 
nano /usr/lib/systemd/system/rockage.service
 
2.在此文件中輸入服務設定代碼:
 
[Unit]
Description=rockage
After=network.target
 
[Service]
Type=forking
ExecStart=啟動命令或腳本
ExecReload=重新啟動的指令或腳本
ExecStop=停止運作的命令或腳本
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
 
ExecStart,ExecReload,ExecStop 這三個選項分別對應啟動、重新啟動、停止,如果指令夠簡單的話,直接輸入就行了,一個指令不夠,中間還可以用&&連線。 如果命令列實在太複雜或還需要做邏輯判斷等,那就需要用運行腳本了。
  比如這樣:
 
ExecStart=/root/myweb/start.sh
ExecReload=/root/myweb/restart.sh
ExecStop=/root/myweb/stop.sh
 
注意,作為服務腳本而言,第一行必須是 #! 開頭的,這不是註釋,而是標明這個腳本是由哪個shell來執行,不可或缺,否則會報錯。 例如我們常見到的:#!/bin/bash,這裡舉出一個sh腳本的例子:
 
#!/bin/bash
forever start ./bin/www
 
(此腳本自動執行node.js的forever,作用是將nodejs製成的網站置於背景執行)
 
不管用哪一種方法,反正最終能用syetemctl控制啟動、停止、重啟就可以了:
 
systemctl start rockage (啟動)
systemctl stop rockage (停止)
systemctl restart rockage (重啟)
 
正確無誤,不報錯,啟停正常後,可以將這個服務寫入開機啟動項目:
 
systemctl enable rockage
 
或取消開機啟動:
 
systemctl disable rockage
 
查看服務狀態:
 
systemctl status rockage
 
查看所有已啟動的服務
 
systemctl list-units --type=service
 
一個不太常見的坑:
 
      如果系統總是回報這個錯誤:
       [/usr/lib/systemd/system/rockage.service:5] Missing '='.
      多半是由於文件沒有以utf8保存導致。
      這種情況下,隨便在/usr/lib/systemd/system/目錄下找個"模板", cp 複製成你的文件,再編輯就好
 
-----------------------------------------------

沒有留言:

張貼留言

(Centos-7s) 更新: 網卡名稱改回 eth0 的方法

將 CentOS 7 網卡名稱修改, 用回 Eth0 的方法:   1) # vi /etc/sysconfig/grub 內容大概是這樣:   GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release...