(一)配置linux環境實現持續集成

==>>點擊查看本系列文章目錄

 

目錄

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虛擬機中運行。html

1. 關於虛擬機平臺:Hype-V 與 VMwarejava

  廣泛最經常使用的是VMware,後來我在本地計算機中安裝Docker(一種容器)以後,win10系統便自動開啓了 Hype-V,它與VMware競爭關係,開啓後便不能啓動VMware。node

  因而我上手開始用Hype-V搭建虛擬機,安裝Centos 7比較順利,可是網絡調試和可視化桌面遇到了問題。linux

  先簡單演示一下 win10 開啓 Hype-V 的方式,直接上圖:git

  

  

  

  先談網絡:web

  VMware 支持 NAT (VMnet8) 、 Bridge(VMnet0) 、 Host-Only(VMnet1)docker

  NAT 最簡單,他是由本地計算機分配的網絡,共享同一個IP。shell

  Bridge 是直接訪問硬件網卡,簡單說就是虛擬機走獨立的網絡。npm

  最直觀的表現就是,若是大家公司上網須要到瀏覽器登陸一下獲取動態分配的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/vncserver@.service /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

網絡上安裝教程比較多,推薦: http://www.javashuo.com/article/p-etonwsum-gu.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 

首先下載安裝包

 官網下載:https://nodejs.org/en/

我用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容器就發揮上用場了,一切爲了簡化部署。 

相關文章
相關標籤/搜索