수업 81일차 도커 , 젠킨스 , 자바 , maven , 소나큐브 , SQL

유동우·2023년 1월 22일
0

Maven : Java 프로그램을 빌드

Spring ............┐ 프레임워크
Spring-boot ┘

Java 소스 => 빌드 ./mvnw package

.jar : 내장 톰캣
.war : 별도의 톰캣 필요

Petclinic => 빌드 => .jar => 배포됨 (톰캣 필요없음)

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

sudo ls /opt/tomcat/webapps/
ROOT docs examples host-manager manager

sudo cp jenkins.war /opt/tomcat/webapps/

sudo ls /opt/tomcat/webapps/ 파일확인
ROOT docs examples host-manager manager => jenkins.war 추가됨

브라우저에 http://IP주소:8080/jenkins

■ 젠킨스만을 위한 아파치 톰캣 서버 설정

cd /tmp
-# 젠킨스 앱 다운로드
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

-# 다운 받은 파일 이름 변경
sudo mv jenkins.war ROOT.war

-# root 사용자로 전환해 /opt/tomcat/webapps 폴더 안의 모든 내용을 삭제한다.
sudo su -
cd /opt/tomcat/webapps
sudo rm -r *

-# 앞서 생성한 ROOT.war을 /opt/tomcat/webapps 폴더로 이동시킨다.
sudo mv /tmp/ROOT.war /opt/tomcat/webapps/

-# 해당 폴더를 살펴보면 ROOT 폴더가 자동으로 생성된 것을 볼 수 있다.
drwxr-x--- 11 root root 4096 5월 29 23:13 ROOT
-rw-rw-r-- 1 ubuntu ubuntu 94928325 5월 5 00:56 ROOT.war

-# 젠킨스 접속
http://IP:8080

=================================

■ 도커에서 젠킨스 실행하기

sudo apt-get update

-# JAVA11 설치
-# sudo apt install -y openjdk-11-jdk
sudo apt install -y default-jre

-# root로 전환
sudo su -

-# Docker 폴더 생성
mkdir ~/my-jenkins
cd ~/my-jenkins

-# 젠킨스 이미지를 베이스로 도커를 설치하기 위해 Dockerfile 생성
vim Dockerfile
FROM jenkins/jenkins:lts
USER root

