CentOs 설정

1. NAT 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# [root@localhost]
$ sudo su

# 네트워크설정확인
$ ip addr show

# ens33 실행
$ ifup ens33

# 포트 확인
$ ping 8.8.8.8

# 설정 저장
$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
==========================
ONBOOT=yes
==========================

cf) yum(Yellodog Update Modified)이란?
yum이란 Yellodog Update Modified의 약자로 레드햇 계열의 리눅스 배포판에서 사용하는 프로그램(패키지) 설치 관리 도구 입니다. 명령어 이름으로만 봤을때는 전혀 기능과 관련이 없어보이기도 합니다. 그러나 yum은 rpm 명령어가 해결하지 못했던 패키지 의존성 문제를 해결한 똑똑한 패키지 관리 툴입니다. yum 명령어를 사용하면 패키지 의존성 문제를 자동으로 처리하면서 설치, 업데이트, 삭제를 진행할 수 있습니다.

GitLab 설치 및 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# [root@localhost]$
$ sudo su

$ yum update

# 공용 라이브러리 다운로드 및 방화벽 오픈
$ yum install curl policycoreutils openssh-server openssh-clients
$ systemctl enable sshd
$ systemctl start sshd
$ yum install postfix
$ systemctl enable postfix
$ systemctl start postfix
$ firewall-cmd --permanent --add-service=http
$ systemctl reload firewalld

# gitlab 다운로드
$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
$ yum install gitlab-ce

# 포트 개방
$ firewall-cmd --permanent --add-port=71/tcp
$ firewall-cmd --reload

# 설정정보 변경
$ vi /etc/gitlab/gitlab.rb

# /etc/gitlab/gitlab.rb
=================================================
external_url 'http://127.0.0.1:71'
=================================================

# gitlab configure
$ gitlab-ctl reconfigure
$ gitlab-ctl restart
$ gitlab-ctl status

ROOT 계정 가져오기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ gitlab-rails console -e production

==================================================
irb(main):001:0> user = User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0>
irb(main):003:0> user.password='qwer1234'
=> "qwer1234"
irb(main):004:0> user.password_confirmation='qwer1234'
=> "qwer1234"
irb(main):005:0> user.save
=> true
=======================================================

Jenkins 설치 및 설정

1. JDK 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# [root@localhost]$
$ sudo su

$ yum install java-1.8.0-openjdk-devel.x86_64

$ which javac #/usr/bin/javac

# 해당 링크 위치 가져오기
$ readlink -f /usr/bin/javac # /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/bin/javac

# JAVA_HOME 설정
$ vi /etc/profile

=================================================================================
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
export PATH
=================================================================================

# 적용
$ source /etc/profile

# 환경변수 확인
$ echo $JAVA_HOME #/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64

2. Maven 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## [root@localhost]$
$ sudo su

# mavan 설치
$ yum install maven

# 버전확인
$ mvn -version

# maven 위치확인
$ whereis maven #maven: /etc/maven /usr/share/maven

# MAVEN_HOME 설정
$ vi /etc/profile

=================================================================================
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export MAVEN_HOME=/usr/share/maven
=================================================================================

# 환경변수 확인
$ echo $MAVEN_HOME #/usr/share/maven

3. Jenkins 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# [root@localhost]$
$ sudo su

# get 설치
$ yum install wget

# 라이브러리 가져오기
$ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
$ rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

# 젠킨스 설치
$ yum install jenkins

# 포트설정
$ vi /etc/sysconfig/jenkins

========================
JENKINS_PORT="7072"
========================

# 방화벽 오픈
$ firewall-cmd --permanent --add-port=7072/tcp
$ firewall-cmd --reload

# jenkins 시작
$ sudo systemctl start jenkins

# 만약 오류가 난다면
$ reboot

# 만약 포트가 안바뀌면 해당위치에 파일을 우선적을 보기 때문에 해당 파일 수정
$ vi /usr/lib/systemd/system/jenkins.service
========================
JENKINS_PORT="7072"
========================

# 재시작
$ systemctl restart jenkins

# 시작 한다면 자동실행 적용
$ systemctl enable

4. Jenkins 세부설정

4-1. 해당 포트의 url 접속

http://${ip}:7072/

4-2. 계정 pw 입력

1
2
# admin계정 접속
$ cat /var/lib/jenkins/secrets/initialAdminPassword

4-3. 라이브러리 다운로드

