單純地記錄一下烛缔,后面會(huì)持續(xù)補(bǔ)充和總結(jié)
基本環(huán)境
阿里云
CentOS版本: CentOS Linux release 7.2.1511 (Core)
cat /etc/centos-release
linux安裝git
yum -y install git
linux安裝node
- 遠(yuǎn)程安裝 node-v10.13.0
wget -c https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0-linux-x64.tar.xz
- 解壓node安裝包
tar -xvf node-v10.13.0-linux-x64.tar.xz
- 將解壓后的文件重命名為
nodejs
, 然后放到/usr/sbin文件夾下
/usr/bin 系統(tǒng)預(yù)設(shè)的可執(zhí)行文件闻丑,如開(kāi)關(guān)機(jī)在這里击碗,優(yōu)先級(jí)最高
/usr/local/bin 用戶本身相關(guān)的可執(zhí)行文件,如自己安裝的軟件推薦放在這里育苟,會(huì)提升到全局
/usr/sbin 基本同上
①重命名為 nodejs
cd ~
mv node-v10.13.0-linux-x64 nodejs
②移動(dòng)到/usr/sbin文件夾下
mv nodejs/ /usr/sbin/
- 配置軟件鏈
為了使nodejs能夠全局使用,我們需要配置一下軟鏈接鹃祖。全局任何地方都可以直接調(diào)用node
和npm
指令了
ln -s /usr/sbin/nodejs/bin/node /usr/local/bin/
ln -s /usr/sbin/nodejs/bin/npm /usr/local/bin/
- 檢查安裝結(jié)果
執(zhí)行完以上兩步普舆,可以測(cè)試一下,如果都能輸出對(duì)應(yīng)的版本號(hào)沼侣。說(shuō)明配置成功。
node -v
npm -v
linux下安裝nginx
使用的方式是通過(guò)yum來(lái)安裝nginx蛾洛,當(dāng)然還有其他的方式养铸。比如下載好安裝包,然后再解壓等等轧膘。
- 配置yum倉(cāng)庫(kù)
① 創(chuàng)建一個(gè)名為/etc/yum.repos.d/nginx.repo
vi /etc/yum.repos.d/nginx.repo
② /etc/yum.repos.d/nginx.repo
添加以下內(nèi)容
以下是一個(gè)模板:OS 和 OSRELEASE 需要看當(dāng)前系統(tǒng)具體情況而替換
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
注意:“OS”處用你的系統(tǒng)名字代替钞螟,例如:centos或rhel;OSRELEASE用“5”或“6”或“7”代替谎碍,取決于你的系統(tǒng)版本號(hào).
我的版本是centos7鳞滨,所以我的配置如下
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
③ yum 進(jìn)行安裝
yum -y install nginx
- nginx常用指令
I want it | I get it |
---|---|
關(guān)閉nginx | nginx -s stop |
重啟nginx | nginx -s reload |
檢查nginx | nginx -t |
開(kāi)啟nginx | nginx |
- nginx 相關(guān)文件一般的位置
Where | Here |
---|---|
項(xiàng)目文件 | /usr/share/nginx/html |
nginx配置文件 | /etc/nginx/nginx.conf |
自定義配置文件 | /etc/nginx/conf.d |
日志文件 | /var/log/nginx |
linux 安裝 JDK
- 卸載系統(tǒng)自帶的jdk
//查找系統(tǒng)jdk
[root@luban_test ~]# rpm -qa|grep java
java-1.6.0-openjdk-1.6.0.37-1.13.9.4.el5_11
tzdata-java-2015g-1.el5
//如果查找到了 先全部卸載了在重新安裝
//卸載
[root@luban_test ~]# rpm -e --allmatches --nodeps python-javapackages-3.4.1-11.el7.noarch
[root@luban_test ~]# rpm -e --allmatches --nodeps tzdata-java-2019a-1.el7.noarch
[root@luban_test ~]# rpm -e --allmatches --nodeps java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
[root@luban_test ~]# rpm -e --allmatches --nodeps java-1.8.0-openjdk-headless-1.8.0.212.b04-0.el7_6.x86_64
//檢查是否卸載干凈
[root@luban_test ~]# rpm -qa|grep java
- 查找yum下可更新的Java列表
yum -y list java*
//或者
yum search jdk
- 安裝java
yum install -y java-1.8.0-openjdk.x86_64
//驗(yàn)證完成安裝
java -version
- 配置環(huán)境變量
[root@luban_test ~]# vi /etc/profile
在profile文件末尾加入:
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使配置文件生效
source /etc/profile
source ~/.bash_profile
//或重啟機(jī)器配置生效
reboot
linux 安裝 jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install -y jenkins
- 安裝完成在瀏覽器輸入 ip + 8080
ip 為服務(wù)器公網(wǎng)ip,我在這邊遇到了一個(gè)坑蟆淀。排查了挺久拯啦。因?yàn)橛霉镜陌⒗镌瀑~號(hào)開(kāi)了一個(gè)測(cè)試服務(wù)器。然后這臺(tái)服務(wù)器被加入到了自定義的安全組里熔任。然后除了配置的白名單外褒链,其他ip都無(wú)法ping到測(cè)試服務(wù)器的ip。很顯然我用家里的網(wǎng)絡(luò)打開(kāi)ip:8080 疑苔,是打不開(kāi)的甫匹。
排查是否啟動(dòng)了jenkins服務(wù)
systemctl status jenkins
排查了java的安裝情況
排查了端口是否被占用
-
排查了防火墻
systemctl status firewalld
- 當(dāng)然防火墻還是要關(guān)閉一下,不然訪問(wèn)不了服務(wù)。
systemctl stop firewalld
systemctl disable firewalld
- 當(dāng)然防火墻還是要關(guān)閉一下,不然訪問(wèn)不了服務(wù)。
甚至重新安裝jenkins兵迅,我的天
后來(lái)無(wú)奈上了阿里云控制臺(tái)看了一下其他服務(wù)器的ip 哀墓。我一頓ping才發(fā)現(xiàn),都ping不通喷兼。但是服務(wù)都還在線上運(yùn)行著篮绰。 再后來(lái)找到網(wǎng)絡(luò)和安全組
然后把自己家的ip加入到名單中。于是就可以愉快繼續(xù)玩耍了季惯。吠各。。小插曲勉抓,問(wèn)題不大贾漏。。藕筋。
-
第一次打開(kāi)http://168.56.3.*:8080 會(huì)要求你解鎖jenkins
有一個(gè)初始密碼在服務(wù)器
/var/lib/jenkins/secrets/initialAdminPassword
頁(yè)面也會(huì)提示你cat /var/lib/jenkins/secrets/initialAdminPassword
填入后 -> 繼續(xù)
-
自定義 jenkins
- 選擇
安裝推薦的插件
- 一頓咔咔下載纵散,等著吧。需要很長(zhǎng)的時(shí)間隐圾。伍掀。。
- 選擇
-
安裝完成可以創(chuàng)建一個(gè)用戶
admin -> 123456
安裝jenkins插件
-
修改插件的鏡像暇藏,類(lèi)似于npm的淘寶鏡像蜜笤。
- 進(jìn)入jenkins系統(tǒng)管理
- 進(jìn)入插件管理
- 點(diǎn)擊高級(jí)tab -> 修改升級(jí)站點(diǎn)的地址為清華大學(xué)鏡像地址
-
Generic Webhook Trigger
web觸發(fā)器(這個(gè)還是有蠻多配置的把兔,后面好好玩一下) -
Publish Over SSH
通過(guò)SSH部署服務(wù)器- 一般jenkins有一個(gè)工作區(qū)县好,我們這個(gè)區(qū)構(gòu)建項(xiàng)目缕贡,需要把這個(gè)構(gòu)建包部署到另外一臺(tái)服務(wù)器上儒恋。這是時(shí)候就需要用到這個(gè)插件诫尽。
- 當(dāng)然牧嫉,你也可以把jenkins 和 項(xiàng)目部署放在同一臺(tái)服務(wù)器上
-
Nodejs
提供node環(huán)境- 前端項(xiàng)目的構(gòu)建需要npm這些指令酣藻,這個(gè)插件能為我們提供node執(zhí)行環(huán)境
-
Git Parameter
這是一個(gè)git多分支選擇辽剧。我也是后面在下載安裝的。
- 創(chuàng)建一個(gè)任務(wù)
左側(cè)導(dǎo)航
新建任務(wù)
輸入一個(gè)任務(wù)名稱 -> 與項(xiàng)目同名即可偷崩,不是必須的
構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目
-
配合相關(guān) (我寫(xiě)一下我最基本的一些配置)
-
General
- 參數(shù)化構(gòu)建過(guò)程阐斜,主要是配合著插件
Git Parameter
來(lái)使用 - Git 參數(shù):BRANCH
- 參數(shù)類(lèi)型: 分支
- 默認(rèn)值:origin/dev (主要是因?yàn)槲乙詣?dòng)構(gòu)建的是dev分支的代碼谒出,所以這邊先配置為dev)
- 參數(shù)化構(gòu)建過(guò)程阐斜,主要是配合著插件
-
源碼管理
- 選擇git
- Repository URL笤喳,填寫(xiě)你項(xiàng)目的URL地址莉测。 git@...
- Credentials:主要有兩種方式 jenkins 上配置Credentials 2種方式
- Username + password方式
- SSH認(rèn)證方式 (我選擇了這種)
- 指定分支(為空時(shí)代表any): $BRANCH
-
構(gòu)建觸發(fā)器
- Generic Webhook Trigger 勾選上捣卤,表示git倉(cāng)庫(kù)可以調(diào)用這個(gè)觸發(fā)器啦
- 當(dāng)然要觸發(fā)需要做一些配置董朝,我這邊用的是gitlab干跛。
- jenkins 用戶頭像 --> 設(shè)置 --> API Token --> 生成一個(gè)api token并且復(fù)制下來(lái)
- 登錄gitliba賬號(hào) --> 找到對(duì)應(yīng)項(xiàng)目 ---> Settings --> Integrations
- URL: http://admin:token@123.56.3.147:8080/generic-webhook-trigger/invoke?token=token token 就是jenkins生成的api token
- 配置好后楼入,下面有一個(gè)Test按鈕可以測(cè)試一下配置是否成功嘉熊。成功即可繼續(xù)
- 到這里,理論上我們修改代碼并push到git上就會(huì)觸發(fā)jenkins 凫佛。但是問(wèn)題來(lái)了,我發(fā)現(xiàn)我在任何分支上做push動(dòng)作都會(huì)觸發(fā)jenkins
- 我的需求是當(dāng)dev上有push動(dòng)作時(shí)晨炕,才執(zhí)行這個(gè)任務(wù)瓮栗。jenkins指定具體項(xiàng)目具體分支進(jìn)行構(gòu)建部署
- Generic Webhook Trigger -> Post content parameters
- Variable: ref
- Expression: $.ref
- JSONPath
- 配合 Optional filter
-
Optional filter
- Expression: ^(refs/heads/dev)$
- Text: $ref
-
構(gòu)建環(huán)境
- Provide Node & npm bin/ folder to PATH: 需要下載
Nodejs
插件- NodeJS Installation:node
- Provide Node & npm bin/ folder to PATH: 需要下載
-
構(gòu)建
執(zhí)行shell
shell 命令(寫(xiě)一些基本的構(gòu)建命令)
rm -rf dist rm -rf dist.tar.gz npm run build tar -zcvf dist.tar.gz dist
-
構(gòu)建后操作
Send build artifacts over SSH
-
這一部主要是
Publish Over SSH
這個(gè)插件- 系統(tǒng)管理 -> 系統(tǒng)配置 -> 找到
Publish over SSH
- jenkins配置publish over ssh
- jenkins使用publishover ssh插件連接應(yīng)用機(jī)器時(shí)费奸,報(bào)Message [Auth fail]的問(wèn)題
- 系統(tǒng)管理 -> 系統(tǒng)配置 -> 找到
Name: 上一步配合的服務(wù)器名字
Source files: dist.tar.gz
Exec command:
cd /usr/share/nginx/html/caribbean_dev rm -rf dist tar -xzvf dist.tar.gz rm -rf dist.tar.gz
-