Virtual Box虛擬機器Ubuntu18.X系統安裝及Mysql基本開發配置
Linux簡介
什麼是 Linux?
Linux:世界上不僅只有一個 Windows 作業系統,還有 Linux、mac、Unix 等作業系統。桌面作業系統下 Windows 是霸主,而 Linux 的桌面作業系統用的人很少,因為 Windows 有的很多軟體在 Linux 下沒有或者很弱;伺服器作業系統則反之。Linux 有一個強大的伺服器軟體生態系統:Docker、Redis、MySQL、Nginx、Hadoop 等等。
Linux 和 Windows 有哪些不一樣?
- 使用 Windows 傾向於 GUI 操作,Linux 雖然也可以安裝圖形介面,但是 Linux 傾向於命令列操作。用 Linux 就要用命令提示符操作,命令列操作的優點慢慢就會體會了(可以自動化、可以精確控制、可以組合命令)。
- 底層 api 不一樣,因此可執行程式不互通;有一些軟體同時在 windows 和 linux 下作了移植;
- windows 下的命令到了 linux 下不一定能用;
- windows 下主要根據檔案的副檔名區分檔案型別,linux 中可以沒有副檔名;
- Linux 不同版本使用方法、配置檔案可能變化很大,要自己查、反覆試;
- 易錯的地方:Linux 中檔名是區分大小寫的
Linux 核心和 Linux 發行版
Linux 核心由 Linus 及開源社群維護,核心包含記憶體管理、儲存管理、程序管理、網路通訊等基礎模組。很多公司、開源組織基於 Linux 核心打包出了很多“發行版”,不同的發行版的核心版本可能不一致,包含的軟體也不一致,介面差別較大,但是命令列操作都是互通的,大部分程式也是互通的。
核心和發行版的關係就像 Android 核心和“小米手機系統、華為手機系統”的關係一樣。
常用的發行版有 RedHat、CentOS、Debian、Ubuntu 等等。這裡我們用 Ubuntu,因為 Ubuntu 內建的軟體最適合程式設計師,其他發行版要自己裝。當然也有一些人鑽木取火的人瞧不起用Ubuntu 的人。
虛擬機器
什麼是虛擬機器?
使用 Linux 最好是在計算機上直接安裝 Linux 系統,最起碼也是雙系統啟動。不過擔心初學者搞砸了自己的電腦,而且 Linux 不太適合日常使用。因此我們使用虛擬機器軟體在
Windows 上虛擬出一臺電腦出來,在這臺虛擬的電腦上安裝 Linux。
使用虛擬機器的好處:不破壞物理電腦是,隨便搞。壞處:不真實、操作卡。
Windows 下的虛擬機器軟體有 VMWare、Virtual Box、HypverV 等。這裡我們使用開源免費的 Virtual Box。
電腦如果配置太差跑不起虛擬機器,只能升級電腦,加記憶體就差不多。
Virtual Box 的安裝
- 下載地址:https://www.virtualbox.org/
- 一路 Next 就可以。
-
新建一個虛擬機器
需要選 64 位 Ubuntu,不要選成 32 位,因為一些軟體不支援 32 位系統。 如果不能選擇 32 位的版本,那麼說明你的電腦主機板沒有啟用虛擬化,需要進入電腦 bios 設定啟用虛擬化。不同版本主機板的啟用虛擬化的方法不一樣,具體請根據你主機板的型號去網上搜索。有部分老電腦主機板不支援虛擬化,這就沒辦法了
- 虛擬電腦記憶體至少 2G 才不卡
- 建立虛擬硬碟
- 配置虛擬機器,載入 iso 虛擬光碟檔案
有的同學執行 VirtualBox 的時候會出現“該記憶體不能為 writtern”的錯誤,請看後續的“虛擬機器故障排除”這一章。
下載 Ubuntu 的 iso 檔案
- 下載 Desktop 版(Desktop 版是內建了圖形介面以及常用桌面軟體;Server 版預設沒有安裝圖形介面。當然也可以在 Server 版裝圖形介面。)。
如果在物理機上安裝,只要用 UltraISO 等軟體把 iso 刻錄到光碟上或者製作可啟動 U 盤就可以。
-
把 iso 檔案載入到光碟機中(相當於 Linux 安裝光碟插入光碟機),然後啟動虛擬機器
直到執行到 Linux 安裝畫面
啟動虛擬機器的時候如何截圖?用 windows 的“截圖工具”。
安裝 Linux
我測試環境密碼用的是 123456,一定要把使用者名稱和密碼記住!有一些發行版是禁止簡單密碼的。
記得把光碟從光碟機中取出(解除安裝 iso 檔案),防止再次安裝系統。
虛擬機器故障解決
VirtualBox 的時候會出現“該記憶體不能為 writtern”的錯誤
可以依次嘗試下面的方法,哪個解決了就不用再試其他的方法了:
方法 1:
- 首先確保虛擬機器中的系統處於關機狀態,如果沒有關機,則在終端中執行“shutdown now” 關機。
-
開啟 VirtualBox 主程式,開啟虛擬機器的【設定】勾選【系統】→【處理器】中的【啟用 PAE】
方法 2:在 VirtualBox 管理器的主選單【管理】→【全域性設定】去掉【熱鍵】中的【自動獨佔鍵盤】中的勾去掉。
方法 3:在你的 windows 系統中,以管理員許可權執行 cmd,執行 sfc /scannow,執行完成後重啟電腦。
配置 Linux
輸入安裝 Linux 時候設定的密碼
圖形化的程式儘量不要用。在桌面上點右鍵→開啟終端。在很多生產伺服器下,是沒有裝圖形化程式的,就是直接命令列介面操作,根本就進不了圖形介面。
儘量不要用圖形介面,所有操作都可以在“終端”中完成。因此後續操作都儘量在“終端”中進行。也忘了滑鼠,別妄想在終端中用滑鼠。不要想“終端中聽歌、看電影、上網”,場景不對。
使用習慣
其實是可以“共享資料夾”在虛擬機器和宿主機之間共享檔案等操作。但是虛擬機器使用 linux 的時候,不要想著還有“宿主機(Host)”,不要想著怎麼“共享資料夾”,就把當成兩臺電腦就可以。共享檔案的方式就通過經典的 ftp 跨伺服器的等方式,就像兩臺電腦一樣。
可以“共享貼上板”,但是別這麼懶,那就是一臺單獨的電腦,你怎麼複製貼上? 虛擬硬碟、虛擬光碟(iso)、虛擬記憶體、虛擬 cpu。虛擬出來的電腦和主機(Host)之間沒有直接的聯絡,也不會互相干擾。
備份
VBox 安裝完成後可以做一個“備份”(主選單【控制】→【生成備份】),這樣萬一把虛機系統搞亂了還可以還原回來,可以建立多個“備份”,相當於“還原點”。
鎖屏
為了避免反覆鎖屏,在設定→亮度和鎖屏中關閉“鎖屏”;VBox 視窗可以調整大小,虛擬機器中的系統會自動調整解析度,有的電腦不支援。
網絡卡
虛擬機器的網絡卡有時候會有問題連不上網,這時候就要在虛擬機器的設定中先取消網絡卡再重新選擇網絡卡,相當於插拔網線。
Linux 的基本命令
檔案操作
- Windows 是多根的檔案系統,物理上是 1 到多塊硬碟,邏輯上分為 C、D、E……盤,每個盤都是一棵樹。Linux 是單根的檔案系統,不分 CDE 盤,多塊硬碟/U 盤/光碟也是相當於多個資料夾。不同硬碟/U 盤/光碟對應的資料夾叫做“掛載點”,把外部儲存裝置放到檔案系統樹的過程又叫做“掛載(mount)”
- Linux 下無論是檔案還是命令都是大小寫敏感的。
- 小白說“資料夾”,專業人士說“目錄”(Directory)
Linux 常用根目錄的作用
- boot 存放用於系統引導時使用的各種檔案
- bin 存放二進位制可執行檔案(ls,cat,mkdir 等)
- sbin 存放二進位制可執行檔案,只有 root 才能訪問
- usr 用於存放系統應用程式,比較重要的目錄/usr/local 本地管理員軟體安裝目錄
- opt 額外安裝的可選應用程式包所放置的位置
- dev 用於存放裝置檔案
- etc 存放系統配置檔案
- home 存放所有使用者檔案的根目錄
- lib 存放跟檔案系統中的程式執行所需要的共享庫及核心模組
- tmp 用於存放各種臨時檔案
- var 用於存放執行時需要改變資料的檔案
- mnt 安裝臨時檔案系統的安裝點
常用檔案操作命令
- 工作目錄(working directory)就是“當前目錄” l 顯示當前工作目錄 pwd (print work directory)
- 顯示當前目錄下的檔案、目錄 ls 或者 dir
- 切換工作目錄 cd (Change Directory):cd ./test 切換工作目錄到當前目錄下的 test 目錄(cd 後不要忘了空格);cd .. 到上一級目錄;cd /很顯然就是返回根目錄
- 新建目錄 mkdir (Make Directory):mkdir test 有的系統目錄下是沒有許可權建立資料夾的。使用者的檔案一般放到 home 的自己的使用者名稱下
- 刪除目錄:rmdir (Remove Directory) 刪除空目錄;rm(Remove)刪除檔案;rm -r testA 刪除目錄及其下所有檔案(-r 就是 recursive 的簡寫。*坑人的指令:rm -rf /)。
- mv 移動檔案
- cp 複製檔案
- 檢視文字檔案內容:cat(一下子全顯示,適合小檔案);more(分頁顯示,q 退出)
- 查詢檔案:find -name 'a*' 在當前目錄下查詢檔名以 a 開始的檔案。不要丟了''
其他常用命令
- ps 檢視當前使用者當前執行的程序;檢視所有執行中的程序 ps –ef
- reboot 重啟 7、 shutdown now立即關機(備註:課程中寫錯了,寫成了shutdown –now,應該是shutdown now)
- 退出終端:exit
- clear 清理當前顯示或者快捷鍵:ctrl+L
- 上下鍵可以快速恢復歷史命令。可以通過 tab 鍵完成當前目錄下檔案或者子目錄的自動填充,如果遇到多個前一部分一樣的會自動完成一樣的前一部分。ctrl+c 取消當前輸入的命令重新開始。
- tar 命令,將資料夾打包成一個檔案,同時可進行壓縮命令格式,打包 tar -c -f 歸檔檔案 需要打包的檔案,解開 tar -x -C 解開到指定目錄 -f 歸檔檔案
- man 命令,各個命令的手冊,比如 man dir;按 q 退出。linux 命令非常多、引數非常多,只要會搜就行,慢慢記住的越來越多。
- Linux 管道命令:一個軟體或一個命令 要想完成一件事情,通常都需要輸入原始資料 , 處理後 , 再把處理的結果輸出到一個地方(儲存到檔案或者顯示在螢幕上),Linux 的管道是這樣一個東西,它可以把上一個命令的處理結果作為下一個命令的輸入資料,供下一個命令使用。例如:ps -ef | grep bashnetstat -a | more 3) 因此 cat 1.txt|more 也可以達到 more 1.txt 的效果
-
sudo:基於安全考慮,一般不建議使用超級使用者許可權登入 linux;而是平時使用低許可權使用者訪問,需要高許可權的操作再用 sudo 後跟著指令。比如在/下無法建立資料夾,但是 sudo mkdir a 就可以,當然需要輸入密碼。su 就是“super user”的簡寫,sudo 就是“用超級使用者許可權執行命令”
VI 編輯器
VI 簡介
如果使用 linux 桌面,也有一些圖形化文字編輯器(類似於記事本),但 linux 的神級編輯器是 vi,如果連 vi 都不會用就別說會用 linux。
在很多環境下是沒有圖形介面的,只能用 vi。VI 是全鍵盤操作,不能用滑鼠。當然日常開發還是在圖形介面下使用 VS 等開發,使用 vi 一般是進行簡單的修改或者配置檔案的修改。
vi 剛接觸感覺很痛苦,用熟了也挺爽的,vi 命令非常多,初學掌握基本的操作即可。vim 是 vi 的加強版。
vi 的執行模式
命令模式下可以進行行刪除等命令的輸入(相當於快鍵鍵);插入模式下可以進行文字的輸入;末行模式下是執行儲存、退出等指令用。 易混:插入模式下如果直接輸入:就是輸入:了,因此要先 esc 退出插入模式
末行模式的指令
- :wq 儲存然後退出 w→write,q→quit 如果是“vi 檔名”方式執行的,則直接寫入到指定的檔名中,否則要“:wq 檔名”。
- :q! 不儲存退出
- :w 儲存不退出
- 在末行模式中輸入“!shell 指令”可以不離開 vi 執行 shell 指令
命令模式的命令
- 移動輸入游標,不能在插入模式下按上下左右鍵。要 esc 先回到命令模式下;
- shift+^移到行首;shift +$移到行尾。聯想一下正則表示式中就好記了;
- ctrl+b:上滾一屏;ctrl+f 下滾一屏; b→backward;f→forward
- dd:刪除當前一行;x 刪除當前字元
- 撤銷:上一次的操作 u;undo 的簡寫
- o:在當前行下新增一行(因為如果移動到行尾再回車的話還是在最後一個字元前回車)自動進入插入模式。
- i:在當前游標前面插入,a:在當前游標後面插入。a→append(附加)也是自動進入插入模式。
還有一個傻瓜化字元介面編輯器 nano,底下提示資訊中^X 的意思就是 ctrl+X。不是每個Linux 上都安裝 nano,有時候需要自己裝。
軟體的安裝
linux 下很多軟體都是自己下載原始碼、自己編譯的,有點痛苦。因此很多發行版都有自己的安裝包格式。比如 RedHat 使用*.rpm 的檔案,Ubuntu 使用*.deb 檔案。
自己查詢、下載安裝還是很麻煩。因此很多發行版中都提供了類似於應用市場、NuGet 的東西。
Ubuntu 推薦使用 apt 進行下載、安裝。會從 ubuntu 官網下載(中國區映象),如果下載速度慢的話,可以設定從其他映象下載,具體搜尋“Ubuntu apt-get 映象” 執行某些程式的時候,如果程式沒安裝,還會提示你,比如執行 vim、tree 等。
安裝軟體需要 sudo 執行。如下:
- 安裝 “sudo apt-get install 程式名”,比如“sudo apt-get install vim”
- 解除安裝“sudo apt-get remove 程式名”
重要配置
網路配置
- 使用 ifconfig 命令檢視網路配置資訊,檢視 ip 地址和網絡卡實體地址(MAC 地址)要先執行 sudo apt install net-tools 命令安裝 net-tools
-
虛擬機器和主機之間組建了一個區域網,虛擬機器通過主機上網。虛擬機器的設定的“網路”中可以設定不同的連線方式。主機可以通過 ifconfig 看到的 ip 地址連線虛擬機器的網路。
-
虛擬機器的網路連線方式有很多種,最主要有三種:HostOnly 、NAT、橋接(Bridge)。HostOnly 配置較麻煩,需要懂很多網路工程的東西;NAT 是虛擬機器藉助於主機網絡卡訪問網路,藏在主機後面,網路中其他裝置不能這個虛擬機器,連主機都不能,但是虛擬機器能連線主機的網路,能上外網;橋接(Bridge)方式則是把虛擬主機也暴露為網路中的一個裝置,主機和虛擬主機在網路內是平等的,可以互相訪問,但是要求網路中沒有裝置訪問的限制(比如 Mac 地址繫結或者終端個數限制),如果有限制要改路由器的配置。因為咱們需要主機和虛擬機器互相訪問,除非網路有限制,否則最好配置為橋接(Bridge),配置橋接(Bridge)要選擇通過哪個網絡卡上外網,不能選錯了,否則就無法訪問外網了。後面我們都配置為橋接(Bridge)。
-
虛擬機器的 ip 地址可能變化,注意。
SSH 服務
運維人員是怎麼遠端連線到機房上的伺服器,很少使用圖形介面(卡,無法自動化)遠端登入有專門的通訊協議 telnet, telnet 就是通過網路進行命令列操作伺服器。只有伺服器端開始了遠端登入服務,客戶端才能通過 telnet 協議控制伺服器端。
但 telnet 協議使用明文傳輸資料,這會造成嚴重的安全性問題,所以現在幾乎不推薦使用, 而替代協議是 SSH。SSH 通訊過程資料是加密的。
Linux 安裝使用 OpenSSH
- Ubuntu 預設只安裝了客戶端 openssh-client
- 安裝伺服器: sudo apt-get install openssh-server
- 檢視伺服器是否開啟:netstat -tlp
- 啟動 sudo /etc/init.d/ssh start
- 重啟 sudo /etc/init.d/ssh restart
- ssh 服務預設埠 22,可通過修改配置檔案修改埠/etc/ssh/sshd_config
windows 下如何通過 ssh 連線到 linux :下載執行 putty,免安裝。
linux下重啟網路服務: /etc/init.d/network restart 或者是 /etc/init.d/networking restart
putty登入SSH終端出現的“Access Denied”提示:只要在Putty的configuration裡面Connection-》SSH-》Auth【認證】-》GSSAPI的配置中,去掉預設的Attempt GSSAPI authentication(ssh-2 only) 一項前面的對勾
如果顯示中文亂碼,則在 putty 標題欄點選右鍵,選【change settings】點【Translation】,選 UTF8 編碼
新顯示會不亂碼,舊顯示還會亂碼。
後續都通過 ssh 連線操作,這也是平時連線伺服器時候的常規操作:windows 下開發,然後部署到 linux 下執行。
使用 mysql
安裝 mysql 伺服器
- sudo apt-get install mysql-server
- 根據提示設定 root 使用者的密碼,測試時候設定為 123456(安裝mysql5.7未提示輸入密碼,安裝後修改mysql密碼預設密碼)
- sudo apt-get install mysql-client 安裝管理客戶端
- mysql -uroot -p123456 通過管理 客戶端連線 mysql,如果不報錯就 ok。mysql –u 使用者名稱 –p 密碼。mysql –uroot –p123456
- mysql 客戶端中執行(不要在 shell 中直接執行)show databases;(不要丟了結尾的英文分號)檢視有哪些資料庫; 執行一下 select now();正確執行。執行“quit;” 退出 mysql 客戶端。
- 基於安全考慮,mysql 預設只能本機連線。如果想通過其他電腦連線(比如主機訪問虛擬機器中的 mysql),就需要配置。最好不要配置成任意電腦都可以連線,因為危險。要配置成只允許某些 ip 訪問。
設定Mysql密碼
- 進入到etc/mysql 目錄下,檢視debian.cnf檔案 sudo cat /etc/mysql/debian.cnf
- 找到使用者名稱,密碼 ,使用此賬號登入mysql
使用者名稱:debian-sys-maint
密碼:BdA9Uyv0QDfFlzuP
登入:mysql -udebian-sys-maint -pBdA9Uyv0QDfFlzuP
- 修改root使用者的的密碼這裡是關鍵點,由於mysql5.7沒有password欄位,密碼儲存在authentication_string欄位中,password()方法還能用在mysql中執行下面語句修改密碼
use mysql; // 下面這句命令有點長,請注意。 update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost'; update user set plugin="mysql_native_password"; flush privileges; quit;
- 修改完密碼,需要重啟mysql
/etc/init.d/mysql restart;//或者sudo service mysql restart
- 再次登入mysql -u root -p密碼;
- 解除安裝:
sudo apt purge mysql-* sudo rm -rf /etc/mysql/ /var/lib/mysql sudo apt autoremove
- 安裝:
# 安裝的時候會提示要設定root密碼,如果你沒有在解除安裝的時候去清理殘留資料是不會提示你去設定root密碼的 ,我的就沒提示,可以用上面的方法修改密碼 sudo apt-get install mysql-client mysql-server #檢查mysql是不是在執行 sudo service mysql status #一般安裝完成之後都是會自動執行的,如果沒有執行可以start sudo service mysql start
配置 MySQL 遠端訪問(需要網路配置為橋接網路)
- 編輯 mysql 的配置檔案 mysqld.cnf ,由於 mysql 是系統服務,因此需要以 su 執行 vi,才有許可權,執行 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 。由於不同 mysql 版本配置檔案的位置可能不一樣,因此最好的找路徑的方式就是 cd、dir 一級級的看看。(linux 下不同版本差異性很大,之前查資料都是改/etc/mysql /conf.d/mysql.cnf,但是使用 status;命令查詢 mysql 版本之後搜尋“mysql 5.7 遠端訪問”才找到正確的做法。)
- 把 bind-address = 127.0.0.1 註釋掉。
- 執行 sudo /etc/init.d/mysql restart 重啟mysql服務
- 在主機上執行 ifconfig (Linux下是ifconfig、Windows下是ipconfig),檢視主機的ip 地址是多少(別看錯了,也別看成虛擬機器的ip),假如是192.168.0.11
- 執行 mysql -uroot -p123456 (-u後面的是使用者名稱、-p後面的是密碼,根據你的配置做修改。不要在-u和-p輸入空格)進入mysql伺服器後
- 執行 grant all privileges on *.* to root@"192.168.0.11" identified by "這裡換成密碼" with grant option; 注意:不要丟了末尾的分號,不要直接在命令列下輸入,要進入mysql再執行。
- 再執行 flush privileges; 注意:不要丟了末尾的分號,不要直接在命令列下輸入,要進入mysql再執行。
主機上連線虛擬機器內的 mysql 一定要連線虛擬機器的 ip,別連錯了。
主機的 ip 如果變了就要重新配置。
安裝vsftp伺服器
安裝
什麼是 ftp。通過 ftp 進行檔案的上傳下載
執行 sudo apt-get install vsftpd 命令進行安裝
配置
這時候可以用 linux 使用者登入,能夠訪問/home/使用者名稱的資料夾下。但是沒有上傳許可權。需要 sudo vi /etc/vsftpd.conf 將 write_enable=YES 前面的#取消,然後執行 sudo /etc/init.d/vsftpd restart 重啟
Windows 下可以使用 FileZilla FTP Client 等 FTP 客戶端上傳下載
中文會有亂碼,不用處理,上傳下載比較多的檔案都壓縮。linux 解壓使用 unzip“unzip a.zip”。不要傳 rar 等格式。