4-4. Create First Admin User

5. Nexus 구축

5-1. 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# [root@localhost]$
$ sudo su

# nexus 계정 설정
$ useradd nexus

# 넥서스 계정의 비밀번호 추가
$ exit #nexus계정 나오기
$ passwd nexus #passwd변경

# [nexus@localhost]$
$ su nexus

# 라이브러리파일 가져오기 (nexus3 버전)
$ wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz

# 압축해제
$ tar -zxvf ./latest-unix.tar.gz

# 설정변경1 사용 user 변경(version은 알아서 바꾸시면 됩니다.)
$ vi /home/nexus/nexus-${version}/bin/nexus.rc

==========================
run_as_user="nexus" #nexus user가 실행하기 떄문에 해당사항 변경
==========================

# 설정변경2
$ vi /home/nexus/nexus-${version}/etc/nexus-default.properties

=======================
application-port=7071 #7071포트로 변경
=======================

# nexus 시작
$ /home/nexus/nexus-${version}/bin/nexus start

# log 확인방법
$ tail -f /home/nexus/sonatype-work/nexus3/log/nexus.log

# 방화벽 오픈
$ firewall-cmd --permanent --add-port=7072/tcp
$ firewall-cmd --reload

# 초기비밀번호 catch!
$ cat /home/nexus/sonatype-work/nexus3/admin.password

cf) alias로 Nexus Start 하는 법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# [nexus@localhost]$
$ su nexus

# 사용자 디렉터리로 이동
$ cd ~

# bashrc에 alias 추가
$ vi ./.bashrc

===============
# User specific aliases and functions
alias nexusStart='/home/nexus/nexus-3.40.1-01/bin/nexus start'
=================

# 적용
$ source ./.bashrc

$ alias # 확인

$ nexusStart # nexus 실행

6. Sample 프로젝트 서버 이동 및 gitlab에 push

참고사항

참고 project

  • 위 참고 프로젝트를 이용해 배포 테스트를 진행하겟슴당
  • 해당 프로젝트를 받고 구축한 서버의 GitLab에 올려보겟슴다.

6-1. 위 참고 URL을 다운로드 후 FTP를 통해 해당 서버에 위치에 저장시킨다.

1
2
3
4
5
6
7

# [khs9628@localhost]$
$ su khs9628 #사용자계정

$ cd ~ # 사용자의 home diretory로 이동
$ mkdir workspace # workspace라는 폴더생성
$ cd workspace # workspace폴더로 이동

6-2. FTP를 통해 해당 서버에 위치에 프로젝트 copy

6-3 깃 설치 후 해당 파일 gitlab 서버에 업로드

1
2
3
4
5
6
7
8
9
10
11
$ sudo yum install git # git 설치
$ cd gitlab-sample-project # 프로젝트 경로로 이동

# 깃 repo 생성 및 업로드
$ rm -rf ./.git

$ git init
$ git remote add origin "${gitlab_clone_url}"
$ git add .
$ git commit -m "sample_project_upload"
$ git push origin

7. Nexus에 Repo 생성 후 Maven 라이브러리 업로드

참고블로그-SH놀이터

7-1. 참고 Maven Repository 다운로드 및 압축

참고 Maven Repository

  • 위 참고 Maven Repository는 위 참고 project에서 사용하고 있는 라이브러리가 모여 있는 폴더입니다.
  • 참고 프로젝트를 이용하지 않고 개개인 프로젝트를 사용한다면 Maven Setting을 따로 하지 않은 경우 C:\Users\${사용자}\.m2\repository 위치에 저장되는 파일을 압축해서 올려주시면 되겠슴다.

7-2. 서버에 nexus repository 디렉터리 생성 > 파일 이동 > unzip

repo 생성 (디렉터리 생성)

1
2
3
4
5
# [nexus@localhost]$
$ su nexus #user 변경
$ cd /home/nexus/sonatype-work/nexus3 #nexus 경로로 이동
$ mkdir repository #임시 maven repository 디렉터리 생성
$ cd repository

파일 복사 (FTP를 이용해서)

7-3. nexus repository 디렉터리에 압축해제

1
2
3
4
5
6
7
# [root@localhost]
$ sudo su

$ yum install unzip

# /home/nexus/sonatype-work/nexus3/repository
$ unzip ./repository.zip

