728x90
반응형
1. Services - Compute - Server 선택
2. 서버 생성 및 이미지 선택
- 부팅 디스크 크기: 50GB
- 이미지타입: Application
- Application 이미지타입: Jenkins
- 서버 타입: Compact
- 가장 최근 버전의 Jenkins-CentOS-7.8 선택
3. 서버 설정
4. 인증키 설정
- 새로운 인증키 생성 및 저장
5. 네트워크 접근 설정
6. 최종 확인
- 상태가 생성중 - 부팅중 - 설정중 - 운영중으로 변경되는지 확인
7. 공인 IP 생성
- Public IP 선택
Public IP 생성
8. 포트 포워딩 설정
- 비공인 IP
- NCP 같은 네트워크 그룹 권한 컴퓨터에서 접속할 때 사용
- 우리 환경에서는 사용 안함
- 공인 IP
- 서버 외부에서 Tomcat 등을 받을 때 사용
- 프로그램 설치 권한 없음
- 이미 설치된 프로그램 서비스를 받고 싶을 때 사용
- 서버 접속용 공인 IP
- 원격 제어로 들어가고 싶을 때 사용
- Putty 원격 네이버 서버 접속
- 프로그램 설치 권한 있음
- 포트 포워딩
- 만일 서버 접속용 공인 IP가 2000번 포트라고 할 때 자동으로 비공인 IP인 22번 포트로 연결
- NCP server를 기본 비공인 IP 22포트로 접속
포트 포워딩 설정
- NCP server를 기본 비공인 IP 22포트로 접속
- 만일 서버 접속용 공인 IP가 2000번 포트라고 할 때 자동으로 비공인 IP인 22번 포트로 연결
9. 리눅스 계정 암호 확인
- 서버 관리 및 설정 변경 - 관리자 비밀번호 확인
10. ACG 규칙 (방화벽 설정)
- 기본적으로 모든 서버로 들어오는 요청 차단
- 22번 포트는 앞서 설정해놓았지만 2000번 포트가 새로 생겼으므로 추가 설정 필요
- 22번 포트는 앞서 설정해놓았지만 2000번 포트가 새로 생겼으므로 추가 설정 필요
11. Putty 접속
- 호스트 이름에 서버 접속용 공인 IP, 포트번호 입력
- 계정 비밀번호 변경
- 암호 복사해서 shift + insert + enter 동시에 클릭
- 암호 복사해서 shift + insert + enter 동시에 클릭
12. Java 설치
- 기존에 11 버전 깔려있음
- 프로젝트 버전은 17 버전이므로 맞춰야 함
- https://www.oracle.com/kr/java/technologies/downloads/#java17
- JDK 17 - Linux - x64 Compressed Archive
- 다운로드하지 말고 링크 주소 복사
- 복사한 주소 Putty에 설치
- 설치할 폴더 생성
- mkdir /usr/mydir
- 생성한 폴더로 이동
- cd /usr/mydir
- 웹 상의 파일 다운로드
- wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
- 다운로드한 파일 압축 해제
- tar -zxvf jdk-17_linux-x64_bin.tar.gz
- tar -zxvf jdk-17_linux-x64_bin.tar.gz
- 설치할 폴더 생성
- 설치해도 java -version 해보면 jdk 11 버전으로 되어 있음
- 설치한 jdk 17을 기본 버전으로 설정
- 모든 사용자 설정 파일 경로 - /etc/profile
- vi 에디터를 사용하여 편집
- vi /etc/profile
- 편집하려면 소문자 i 입력해서 insert모드로 변경
- jdk 17 경로 추가
- export JAVA_HOME=/usr/mydir/jdk-17.0.10
- export JRE_HOME=/usr/mydir/jdk-17.0.10
- PATH=$JAVA_HOME/bin:$PATH:
- export PATH
- 순차적으로 아래 명령어 진행
- esc
- shift + ;
- :wq 입력
- enter
- vi 에디터 종료
- 변경사항 저장
- source /etc/profile
- echo $JAVA_HOME
- java -version
- source /etc/profile
- vi /etc/profile
13. Maven 설치
- pom.xml 설정에 따라 라이브러리 관리
- sts 내장되어 있는 Maven 버전 확인
- Window - Preferences - Maven - Installations - EMBEDDED 버전 확인
- Window - Preferences - Maven - Installations - EMBEDDED 버전 확인
- Maven 3.9.4 설치
- https://maven.apache.org/download.cgi
- Other Release - Maven 3 archive로 이동
- wget https://archive.apache.org/dist/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
- tar -zxvf apache-maven-3.9.4-bin.tar.gz
- 설치한 maven-3.9.4 버전 설정
- vi 에디터 사용
- vi /etc/profile
- i 입력하여 insert 모드로 변경
- export MAVEN_HOME=/usr/mydir/apache-maven-3.9.4
- PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin
- esc
- shift + ;
- :wq 입력
- enter
- vi 에디터 종료
- 변경사항 저장
- source /etc/profile
- echo $MAVEN_HOME
- mvn -version
- vi 에디터 사용
14. Tomcat 설치
- sts에 내장되어 있는 Tomcat 버전 확인
- Tomcat 10.1.17
- Tomcat 10.1.17 설치
- https://tomcat.apache.org/download-10.cgi
- 해당 브라우저에 안나와있는 버전이면 Archives에서 확인
- apache-tomcat-10.1.17.tar.gz 링크 주소 복사
- 해당 브라우저에 안나와있는 버전이면 Archives에서 확인
- wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.17/bin/apache-tomcat-10.1.17.tar.gz
- tar -zxvf apache-tomcat-10.1.17.tar.gz
- https://tomcat.apache.org/download-10.cgi
- 설치한 tomcat-10.1.17 버전 설정
- vi 에디터 사용
- vi /etc/profile
- i 입력하여 insert 모드로 변경
- export TOMCAT_HOME=/usr/mydir/apache-tomcat-10.1.17
- esc
- shift + ;
- :wq 입력
- enter
- vi 에디터 종료
- 변경사항 저장
- source /etc/profile
- echo $TOMCAT_HOME
- vi 에디터 사용
- Tomcat 시작
- $TOMCAT_HOME/bin/startup.sh
- Tomcat 종료
- $TOMCAT_HOME/bin/shutdown.sh
- $TOMCAT_HOME/bin/shutdown.sh
- Tomcat 사용
- Tomcat 서버 시작
- 비공인IP:22 → 서버 접속용 공인 IP:2000 → Putty 접속용
- http://ncp공인IP:8080 사용
- ACG (방화벽) 설정해야 접속 가능
- 8080 포트 열어달라고 설정
- 8080 포트 열어달라고 설정
- 성공
15. MySQL 설치
- MySQL 8 버전 설치
- https://www.mysql.com/downloads/
- 마지막 아래 링크로 이동
- MySQL Yum Repository로 이동
- Linux 7 버전 다운로드
- 아래 링크 주소 복사
- Linux 7 버전 다운로드
- 확장자가 rpm은 Redhat 계열 설치 종류
- centOS는 Redhat 계열
- 이건 tar 명령어로 압축 해제하지 못하고 rpm이나 yum으로 해제 가능
- yum install https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
- MySQL 실행할 때 필요한 모든 종속 라이브러리 다운로드 관리 명령
- 설치 가능한 목록 확인
- yum list mysql-community-*
- yum list mysql-community-*
- 설치
- yum install mysql-server
- yum install mysql-server
- 설치된 MySQL 관련 디렉토리
- find / -name “mysql*”
- 마지막에 8 버전 설치 됐는지 확인
- 설치 경로 확인
- which mysql
- which mysql
- Windows는 MySQL을 같이 부팅 동시 시작
- Linux는 mysql을 수동 명령어로 시작
- systemctl start mysqld
- systemctl start mysqld
- MySQL 설정
- 관리자 계정 내장된 root의 초기 암호 변경
- 암호정보 포함 파일명
- /var/log/mysqld.log
- 암호 확인하는 방법
- vi /var/log/mysqld.log
- grep ‘temporary password’ /var/log/mysqld.log
- 더 쉽게 확인 가능
- 더 쉽게 확인 가능
- vi /var/log/mysqld.log
- 암호 변경
- mysql -u root -p
- 초기 암호 복사해서 shift + insert + enter 동시에 눌러서 붙여넣기
- 초기 암호 복사해서 shift + insert + enter 동시에 눌러서 붙여넣기
- alter user root@localhost identified by “변경할 암호”;
- quit으로 빠져나와서 다시 mysql -u root -p으로 암호 변경 확인
- mysql -u root -p
- 암호정보 포함 파일명
- root는 현재 서버 컴퓨터에서만 접속 가능한 유저
- 새로운 유저 생성
- 모든 컴퓨터 접속
- create user 유저아이디 @’%’ identified by ‘비밀번호’;
- 현재 데이터베이스 조회
- show databases;
- show databases;
- 새 데이터베이스 생성
- create database kodi_ncp_db;
- create database kodi_ncp_db;
- 권한 부여
- grant all privileges on kodi_ncp_db .* to kodi_ncp;
- grant all privileges on kodi_ncp_db .* to kodi_ncp;
- quit으로 빠져나오고 kodi_ncp 계정으로 재접속
- mysql -u kodi_ncp -p;
- mysql -u kodi_ncp -p;
- 현재 접속하고 있는 유저 확인
- select user();
- select user();
- 사용할 데이터베이스 변경
- use kodi_ncp_db;
- use kodi_ncp_db;
- 현재 접속하고 있는 데이터베이스 확인
- select database();
- select database();
- 데이터베이스 테스트
- create table test(a int , b varchar(30), c text);
- insert into test values(1, 'text1', '1번 텍스트데이터');
- select * from test;
- 관리자 계정 내장된 root의 초기 암호 변경
- 데이터 이관
- 내 컴퓨터에서 NCP 서버에 있는 DB에 접속
- ACG 규칙에 3306 포트 설정 추가
- 클라이언트는 0.0.0.0/0로 설정
- 클라이언트는 0.0.0.0/0로 설정
- cmd 창에서 MySQL 접근
- mysql -u kodi_ncp -h 공인 IP -p
- mysql -u kodi_ncp -h 공인 IP -p
- 데이터베이스 확인
- use kodi_ncp_db;
- select user(), database();
- select * from test;
- ACG 규칙에 3306 포트 설정 추가
- Workbench에서 NCP 서버에 있는 DB에 접속
- Workbench - Connection 생성
- Hostname - 공인 IP
- Hostname - 공인 IP
- 테이블 데이터 확인
- select * from test;
- select * from test;
- Workbench에서 데이터 삽입 후 Putty에서 확인
- insert into test values(2, 'text2', 'workbench 데이터 이관');
- insert into test values(2, 'text2', 'workbench 데이터 이관');
- Workbench - Connection 생성
- 로컬에 있는 DB 테이블을 NCP 서버로 넘기기 (export/import)
- export
- 기존 데이터베이스를 외부 파일/폴더로 저장
- KoDi에서 진행
- import
- export한 db를 동일 db나 다른 db로 복사
- kodi_ncp에서 진행
- import한 테이블 확인
- 데이터 이관 후 Putty에서 데이터 확인
- export
- 내 컴퓨터에서 NCP 서버에 있는 DB에 접속
- sts 프로젝트와 연결
- properties 파일 내 db 연결 정보 NCP 서버에 있는 db 사용하도록 변경
# db 연결정보 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://공인IP:3306/ncp에 만든 db명 spring.datasource.username=ncp 유저 이름 spring.datasource.password=ncp 유저 비밀번호
- DB 정보 변경하고 프로젝트 실행해서 연결 잘 됐는지 확인
- 이때 사용하는 DB는 로컬 DB가 아니라 NCP DB
- properties 파일 내 db 연결 정보 NCP 서버에 있는 db 사용하도록 변경
16. Github 연결
- Putty에 git.exe 설치
- yum install git
- git --version
- yum install git
- git 연결
- 클론할 디렉토리 변경
- cd /usr/mydir
- cd /usr/mydir
- 클론
- git clone 클론할 Github 주소
- git clone 클론할 Github 주소
- 클론한 디렉토리로 이동
- cd KODI_project
- cd KODI_project
- 현재 경로 확인
- pwd
- pwd
- application.properties 파일이 없어서 새로 생성
- vi KODI/src/main/resources/application.properties
- sts에 있는 application.properties 내용 그대로 복사
- 클론할 디렉토리 변경
- sts에서 Maven Build
- pom.xml 아래 코드 추가
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
- 추가하고 Github에 push 후 Putty에서도 다시 push
- git pull origin main
- git pull origin main
- Run As - Maven Build - Edit Configuration
- Goals에 clean package 입력
- Goals에 clean package 입력
- pom.xml 아래 코드 추가
- Putty에서 Maven Build 및 부트 실행
- cd KODI
- mvnw 사용
- ./ : 현재 폴더에 있는 mvnw 사용
- ./mvnw clean package
- ./mvnw clean package
- mvnw를 실행할 수 있도록 실행 권한 부여하고 다시 실행
- chmod +x mvnw
- ./mvnw clean package
- ./ : 현재 폴더에 있는 mvnw 사용
- cd target
- 프로젝트명-0.0.1- SNAPSHOT.war가 있으면 maven 빌드 잘 된 것
- 프로젝트명-0.0.1- SNAPSHOT.war가 있으면 maven 빌드 잘 된 것
- SpringBoot 서버 실행
- java -jar KODI_project-0.0.1-SNAPSHOT.war
- java -jar KODI_project-0.0.1-SNAPSHOT.war
- 브라우저에서 http://ncp서버공인IP:포트번호로 사용하므로 실행 전 ACG 규칙에 7777 포트번호 추가
- http://ncp서버공인IP:7777 실행
- SpringBoot 서버 종료
- Ctrl + c
- 지금까지는 프로젝트 내부에 있던 Maven과 Tomcat 사용
- NCP 서버 내부에 있는 걸로 변경
- 리눅스 Tomcat 사용
- $TOMCAT_HOME/bin/startup.sh → 시작
- $TOMCAT_HOME/bin/shutdown.sh → 종료
- $TOMCAT_HOME/webapps/ROOT.war (내장)
- http://공인ip:8080/ = http://공인ip:8080/index.jsp
- http://공인ip:8080/ = http://공인ip:8080/index.jsp
- $TOMCAT_HOME/webapps/톰캣서버 실행 프로젝트
- ex) $TOMCAT_HOME/webapps/demo.war
- http:// 공인ip:8080/뷰이름 = http://공인ip:8080/demo/
- 아래 경로에서 최종실행파일 결과물 확인
- /usr/mydir/KODI_project/KODI/target/KODI_project-0.0.1-SNAPSHOT.war
- 내장 톰캣이 아니라 8080 포트인 NCP에 설치한 외부 서버를 사용하여 실행하도록 설정
- KODI_project-0.0.1-SNAPSHOT.war 이것만 $TOMCAT_HOME/webapps 밑에 복사
- 이름 바꿔서 복사 가능
- cp /usr/mydir/KODI_project/KODI/target/KODI_project-0.0.1-SNAPSHOT.war $TOMCAT_HOME/webapps/kodi.war
- 복사 확인
- ls $TOMCAT_HOME/webapps
- ls $TOMCAT_HOME/webapps
- kodi.war 안에 프로젝트 뷰들이 나열된 것 확인 가능
- ls $TOMCAT_HOME/webapps/kodi/WEB-INF/views
- ls $TOMCAT_HOME/webapps/kodi/WEB-INF/views
- controller나 다른 자바 코드들은 classes 밑에 있음
- /usr/mydir/KODI_project/KODI/target/KODI_project-0.0.1-SNAPSHOT.war
- Tomcat 실행
- http://공인ip:8080/kodi/ = http://공인ip:7777/
17. Jenkins 연결
- 포트번호로 18080 사용하므로 ACG 규칙에 추가
- http://공인IP:18080 접속
- Putty에서 암호 경로(/var/lib/jenkins/secrets/initialAdminPassword)로 암호 알아와서 입력
- cat /var/lib/jenkins/secrets/initialAdminPassword
- Install suggested plugins 선택
- Putty에서 암호 경로(/var/lib/jenkins/secrets/initialAdminPassword)로 암호 알아와서 입력
- Maven 설정
- Jenkins 관리 - Tools로 이동
- Putty에서 Maven 경로 확인
- $MAVEN_HOME
- $MAVEN_HOME
- File path에 /usr/mydir/apache-maven-3.9.4/conf/settings.xml 입력
- Maven 이름, MAVEN_HOME 경로 입력
- /usr/mydir/apache-maven-3.9.4
- /usr/mydir/apache-maven-3.9.4
- Putty에서 Maven 경로 확인
- Jenkins 관리 - Tools로 이동
- JDK 설정
- Putty에서 자바 경로 확인
- $JAVA_HOME
- $JAVA_HOME
- JDK 이름, MAVEN_HOME 경로 입력
- /usr/mydir/jdk-17.0.10
- /usr/mydir/jdk-17.0.10
- Putty에서 자바 경로 확인
- Tomcat 설정 전 Plugin 설치
- Jenkins 관리 - Plugins로 이동
- Deploy to container 설치
- ex) tomcat/webapps/a.war가 있을 때 context 이름을 a로 대신해주는 Tool
- ex) tomcat/webapps/a.war가 있을 때 context 이름을 a로 대신해주는 Tool
- Jenkins 관리 - System로 이동
- Jenkins Home Directory
- /var/lib/jenkins
- Github 설정
- Jenkins 관리 - System로 이동
- ADD - Jenkins 선택
- Secret text 클릭 - github 토큰 입력
- Test Connection 후 저장
- ADD - Jenkins 선택
- Jenkins 관리 - System로 이동
- 새로운 Item - item 이름 입력 - Freestyle project 선택
- Configuration - General
- Github Project URL 입력
- 소스 코드 관리
- Repository URL 입력 - Jenkins 선택
- Github 계정 정보 입력
- 비워놓고 저장
- 지금 빌드 선택
- Configuration - General
- Jenkins pull 자동화
- /var/lib/jenkins/workspace/젠킨스아이템명/프로젝트명
- /var/lib/jenkins/workspace/kodi_jenkins/KODI
- kodi_jenkins - Configuration - Build Steps - Execute shell
echo $JENKINS_HOME pwd cat /var/lib/jenkins/workspace/kodi_jenkins/KODI/src/main/resources/application.properties - 이대로 지금 빌드하면 실패
- application.properties 파일이 없어서 나는 에러
- 매번 pull할 때마다 사라지므로 jenkins한테 명령어 실행하라고 주기
- 하기 전에 Putty에서 cp 명령 권한 부여해야 함
- jenkins ALL=(ALL) NOPASSWD:ALL
- jenkins ALL=(ALL) NOPASSWD:ALL
- Build Steps에 아래 코드 추가
- sudo cp /usr/mydir/KODI_project/KODI/src/main/resources/application.properties /var/lib/jenkins/workspace/kodi_jenkins/KODI/src/main/reources/
- sudo cp /usr/mydir/KODI_project/KODI/src/main/resources/application.properties /var/lib/jenkins/workspace/kodi_jenkins/KODI/src/main/reources/
- 재빌드하면 성공
- kodi_jenkins - Configuration - Build Steps - Execute shell
- Maven 빌드
- kodi_jenkins - Configuration - Build Steps - Add build step - Invoke top-level Maven targets
- 정보 입력 후 저장
- systemctl start mysqld
- systemctl status mysqld
- 재빌드하면 성공
- kodi_jenkins - Configuration - Build Steps - Add build step - Invoke top-level Maven targets
- Tomcat 설정
- kodi_jenkins - Configuration - 빌드 후 조치 추가 - Deploy war/ear to a container
- Context path 경로 설정
- TOMCAT WEB CONTAINER 이용하려면 관리자가 필요
- url 관리자 설정 변경 → 관리자 접속 허용
- ls $TOMCAT_HOME/conf/tomcat-users.xml
- vi $TOMCAT_HOME/conf/tomcat-users.xml
- <role rolename="manager-gui"/>
- <role rolename="manager-script"/>
- <role rolename="manager-status"/>
- <user username="" password="" roles="manager-gui,manager-script,manager-status" />
- ls $TOMCAT_HOME/webapps/manager/META-INF/context.xml
- vi $TOMCAT_HOME/webapps/manager/META-INF/context.xml
- value 허용값이 로컬이라 이걸 다 풀어주기 위해 주석처리
- value 허용값이 로컬이라 이걸 다 풀어주기 위해 주석처리
- Tomcat 실행
- $TOMCAT_HOME/bin/startup.sh
- http://공인IP:8080/manager/html로 접속
- 아이디, 비밀번호는 vi $TOMCAT_HOME/conf/tomcat-users.xml 여기서 적은 username, password 사용
- 정상 동작
- Jenkins에서 Tomcat 9.x Remote - Add - Jenkins 선택
- 계정 정보 입력
- Tomcat URL - http://공인IP:8080/ 입력
- 재빌드하면 끝
- kodi_jenkins - Configuration - 빌드 후 조치 추가 - Deploy war/ear to a container
728x90
반응형
'Server' 카테고리의 다른 글
Github Action과 AWS CodeDeploy를 통한 CI/CD 설정 (0) | 2024.09.09 |
---|---|
[AWS] Slack Web hook 설정 중 invalid_payload 발생 (0) | 2024.08.14 |
[AWS] Putty 연결 시 Network error: Connection timed out (0) | 2024.08.14 |
[AWS] AWS 보안 그룹(Security Group) (0) | 2024.02.23 |