目錄 1.Centos7操作系統 2.Gnome 可視化桌面 3.遠程shell工具 4.遠程桌面工具 5.Jdk 6..Net Core 7.Git 8.Docker 容器 9.Kubernetes 自動化部署 10.Jenkins 持續集成 11.VSCode 總結 1.Centos7操作系統 ...
目錄
1.Centos7操作系統
2.Gnome 可視化桌面
3.遠程shell工具
4.遠程桌面工具
5.Jdk
6..Net Core
7.Git
8.Docker 容器
9.Kubernetes 自動化部署
10.Jenkins 持續集成
11.VSCode
總結
1.Centos7操作系統
1.1 雜談
本教程基於linux系統,我安裝的是Centos 7,在VMware虛擬機中運行。
1. 關於虛擬機平臺:Hype-V 與 VMware
普遍最常用的是VMware,後來我在本地電腦中安裝Docker(一種容器)之後,win10系統便自動開啟了 Hype-V,它與VMware競爭關係,開啟後便不能啟動VMware。
於是我上手開始用Hype-V搭建虛擬機,安裝Centos 7比較順利,但是網路調試和可視化桌面遇到了問題。
先簡單演示一下 win10 開啟 Hype-V 的方式,直接上圖:
先談網路:
VMware 支持 NAT (VMnet8) 、 Bridge(VMnet0) 、 Host-Only(VMnet1)
NAT 最簡單,他是由本地電腦分配的網路,共用同一個IP。
Bridge 是直接訪問硬體網卡,簡單說就是虛擬機走獨立的網路。
最直觀的表現就是,如果你們公司上網需要到瀏覽器登錄一下獲取動態分配的ip的話,那如果你用bridge時,你同樣也需要在瀏覽器裡面用賬號登錄一次,分配另一個IP,NAT則不需要。
這樣就遇到了一個問題,bridge方式聯網的時候你需要有可視化桌面,有瀏覽器,你才能上網。(當然你如果會直接使用shell模擬瀏覽器登錄獲取ip的話那你也可以上網)
而 Hype-V 與 VMware 不同,不可選聯網方式,只可以選要使用的網卡。我選擇網卡以後,發現它只有內網ip,不能訪問外網,顯然就是bridge的聯網方式。但是我們公司必須使用瀏覽器上網,於是我開啟了安裝可視化桌面之路。下文將會介紹(安裝GNome)。當我安裝完以後,發現Hype-V虛擬機桌面無法進入。多次嘗試仍然無效。於是我放棄了Hype-V, 關閉該功能,使用VMware 虛擬機。
所以我最終的選擇是VMware虛擬機。
2. 關於操作系統
之前聽說Centos是最穩定的Linux系統,與RedHat最接近,簡單說就是RedHat的免費版,而RedHat是提供商業支持的系統。
Centos6.5 和 Centos7 等差別比較大。我選擇了後者。
1.2 上手
上面我已經提到了因為Hype-V的一些坑,我選擇了 VMware。相信大家對它也比較熟悉。以下簡單介紹。
上圖中展示了我虛擬機的配置。有一些點需要註意一下:
光碟機鏡像: 網上下載系統iso鏡像,然後裝載到虛擬機。
硬碟:這個比較重要,通常來說5G肯定是不夠的,而且linux擴展硬碟比較複雜,如果你安裝完系統以後再擴容需要做大量的設置,所以我建議剛開始就將硬碟做大一點,後期如果不夠用的話再擴容,而不是剛裝完系統你就要擴容。擴容中的坑,我後續會補充。
網路: 我上面已經講到了,NAT較為簡單,我選擇了NAT。下麵我談一下網路的配置。
那麼為什麼網關ip配置成 192.168.23.2 呢,請打開本地電腦的網路共用中心,入下圖。
通俗解釋就是,VMware軟體自動建造了一個虛擬網卡,連到這個網卡上的電腦都在一個子網(192.168.23.0)中。其中192.168.23.1 被你自己的硬體電腦用了,192.168.23.2是網關,其它的是給你的虛擬機用的。
如果你不相信,請你打開CMD 視窗,輸入 ipconfig。如下圖,
在談一談 DHCP ,如下圖,一旦你給dhcp打鉤以後你就不需要給虛擬機設置ip地址了,這個DHCP就幫你完成了。你同時可以設置分配的ip的區間段,如圖:
NAT 設置完成,接下來我們擴展一下,看一看如果選擇另外兩種上網方式:
Host- only (僅主機):
你剛剛應該已經發現了,這裡還有一個網路,192.168.80.0 子網,這正是“僅主機模式”,你會發現用這種網路的話你的虛擬機只能ping同你的電腦,而不能上外網,不能ping通公司內其他同事的電腦,這就是“僅主機”,你還需要別的網路共用的方式才能上網。
Bridge(橋接):
這裡什麼都不需要你配置 ,你只需要選擇一個能用的網卡,這裡面有很多虛擬網卡是不能用的,可能是你安裝別的軟體的時候自動建出來的。選完以後,你的虛擬機和你的電腦就是獨立開了,虛擬機的ip是由你家裡的路由器或者你們公司的dhcp來分配的,與你的電腦就無關了,你的電腦僅僅是為它提供了一張網卡。
還要在說一下,這個虛擬網路編輯器的視窗僅僅是用來設置網路的。最終你的虛擬機要選擇哪一種方式,需要你到“虛擬機設置”中選擇,就和你選擇多大記憶體一樣簡單。So easy 是不是!
接下來就是安裝操作系統了。你要認得 “install” 這個單詞是“安裝”的意思就好辦了。我就不介紹了,總之就是很簡單了。
分區的時候預設分區就好了,過程中你設置一下root密碼,然後可以在建一個別的賬號。
你最好是連同可視化桌面一起安裝,如果你沒有安卓桌面的話,我接下來將介紹如何安裝(前提是你的網路是通的,ping www.baidu.com)
如果你的網路還是不通的話,可能虛擬要你在安裝好的linux 中配置一下網卡了。請自行百度,或者評論留言。下圖是我網卡的配置:
用 “ifconfig” 或者 “ip addr” 可以查看ip地址
檢查網路沒問題:
可視化桌面也可以這樣查看ip:
2.Gnome 可視化桌面
2.1 雜談
談一下為什麼要安裝可視化桌面呢?
第一,用慣了windows系統,還是希望出差錯的時候也能點一下滑鼠的,雖然這個桌面要消耗我將近一個多G的硬碟空間。
第二,下載東西方便一點,可以進瀏覽器裡面下載一些安裝包,雖然我們大多數情況都是用yum直接安裝的。
第三,我打算試試linux編程,安裝 VS Code,上手在linux中加斷點調試代碼,自然只用命令行是不行的,雖然後來我也放棄了這種方式,我還是覺得VS Stutio要好用的多,不過我還是要演示一下我的踩坑過程。
2.1 上手
更新grub2,是因為我在後來安裝Gnome的時候遇到了與grub2 “衝突” 的坑,所以我建議你提前就更新一下。
yum update grub2-common
安裝,每次它提示是否確認下載,確認安裝的時候,都輸入 “y”
yum groupinstall "X Window System" yum groupinstall "GNOME Desktop"
檢查預設啟動方式,get:
systemctl get-default
返回結果一定不是 graphical.target,那就設置一下咯。set:
systemctl set-default graphical.target
我個人認為這個比較容易,遇到坑的話可以找一下更為詳細的教程,就可以完成。
然後重啟虛擬機
reboot
3.遠程shell工具
這個工具是安裝在你的windows本地電腦上的
安裝目的: 如果你的linux伺服器不是你本地的虛擬機,而是機房伺服器或者雲伺服器的話,那你是不能通過VMWare來操作它的。只能用遠程來操作。
工具重量很多,我介紹一個我常用的:SecureCRT
SecureFX 工具可以傳輸文件,通常和SecureCRT集成。這倆如果沒有集成的話,需要你單獨下載。
4.遠程桌面工具
4.1 linux上安裝 VNC-Server
安裝
yum -y install tigervnc-server
配置
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
設置VNC密碼
vncpasswd
重啟systemd
systemctl daemon-reload
設置永久開啟VNC服務
systemctl enable vncserver@:1.service
啟動VNC服務
systemctl start vncserver@:1.service
如遇報錯:
Job for vncserver@:1.service failed because the control process exited with error code. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.
編輯/etc/systemd/system/vncserver@:1.service配置文件:
將Type=forking改為Type=simple
重新啟動VNC服務
systemctl restart vncserver@:1.service
查看VNC服務狀態
systemctl status vncserver@:1.service
如有Activie:failed則表示啟動失敗
編輯配置文件:
vim /etc/systemd/system/vncserver@:1.service
將裡面所有的<USER>替換為當前用戶名(大致有兩處),如root;另,如果是root用戶,應將PIDFile的/home/root改為/root
重新啟動VNC服務
這裡可能會遇到錯誤,當執行start vncserver@:1.service時可能提示如下錯誤。
Job for vncserver@:1.service failed because the control process exited with error code. See
"systemctl status vncserver@:1.service" and "journalctl -xe" for details.
解決辦法
刪除/tmp/.X11-unix/ 目錄
rm -rf /tmp/.X11-unix/
再啟用一次即可
systemctl restart vncserver@:1.service
開啟防火牆5901埠,重啟防火牆服務
firewall-cmd --zone=public --add-port=5901/tcp --permanent systemctl restart firewalld.service
查看埠狀態
netstat -lntp netstat -lnp|grep 5901
4.2 本地電腦安裝客戶端 VNC-Viewer
下載地址: http://download.canadiancontent.net/VNC_Viewer.html
下載以後可以直接運行,無需安裝
當它提示需要你輸入密碼的時候,輸入你剛剛在 VNC-Server 中設置的密碼即可。
登錄系統,完成。
5.Jdk
為什麼要安裝Jdk呢,我們不是要做.net開發嗎,那是因為我們接下來要用的Jenkins是需要運行在java環境下,我不確定只安裝jrm是否可行,所以直接安裝了jdk
網路上安裝教程比較多,推薦: https://www.cnblogs.com/sxdcgaq8080/p/7492426.html
我安裝了最新的版本 jdk12, 但是後來安裝Jenkins的時候發現不支持jdk12,因為版本太高了,我老老實實重新安裝了jdk8
需要測試一下java環境是否可用:
java -version
同時要創建軟鏈接
ln -s /usr/local/java/jdk1.8.0_171/bin/java /usr/bin/java
6..Net Core
6.1 安裝.netCore
官方鏈接: https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
記得選擇你的操作系統,我選的是CentOS
獲取包
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
升級更新已安裝的包,並安裝.netcore
sudo yum update sudo yum install dotnet-sdk-2.2
6.2 安裝nodejs
由於需要做web開發,所以我打算提前安裝 nodejs
首先下載安裝包
我用windows瀏覽器訪問的時候沒有找到如何下載linux安裝包,於是我用linux瀏覽器訪問,找到了,如下圖。當然你也可以直接用 wget 命令下載。
下載推薦版本,而非最新版本,你懂得。
下載完成尾碼是 .tar.xz, 用下麵的方式解壓,據說,使用這種壓縮方式的原因是壓縮後文件更小。
xz -d node-v10.16.0-linux-x64.tar.xz tar -xvf node-v10.16.0-linux-x64.tar
創建映射軟鏈接/usr/bin 指向 解壓文件夾,指令:
ln -s /usr/local/src/node-v10.16.0-linux-x64/bin/node /usr/bin/node ln -s /usr/local/src/node-v10.16.0-linux-x64/bin/npm /usr/bin/npm
檢查安裝狀態
node -v
npm
7.Git
$ yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel $ yum -y install git-core $ git --version git version 1.7.1
8.Docker 容器
移除舊的版本:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安裝一些必要的系統工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加軟體源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 緩存:
sudo yum makecache fast
安裝 Docker-ce:
sudo yum -y install docker-ce
啟動 Docker 後臺服務
sudo systemctl start docker
測試運行 hello-world
docker run hello-world
9.Kubernetes 自動化部署
這一節,我目前就先不寫了,因為目前還用不到分散式,當我再今後的文章中用到分散式的時候一定會來修補的。畢竟我是完美主義,用盡所有的工具讓開發運維簡單化。
好吧,我承認,我以前也沒有用過這個東西,但是我目前不想學了,等我用到的時候一定會來學的。
10.Jenkins 持續集成
安裝
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install jenkins
配置
vim /etc/sysconfig/jenkins
#監聽埠
JENKINS_PORT="8080"
#修改配置
JENKINS_USER="root"
修改目錄許可權
chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins
重啟
service jenkins restart ps -ef | grep jenkins
啟動
systemctl start jenkins
如果啟動失敗,報錯找不到 /usr/bin/java ,需要創建Jdk軟鏈接
開啟防火牆8080埠,重啟防火牆服務
firewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld.service
查看埠狀態
netstat -lntp
netstat -lnp|grep 8080
查看Jenkins密碼:
cat /var/lib/jenkins/secrets/initialAdminPassword
遠程訪問該電腦 http://ip:8080,即可進入Jenkins
11.VSCode
安裝
yum check-update sudo yum install code
設為預設編輯器
xdg-mime default code.desktop text/plain
官網地址:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions
接下來,怎麼啟動VSCode呢。找到他的路徑,然後拷貝到桌面,即可。
它的實際安裝路徑其實是這裡:
其實你也可以不用找到它的路徑,而是用這種方式:
或者你也可以在VSCode中選擇要打開的項目:
大功告成。
我感覺使用調試時不是很方便,不是很流暢,後來我還是選擇用windows上的VS Studio來編譯。
同時VS Studio也會有自帶的單元測試功能等,VSCode 是一個輕量級的編譯器,你需要什麼功能的話需要添加插件等。
總結
我上文中提到了持續集成工具,主要的目的就是為了我方便將代碼從Windows高效同步到linux中。代碼自動化部署。降低了運維成本等。
所以我今後的實戰都將會把本地windows作為開發環境,linux作為生產環境。
同時linux可能不止一臺,以後會談到微服務以及分散式的問題,docker容器就發揮上用場了,一切為了簡化部署。