7-4. Nexus에 custom repository 설정

  • 관리자 계정으로 접속해서 create repository 설치
  • maven2 (hosted) 를 클릭 > 이름설정 (custom)
  • Deployment policy 에서 Allow readploy 로 선택
  • create repository 를 클릭

img

7-5. maven repository upload script 생성 및 custom repository 업로드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# [root@localhost]

$ cd /home/nexus/sonatype-work/nexus3/repository
$ vi mavenimport.sh

===================================================
REPO_URL="http://${IP}}/repository/${repo}/"
USERNAME="admin" # nexus id
PASSWORD="qwer1234" # nexus pw

find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
====================================================

$ chmod 755 mavenimport.sh # 권한 변경
$ ./mavenimport.sh # 스크립트 실행

7-6. Maven 환경설정 파일 변경

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# [root@localhost]
$ sudo su

$ echo ${MAVEN_HOME} # 환경변수로 등록된 MAVEN_HOME(/usr/share/maven)
$ cd /usr/share/maven/conf # 원래는 이경로에 있는 settings.xml 기준으로 세팅되야하지만 새로 생성해서 repo 구축

$ cd ~
$ mkdir maven
$ cd maven
$ vi settings.xml

===========================================
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<localRepository>/var/lib/jenkins/.m2/repository</localRepository>
-->
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.86.128:7071/repository/custom/</url>
</mirror>
</mirrors>

<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>qwer1234</password> <!--nexus 계정 입력 -->
</server>
</servers>
</settings>
===========================================

8. Jenkins 배포환경 만들기

Jenkins를 빌드하기 위해서는 앞서 세팅했던 아래 4가지의 설정이 필요함다.

  • (1) java 컴파일러 (필수)
  • (2) Maven (필수)
  • (3) git (필수)
  • (4) nexus (폐쇄망일때는 필수로 구축 외부망이 가능한 경우 선택)

8-1. jenkins 환경변수 설정

settings

1
2
3
4
5
6
7
8
9
# [root@localhost]
$ sudo su

# 1. Java 경로 (jdk로 해야함)
echo ${JAVA_HOME}

# 2. Maven 경로
echo ${MAVEN_HOME}

(1) / (2) / (4) 세팅

settings

8-2 GitLab - Jenkins 키 생성

1
2
3
4
5
6
7
8
9
10
# [root@localhost]
$ sudo su

$ ssh-keygen -t rsa
$ cd /root/.ssh
$ ll

-rw-------. 1 root root 1679 Jul 5 01:04 id_rsa
-rw-r--r--. 1 root root 408 Jul 5 01:04 id_rsa.pub

  • id_rsa : jenkins 에 설정하는 keygen이고 비밀키
  • id_rsa.pub : gitlab 에서 설정하는 keygen 공개키

8-3 키확인 후 깃 Jenkis_Credentials 설정

1
2
3
# [root@localhost]
$ sudo su
$ vi id_rsa

