CentOs 설정 1. NAT 설정 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ sudo su $ ip addr show $ 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 $ 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 $ 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 ================================================= external_url 'http://127.0.0.1:71' ================================================= $ 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 $ sudo su $ yum install java-1.8.0-openjdk-devel.x86_64 $ which javac $ readlink -f /usr/bin/javac $ vi /etc/profile ================================================================================= export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64PATH=$PATH :$JAVA_HOME /bin export PATH ================================================================================= $ source /etc/profile $ echo $JAVA_HOME
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 $ sudo su $ yum install maven $ mvn -version $ whereis maven $ vi /etc/profile ================================================================================= export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64PATH=$PATH :$JAVA_HOME /bin:$MAVEN_HOME /bin export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROLexport MAVEN_HOME=/usr/share/maven================================================================================= $ echo $MAVEN_HOME
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 $ sudo su $ 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 $ 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 $ 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 $ sudo su $ useradd nexus $ exit $ passwd nexus $ su nexus $ wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz $ tar -zxvf ./latest-unix.tar.gz $ vi /home/nexus/nexus-${version} /bin/nexus.rc ========================== run_as_user="nexus" ========================== $ vi /home/nexus/nexus-${version} /etc/nexus-default.properties ======================= application-port=7071 ======================= $ /home/nexus/nexus-${version} /bin/nexus start $ tail -f /home/nexus/sonatype-work/nexus3/log /nexus.log $ firewall-cmd --permanent --add-port=7072/tcp $ firewall-cmd --reload $ 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 $ su nexus $ cd ~ $ vi ./.bashrc =============== alias nexusStart='/home/nexus/nexus-3.40.1-01/bin/nexus start' ================= $ source ./.bashrc $ alias $ nexusStart
6. Sample 프로젝트 서버 이동 및 gitlab에 push 참고사항
위 참고 프로젝트를 이용해 배포 테스트를 진행하겟슴당
해당 프로젝트를 받고 구축한 서버의 GitLab에 올려보겟슴다.
6-1. 위 참고 URL을 다운로드 후 FTP를 통해 해당 서버에 위치에 저장시킨다. 1 2 3 4 5 6 7 $ su khs9628 $ cd ~ $ mkdir workspace $ cd workspace
6-2. FTP를 통해 해당 서버에 위치에 프로젝트 copy 6-3 깃 설치 후 해당 파일 gitlab 서버에 업로드 1 2 3 4 5 6 7 8 9 10 11 $ sudo yum install git $ cd gitlab-sample-project $ 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는 위 참고 project에서 사용하고 있는 라이브러리가 모여 있는 폴더입니다.
참고 프로젝트를 이용하지 않고 개개인 프로젝트를 사용한다면 Maven Setting을 따로 하지 않은 경우 C:\Users\${사용자}\.m2\repository
위치에 저장되는 파일을 압축해서 올려주시면 되겠슴다.
7-2. 서버에 nexus repository 디렉터리 생성 > 파일 이동 > unzip repo 생성 (디렉터리 생성) 1 2 3 4 5 $ su nexus $ cd /home/nexus/sonatype-work/nexus3 $ mkdir repository $ cd repository
파일 복사 (FTP를 이용해서) 7-3. nexus repository 디렉터리에 압축해제 1 2 3 4 5 6 7 $ sudo su $ yum install unzip $ unzip ./repository.zip
7-4. Nexus에 custom repository 설정
관리자 계정으로 접속해서 create repository 설치
maven2 (hosted) 를 클릭 > 이름설정 (custom)
Deployment policy 에서 Allow readploy 로 선택
create repository 를 클릭
7-5. maven repository upload script 생성 및 custom repository 업로드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $ cd /home/nexus/sonatype-work/nexus3/repository $ vi mavenimport.sh =================================================== REPO_URL="http://${IP} }/repository/${repo} /" USERNAME="admin" PASSWORD="qwer1234" 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 $ sudo su $ echo ${MAVEN_HOME} $ cd /usr/share/maven/conf $ 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 환경변수 설정
1 2 3 4 5 6 7 8 9 $ sudo su echo ${JAVA_HOME} echo ${MAVEN_HOME}
(1) / (2) / (4) 세팅
8-2 GitLab - Jenkins 키 생성 1 2 3 4 5 6 7 8 9 10 $ 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 설정
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 $ 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
cf) 아래 사진과 같이 Maven Version으로 인한 문제가 발생시..
Maven 버전이 낮아서 생기는 문제
MAVEN 홈페이지 이동 후 최신 버전 다운로드
기존 버전 삭제
1 2 3 4 5 6 7 8 9 10 11 12 13 $ sudo su $ yum list installed | grep maven ============================ $ maven.noarch $ maven-wagon.noarch ============================ $ yum remove maven.noarch $ yum remove maven-wagon.noarch
다운로드 한 파일 새 위치에 이동
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ sudo su $ tar -zxvf ./apache-maven-3.8.6-bin.tar.gz $ 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
Jenkins MAVEN_HOME
변경