-# install docker
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
zip \
unzip \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \ add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/(. /etc/os-release; echo "ID") \(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce

-# docker compose 파일 작성
vim docker-compose.yml
version: '3.7'
services:
jenkins:
build:
context: .
container_name: jenkins
user: root
privileged: true
ports:

  • 8080:8080
  • 50000:50000
    volumes:
  • ./jenkins_home:/var/jenkins_home
  • /var/run/docker.sock:/var/run/docker.sock

-# docker, docker-compose 설치
snap install docker
apt install docker-compose -y

-# docker version 확인
docker --version
Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1

-# docker-compose version 확인
docker-compose --version
docker-compose version 1.25.0, build unknown

-# docker image 확인
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

-# 젠킨스 컨테이너 생성
docker-compose up -d
docker-compose build

-# 설치된 docker image 확인
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-jenkins_jenkins latest eb9e3d0cdb33 23 seconds ago 1.06GB
jenkins/jenkins lts cb535f2a7054 5 days ago 464MB

-# 실행중인 docker 확인
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
606542aff226 my-jenkins_jenkins "/usr/bin/tini -- /u…" 43 seconds ago Up 42 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tc

-# 젠킨스 접속
http://IP주소:8080

-# 초기 패스워드
docker exec -it jenkins /bin/bash

-# 젠킨스 초기 패스워드
cat /var/jenkins_home/secrets/initialAdminPassword

■ 자바 설치

  • openjdk 설치
    $ sudo apt-get install openjdk-11-jdk
  • 환경변수 설정
    $ vim ~/.bashrc
  • .bashrc 끝 부분에 추가
    export JAVA_HOME=(dirname $(dirname $(readlink -f $(which java)))) export PATH=PATH:$JAVA_HOME/bin
  • 환경 변수 설정 적용
    $ source ~/.bashrc
  • 환경변수 설정 내용 확인
    $ echo $JAVA_HOME
    /usr/lib/jvm/java-11-openjdk-amd64

■ maven 설치

$ sudo apt install maven

  • Maven 버전 확인
    $ mvn --version
    Apache Maven 3.6.3
    Maven home: /usr/share/maven
    Java version: 11.0.17, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
    Default locale: ko_KR, platform encoding: UTF-8
    OS name: "linux", version: "5.15.0-56-generic", arch: "amd64", family: "unix"

$ vim ~/.bashrc
export MVN_HOME=/usr/share/maven
export PATH=PATH:PATH:MVN_HOME/bin

$ source ~/.bashrc
$ echo $MVN_HOME
/usr/share/maven

젠킨스관리 - global - add jdk

Name : JDK11
Install automatically 체크해제
/usr/lib/jvm/java-11-openjdk-amd64

add maven
Name : M3
Install automatically 체크해제
/usr/share/maven

저장

ssh-keygen -t rsa -b 4096 -C "cjstkehddn11@naver.com"

cd ~/.ssh

cat id_rsa.pub 해서 나온값 git hub ssh에 등록

~/.ssh디렉토리에서 ssh -T git@github.com 하면 인증완료

==============================

■ 젠킨스와 소나의 통합

소나큐브 : 애플리케이션의 코드 품질을 관리하는 오픈소스 도구

■ 소나큐브 설치

OpenJDK 설치

  • apt 업데이터
    $ sudo apt-get update -y && sudo apt-get upgrade -y

  • openjdk 설치
    $ sudo apt-get install openjdk-11-jdk -y

  • 환경변수 설정
    $ vim ~/.bashrc

  • .bashrc 끝 부분에 추가
    export JAVA_HOME=(dirname $(dirname $(readlink -f $(which java)))) export PATH=PATH:$JAVA_HOME/bin

  • 환경 변수 설정 적용
    $ source ~/.bashrc

  • 환경변수 설정 내용 확인
    $ echo $JAVA_HOME

■ PostgreSQL 설치

  • OS 확인
    $ cat /etc/os-release

  • PostgreSQL 현재 패키지 버전 확인
    $ sudo apt install wget ca-certificates

  • PostgreSQL 저장소 추가
    $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ lsb_release -cs-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
    $ sudo apt install wget ca-certificates
    $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

  • PostgreSQL 설치
    $ sudo apt-get update -y # 오류날 시 다음 줄 그냥 진행
    $ sudo apt show postgresql # 버전 정보 확인
    $ sudo apt-get install postgresql-13 -y # PostgreSQL 13 버전
    또는

  • 최신 버전 설치
    $ sudo apt-get install postgresql postgresql-contrib

  • 설치 확인
    $ service postgresql status

  • 접속 확인
    $ sudo su - postgres
    $ psql
    postgres=# \conninfo
    You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
    postgres=# \q

  • 사용자 생성
    postgres=# create user sonar;

  • 사용자 Role 설정
    postgres=# alter role sonar with createdb;

  • 사용자 비밀번호 설정
    postgres=# alter user sonar with encrypted password 'sonar';

  • 생성한 사용자 정보 조회
    postgres=# \du

  • Database 생성
    postgres=# create database sonarqube owner sonar;

  • Privileges 설정
    postgres=# grant all privileges on database sonarqube to sonar;

  • 생성한 Database 조회
    postgres=# \l
    $ exit
    $ exit

■ PostgreSQL 설정

  • 외부 접속 설정
    $ sudo vim /etc/postgresql/13/main/postgresql.conf

  • 주석 해제 후 127.0.0.1을 ''로 수정
    listen_addresses = '
    '

  • 모든 사용자 접속 가능하게 설정 - 비밀번호 사용
    $ sudo vim /etc/postgresql/13/main/pg_hba.conf
    ...

  • IPv4 local connections:
    host all all 0.0.0.0/0 password

  • service 설정 반영 및 postgresql 재시작
    $ sudo systemctl daemon-reload
    $ sudo systemctl restart postgresql.service

■ SonarQube 설치

■ SonarQube 설정

  • SonarQube 설정 파일 수정
    $ vim sonarqube-8.9.2.46101/conf/sonar.properties

  • 주석 해제 후 DB셋팅 시 만든 계정 정보 입력
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar

-# 주석 해제 후 url 지정
sonar.jdbc.url=jdbc:postgresql://{VM IP}/sonarqube

  • 주석 해제 후 port 지정
    sonar.web.port=9000

■ OpenJDK 경로 설정

  • 설치 경로 조회
    $ which java
    /usr/bin/java
    -# 설정 파일 수정
    $ vim sonarqube-8.9.2.46101/conf/wrapper.conf
    wrapper.java.command=/usr/bin/java # 조회한 설치경로로 수정

■ Max map count 설정

-# profile 수정
$ sudo vim /etc/profile
-# 맨 밑에 추가
sudo sysctl -w vm.max_map_count=262144
-# 수정 내역 적용
$ source /etc/profile

■ 시작

-# shell 파일 존재하는 디렉토리로 이동
$ cd sonarqube-8.9.2.46101/bin/linux-x86-64
-# SonarQube 서비스 상태 확인
$ ./sonar.sh status
-# SonarQube 서비스 시작
$ ./sonar.sh start

sudo ufw allow 9000/tcp // 9000번 포트 방화벽 추가

profile
클라우드 엔지니어가 되고싶은 클린이

0개의 댓글