id_rsa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA7DWqD5vynjYCB6OW0Zy0LWiV9NRWU6PSdqR65veyItO4YEHN
BTIZEZe/jV0LczTxIUOdt2ewPqD8vgqj3kcp2lvEQ7eoByV6erYCCPELR4R/Uq6F
scP53cHs9TnCHKMpvkyplfp3PY3cgZcW2+fahSbWqOZRe6VFJiaK0zNKpPstM2ag
MZ2GHRbw8Y2PcaEwJiF/Iw48eQeriDxxUvIUlx8Uz1r4Rcqy2v7FdmJLRuF5Uiah
OxRR96dvEv/YyXigXqcWBJVCMfN41m/12DnfMtU3H3NU1DeJ2yNbezCeZloKkOYV
+5CPFohGnC7RxP/ius2Jk3fjBXRdV3Yjhz+yqwIDAQABAoIBAQCqbOm/i2AY4JTE
WDa4FB036g7P7+g9PqTab0AxpyOC10lfQfqftg66T8eoQirBu8ACpRuFOa3C8jqJ
D3o+JRBAeRd5WGhGh7cAFJQRSYE+341R5ZOWt/RvGL1UDZFNQjgbEosFKAqigdlI
MvAOSBG1Ilmc0ViXIp5qsUJWsdo4f5Kba5oSg86AUlIF5SkvXuyxcZkVWGo+e+b9
ehrm6utkMoQHGkDuLCgabOO/4bH/FP+LsUmfhyJetWjlr+SiPwLgm52oVJkljDOj
itfdZHgGqvmmEtCskTneiNjZwnpsrSzSqYE8yfnHwLmqwDAtBxxrGiY/LHAfZyMI
NNjp78CRAoGBAPyBDSSP9b2iYCISe/QTxAerDAhqXA2Q9TJ1bi+W68Jxxl8RfrKb
yiLcLHBgkfFpN9A0VySEN2cZuzAHUBWxtDunCIU8/5C6L1CGaORJGXf7ed2ceniN
RfeAe2CHW2V6zYqfEYt4IKY6LyUf+IAO163uW3oSc6F7smAKgltWLSbzAoGBAO96
3ExZvf8gmtOn+aIkX0yL9oqquEgWZhbbPdN0/odLVkAyBXCZm7LUyZqlLziJ4wjZ
HQkI6cKMwfW2eL+4HAdh4CNikyKf51H8Qon4WdJTXmbDx8SSmWAoMaqgnOOOm/Wb
h5ZaKkyLXPYtG/xpw6ZmI9I+OH0Mp9JDVRCs2qNpAoGBAPunEpYx89R/lBfhHDBx
0plh26g3eG783aLgbmR3oZg1FGODaCZSJe8ASDnnxQw4tSuIPqFiNGVIu8puP16f
sOUS3+cKmBqBtM4oZzm9sOhndVlsrpKfGfBF2LCntms5LMjPKAk8PC3vJzV025Gl
OUdbm0faQ+vZADm/v5OQG4gJAoGARiIsDCwoCWSKEzxZTlPqmOdQf5G5wFrW8RCq
DZhwxjyY+NntX+mMgJXyqNiBeMRg+gFjkHbMxs4kK4qR2EvZ4YuXcaV3w6civo7r
Ca7y1zbVKbFier4YLuH2karR546nPAmdbrnfM2WJBwt067opszysdvED6BNhvqE7
c1O8ACkCgYBkaiV94n0gcXp0DXjVhBEMupN4hJuaYDuZ/HdVASAaBorIYeqTikza
n5dWWSd/Fn2qODkPrm7DQVx/jTQruGwM9gH1dox2WIVe6fwD6QO/0XirpBcn9gH0
qe1besFemXQ7rffe0423eJwUptx1fr6bpZUbjmoTq2lpPgK+wODL/g==
-----END RSA PRIVATE KEY-----
1
2
3
# [root@localhost]
$ sudo su
$ vi id_rsa.pub

id_rsa.pub

1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsNaoPm/KeNgIHo5bRnLQtaJX01FZTo9J2pHrm97Ii07hgQc0FMhkRl7+NXQtzNPEhQ523Z7A+oPy+CqPeRynaW8RDt6gHJXp6tgII8QtHhH9SroWxw/ndwez1OcIcoym+TKmV+nc9jdyBlxbb59qFJtao5lF7pUUmJorTM0qk+y0zZqAxnYYdFvDxjY9xoTAmIX8jDjx5B6uIPHFS8hSXHxTPWvhFyrLa/sV2YktG4XlSJqE7FFH3p28S/9jJeKBepxYElUIx83jWb/XYOd8y1Tcfc1TUN4nbI1t7MJ5mWgqQ5hX7kI8WiEacLtHE/+K6zYmTd+MFdF1XdiOHP7Kr root@localhost.localdomain

settings

settings

settings

settings

cf) 아래 사진과 같이 Maven Version으로 인한 문제가 발생시..

settings

Maven 버전이 낮아서 생기는 문제

  1. MAVEN 홈페이지 이동 후 최신 버전 다운로드
  1. 기존 버전 삭제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # [root@localhost]
    $ sudo su

    $ yum list installed | grep maven

    ============================
    $ maven.noarch
    $ maven-wagon.noarch
    ============================

    $ yum remove maven.noarch
    $ yum remove maven-wagon.noarch

  2. 다운로드 한 파일 새 위치에 이동

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # [root@localhost]
    $ sudo su

    $ tar -zxvf ./apache-maven-3.8.6-bin.tar.gz

    # maven home path 다시변경
    $ vi /etc/profile
    ===================================================
    export MAVEN_HOME=/usr/lib/apache-maven-3.8.6
    ===================================================

    $ sudo ln -s $MAVEN_HOME/bin/mvn /usr/bin/mvn

    $ mvn -v # Apache Maven 3.8.6
  3. Jenkins MAVEN_HOME 변경