Commit 37fce807 authored by JooHan Hong's avatar JooHan Hong

GIT 서버 이관

parent 28488081
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# 홍쓰넷 채팅서비스 소개
홍쓰넷은 `2020년 06월`부터 Slack 메신저를 통한 커뮤니케이션을 개설 했었습니다. 그런데 3개월 정도 운영을 해보니, 다음과 같은 이슈들이 발생되었습니다.
- 회원입장에서 Slack에 로그인 및 가입이 필요
- Slack은 운영자 입장에서도 여러가지 불편함이 존재
- 묻고답하기 게시판은 실시간으로 문의하기가 불가능
따라서 다음과 같은 홍쓰넷 자체적으로 채팅 서비스를 운영하기로 결정했으며, 시스템 구축도 완료 됐습니다.
> Mattermost(메타모스트) 오픈소스 솔루션
# Mattermost 솔루션 운영이점
- Slack과 같이 별도의 가입이 불필요 합니다. 단, 홍쓰넷의 회원이여야 합니다.
- 웹 브라우저로 접근이 가능하며, 모바일 APP도 제공 합니다.
- **기본적으로 Public Channel** 이므로, 회원간의 커뮤니케이션도 가능 합니다.
- 회원이 원하는 날짜에 요청이 가능 합니다. 단, **관리자의 스케쥴에 따라 거부될 수 있습니다.** [ 홍쓰넷의 신청페이지 추가 ]
> 홍쓰넷 채팅접속 URL : https://chat.hongsnet.net
# 채팅솔루션에 회원추가절차
> 홍쓰넷 회원만 신청이 가능합니다. 만약 회원이 아닌 분들이 신청하시면, 거부 됩니다.
- [ `STEP 1` ] : https://chat.hongsnet.net 으로 접속 합니다.
- [ `STEP 2` ] : 다음과 같이 계정을 신청 합니다.
![hongsnet-matt1](/uploads/965577e83308b5063b4a25eb1a4d2df8/hongsnet-chat.png)
**Create one now**를 클릭 하십시오.
- [ `STEP 3` ] : 이메일/아이디/패스워드를 입력 합니다.
![hongsnet-matt2](/uploads/ffd9bcb0930dd5f9def6776f7dbeb0fd/hongsnet-matt2.png)
마지막으로 **계정 만들기** 버튼을 클릭 하십시오.
# 채팅서비스 신청절차
홍쓰넷 Index페이지 -> `관리자와의 실시간 커뮤케이션 : [ 채팅신청및현황 ]` -> 원하는 정보입력 후 신청
- [ `STEP 1` ] : 홍쓰넷 Index 페이지의 메뉴를 확인 하십시오.
![chat2](/uploads/989f21337fd899c7885aa21a44a50c30/chat2.png)
**채팅신청** 링크를 클릭 하십시오.
- [ `STEP 2` ] : 그럼 새창이 뜨는데, 신청폼을 작성하기위해 "채팅일정접수" 링크를 클릭 합니다.
![hongsnet-matt4](/uploads/b840d0d8e91ee54658f87cd5e674653c/hongsnet-matt4.png)
- [ `STEP 3` ] : 신청내역을 입력 합니다.
![hongsnet-matt5](/uploads/bebbc8b2e6876364c0961cd07d7bcaf5/hongsnet-matt5.png)
- **아이디** : 홍쓰넷에 가입에 회원아이디를 입력하여야 합니다.
- **이메일** : 홍쓰넷에 가입한 회원의 이메일주소를 입력하여야 합니다.
- **신청일자** : 클릭하면 달력이 출력되며, 원하는 일자를 지정하시면 됩니다.
- **신청시간** : 세부적인 시간을 입력 합니다. e.g, 14:30
- **신청구분** : 해당되는 내역을 선택 합니다.
- 채팅멤버추가 : 신규로 가입을 위한 신청
- 채팅신청 : 관리자에게 채팅을 신청
- 기타 : 그 외의 내역
- **신청사유** : 어떤 내용으로 인한 신청인지를 명시하여 주십시오.
관리자가 항상 응답할 수 없는 상황이며, **별도의 시간을 할애해야 하기 때문에 사유를 받아야 합니다.**
여기까지 모두 진행을 하셨으면, 작성&신청은 완료된 상태 입니다. **관리자의 피드백을 기다리시면 됩니다.**
# 채팅서비스 로그인
![hongsnet-matt1](/uploads/d1c69fc01fd006fed6b095f3f84cd556/hongsnet-matt1.png)
# 홍쓰넷 CI/CD 서비스시연
홍쓰넷에서 제공하는 CI/CD 서비스는 다음 내역을 미리 참조하셔야 합니다.
- `git / ssh 만 지원` ( 향후 tomcat war 배포에 대한 기능도 추가할 예정 )
- git / jenkins 시스템모두 각각 네트워크 속도(Bandwidth)가 제한 : `30Mbps/second`
- 단, Jenkins와 호스팅서버간의 Private Network는 `1Gbps`
# 홍쓰넷 CI/CD 구성도
![hongsnet_ci_cd](/uploads/54ca0c85cd5d9a0c9ab59df178146478/hongsnet_ci_cd.png)
# STEP 1 : 홍쓰넷 Git 저장소를 Clone
먼저 https://git.freehongs.net 에 로그인 한 후 아래와 같이 Clone을 클릭 합니다.
![gitlab1](/uploads/253b1616094dd89f8e7959684a0ff4fb/gitlab1.png)
그 후 PC에서 각종 Git 툴을 사용하여, 다음과 같이 Clone 합니다.
```bash
$ git clone https://GitLAB_ID_Token@git.freehongs.net/GitLAB_ID_Token/GitLAB_Project_Token.git
Password for 'https://GitLAB_ID_Token@git.freehongs.net':
Cloning into 'GitLAB_Project_Token'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 27 (delta 8), reused 24 (delta 5), pack-reused 0
Unpacking objects: 100% (27/27), done.
```
그리고 위의 복잡한 Token 정보로 인해, 매번 로그인을 해야하기 때문에 Credential.helper 설정을 다음과 같이 진행 합니다. 이 로그인 정보는 `반영구적으로 보관` 됩니다.
```bash
$ git config --global credential.helper store
```
> 중요 : 홍쓰넷 GitLAB은 https만 지원하기 때문에 반드시 https://GitLAB_ID_Token@git.freehongs.net/GitLAB_ID_Token/GitLAB_Project_Token.git 형식으로 Clone 해야 합니다. 만약 이 형식이 아닐 경우 Credential.helper 설정이 동작하지 않습니다.
# STEP 2 : GitLAB에 Jenkins WebHook을 등록 [ 관리자가 사전에 세팅수행 ]
# STEP 3 : Jenkins 프로젝트의 Build Script를 작성
> https://jenkins.freehongs.net
홍쓰넷 로그인정보를 입력하여 로그인 합니다.
![jenkins](/uploads/163900156a5c270e32e55b3f10b2771b/jenkins.png)
> Jenkins ID & Project Token 정보는 홍쓰넷 MYPAGE에 있습니다.
로그인이 완료되었으면, 미리 생성된 프로젝트의 구성으로 이동 합니다.
![jenkins1](/uploads/7d000e98db9876651ef717a76bbe45b2/jenkins1.png)
Build 후 조치는 회원이 직접 작성해야하는 것으로써 홍쓰넷관리자는 다음과 같은 구성을 통해 배포하고 있습니다.
![jenkins2](/uploads/1ea18be09c88fc3c4a04a3a21c864734/jenkins2.png)
> SSH 서버의 홈디렉토리는 `/homeX/계정명` 입니다. 자세한 내역은 홍쓰넷 MYPAGE를 참조하세요.
- `Name` : 관리자가 등록한 회원의 SSH 접속서버명(홍쓰넷 MYPAGE에 SSH Token을 참조)
- `Source files` : 배포할 소스파일을 입력합니다. 위 처럼, 특정 파일을 지정할 수 있고, `**/*`와 같이 전체파일을 지정할 수도 있습니다.
- `Remove prefix` : 경로 중에 제거할 필요가 있는 경로를 지정
- `Exec command` : 빌드 후 호스팅서버에 실행할 명령어를 지정, 아래는 관리자가 사용하는 예시 입니다.
아래의 명령은 빌드를 수행한 후 `톰캣을 중지 후 2초대기하고, 다시 시작하는 명령`을 지정한 예시(위 그림의 빨강네모박스) 입니다.
```bash
export JRE_HOME=/homeX/계정명/jdk
export JAVA_HOME=/homeX/계정명/jdk
export ANT_HOME=/homeX/계정명/ant
export CATALINA_HOME=/homeX/계정명/tomcat
export CATALINA_BASE=/homeX/계정명/tomcat
export CATALINA_PID=/homeX/계정명/tomcat/catalina.pid
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/*:.
export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$ANT_HOME/bin:$PATH:$HOME/bin
LD_LIBRARY_PATH=/homeX/계정명/jdk/bin/../lib/jli
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/homeX/계정명/tomcat/lib
export LD_LIBRARY_PATH
tomcat/bin/shutdown.sh
sleep 2
tomcat/bin/startup.sh
```
<!--
- `-avz` : 아카이브 모드, 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
- `--progress` : 진행과정을 세부적으로 출력
- `--delete` : 로컬(Jenkins)과 원격(호스팅서버)와의 차이가 발생한 파일을 제거
- 이 옵션을 통해 로컬과 원격지의 소스를 동기화활 수 있습니다.
- ./ : 현재 로컬의 경로를 의미 합니다.
- 172.16~~ : 홍쓰넷 MYPAGE에 명시되어있는 `CI/CD 사설IP` 필드의 값을 입력해야 합니다.
- ~~Fbcurm : 각 사용자별로 생성된 SSH Token 값으로서 홍쓰넷 MYPAGE에 명시되어 있는 `SSH Token` 필드의 값을 입력해야 합니다.
- `/ROOT/` : 경로를 의미 합니다. 다음의 호스팅별로 차이가 있으므로, 주의해야 합니다.
- JSP 호스팅 : ~/tomcat/webapps [ Default 경로 ]
- e.g, Rsync_Token/ROOT/ => ~/tomcat/webapps/ROOT/ 를 의미
- PHP 호스팅 : ~/public_html [ Default ]
- e.g, Rsync_Token/ => ~/public_html/ 를 의미
-->
# STEP 3-1 : 실질적인 소스배포를 진행
- GitLab 저장소 정보
```bash
$ git remote -v
origin https://GitLAB_ID_Token@git.freehongs.net/GitLAB_ID_Token/GitLAB_Project_Token.git (fetch)
origin https://GitLAB_ID_Token@git.freehongs.net/GitLAB_ID_Token/GitLAB_Project_Token.git (push)
```
- 호스팅 서버의 파일리스트
```bash
[SSH:~/tomcat/webapps/ROOT]$ ls
[SSH:~/tomcat/webapps/ROOT]$
```
다음과 같이 index.html 파일을 만들어 배포되는 것을 확인해 보겠습니다.
```bash
$ cat index.html
<html>
<head>
<title> www.hongsnet.net </title>
</head>
<body>
Hello www.hongsnet.net!
</body>
</html>
```
다음과 같이 추가하고 commit 합니다.
```bash
$ git add index.html
$ git commit -m "www.hongsnet.net, test index.html"
[master a7c9bd9] www.hongsnet.net, test index.html
1 file changed, 8 insertions(+)
create mode 100644 index.html
```
마지막으로 push 합니다.
```bash
$ git push -u origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 334 bytes | 111.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://git.freehongs.net/GitLAB_ID_Token/GitLAB_Project_Token.git
4347838..a7c9bd9 master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
```
# STEP 3-2 : `GitLab/Jenkins/호스팅서버`의 배포내역을 확인
- **GitLAB**
![jenkins3](/uploads/cd657b9600c90d318b39e80ec27ca93b/jenkins3.png)
- **Jenkins**
![jenkins4](/uploads/847764870353be86235f863651a871b0/jenkins4.png)
클릭한 **"Console Output"** 을 보면, 다음과 같이 정상적으로 서버에 업로드된 것이 확인 됩니다.
```plaintext
Started by GitLab push by XXXX
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/XXXX
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Deferred wipeout is used...
[WS-CLEANUP] Done
The recommended git tool is: NONE
using credential XXXXXX
Cloning the remote Git repository
Cloning repository https://git.freehongs.net/XXXX/XXXXX.git
> git init /var/lib/jenkins/workspace/XXXXX # timeout=10
Fetching upstream changes from https://git.freehongs.net/XXXX/XXXXX.git
> git --version # timeout=10
> git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials XXXXX GIT LAB
> git fetch --tags --progress https://git.freehongs.net/XXXXX/XXXXX.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git config remote.origin.url https://git.freehongs.net/XXXXXX/XXXXX.git # timeout=10
> git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
skipping resolution of commit remotes/origin/master, since it originates from another repository
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 58a6d (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 58a6d # timeout=10
Commit message: "index.html 업데이트"
> git rev-list --no-walk 8ee # timeout=10
SSH: Connecting from host [jenkins.freehongs.net]
SSH: Connecting with configuration [XXXXXXX] ...
SSH: EXEC: completed after 3,602 ms
SSH: Disconnecting configuration [XXXXXX] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS
```
> SSH: EXEC: completed after 3,602 ms 톰캣 재시작명령들이 정상적으로 완료되었다는 메시지이며, 실제 서버에서도 정상적으로 동작 합니다.
- **호스팅 서버**
다음과 같이 정상적으로 배포된 것을 확인할 수 있습니다.
```bash
$ ls -al
total 16
drwxr-xr-x 3 1XXX XXXX 4096 Jan 4 18:55 .
drwxr-xr-x 3 1XXX XXXX 4096 Jan 4 03:21 ..
-rw-r--r-- 1 1XXX XXXX 111 Jan 4 18:55 index.html
```
# STEP 4 : 배포한 index.html 파일이 제대로 변경되었는지를 검증
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# GIT 저장소 제공안내
이곳은 `홍쓰넷(www.hongsnet.net)` 회원에게 제공되는 GIT 저장소 입니다. 이 저장소를 사용하려는 회원은 전제조건이 붙습니다. 아래의 `가입조건`을 참조하시기 바랍니다.
> https://git.freehongs.net
# GIT 이란
`깃(Git /ɡɪt/)`은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 `버전 관리 시스템`이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만, 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. 기하학적 불변 이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것이 특징이며 `데이터 무결성, 분산, 비선형 워크플로를 지원`한다.
참조 URL : [위키백과](https://ko.wikipedia.org/wiki/%EA%B9%83_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4))
# GIT을 통한 효율성
- [ ] `FTP/SFTP`와 같이 단일 환경에서의 개발을 통한 버전관리의 어려움을 최소화할 수 있습니다.
- [ ] 분산 버전관리 시스템이기 때문에 집/회사/등의 PC에서 개발한 데이터를 최신으로 동기화할 수 있습니다.
- [ ] (홍쓰넷추가지원) GitLab DevOPS 툴 제공에 따른 웹 인터페이스 등을 지원
# GIT 저장소 이용제한
- `git.freehongs.net` 저장소의 네트워크 속도제한(Bandwidth Limit)은 **30 Mbps** 입니다. 만약 특정 회원이 다량의 파일을 commit 후 push하게될 경우 접속/응답속도가 지연되는 영향을 받을 수 있습니다.
- 생성할 수 있는 프로젝트는 **회원당 1개**만 지원 됩니다.
- 프로젝트 restrict는 `private`만 가능합니다.
- 한 번에 push할 수 있는 `최대 용량은 200MB` 입니다.
- 저장소의 용량을 제한하거나 하진 않지만, 대용량을 사용하는 회원은 관리자의 판단에 따라 제제가 가해질 수 있습니다.
- **ssh**를 이용한 clone은 지원하지않으며, `https만 지원` (ssh 불가) 됩니다.
# GIT 저장소 가입조건
- 저장소 계정은 호스팅신청 시 기본적으로 제공되지않으며, **회원님이 별도로 요청**하셔야 합니다.
- **회원등급이 GOLD** 인 회원은 기본적으로 저장소를 사용할 수 있는 자격에 해당 합니다
- **회원등급이 일반**이지만, 개발에 필요할 경우라고 관리자가 판단한 경우에는 사용자격에 해당될 수 있습니다.
# 홍쓰넷 CI/CD 서비스적용 전 사전작업
먼저 아래의 링크를 참조하여, `사전에` 홍쓰넷에 CI/CD 서비스의 `git 서비스의 신청 및 처리완료`가 되어야 합니다.
> 홍쓰넷 CI/CD 서비스신청 : https://git.freehongs.net/hongsnet/overview/tree/master/JENKINS
# 홍쓰넷 GitLab 로그인
> 홍쓰넷 GitLab 사이트 URL : https://git.freehongs.net
- 신청 후 처리가 완료되면, 홍쓰넷 로그인정보를 입력하여 로그인 합니다.
![gitlab](/uploads/29deb8810282e1220dc45e0dd4402201/gitlab.png)
> GitLAB의 ID & Project Token 정보는 홍쓰넷 MYPAGE에 있습니다.
그럼 다음과 같이 `관리자가 생성한` 회원의 GitLab 프로젝트가 보입니다.
![gitlab100](/uploads/e48075632c8a7c5ab9fbbb44cc05ed07/gitlab100.png)
> 마크다운형식의 문서작성 시 참고사이트 : https://gist.github.com/ihoneymon/652be052a0727ad59601
> Git 명령어 참고사이트 : https://tagilog.tistory.com/377
여기까지 완료되었으면, `개인 Git 저장소가 생성되었으며, 실질적으로 Git을 사용할 수` 있습니다. 자세한 내역은 위의 참고사이트들을 참고하세요.
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# JSP 호스팅신청 절차
홍쓰넷 호스팅은 다음의 절차에 따라 신청 및 세팅이 진행 됩니다.
> 회원가입 -> OTP 인증 -> 호스팅신청 -> 관리자세팅 -> 완료
# JSP 호스팅 초기설정
- 호스팅세팅완료 후 확인
> MYPAGE 이동(로그인 필수) > 기본서비스정보 확인
![jsp_hosting1](/uploads/82032ff5743e9d1be1f719086965de80/jsp_hosting1.png)
- 호스팅계정정보 확인
> MYPAGE > 서버접속확인
![jsp_hosting2](/uploads/9e31db1c302a4148b63ddf05cc7b057a/jsp_hosting2.png)
1. 서버계정의 패스워드정보를 확인하려면, "계정비밀번호 보기" 버튼을 클릭 합니다.
2. SSH/SFTP 접속은 기본적으로 접근이 불가능하며, 접속을 원할경우 "서버접속IP 관리" 버튼을 통해 신청하셔야 합니다.
- 세팅완료 후 사이트접속
다음과 같이 호스팅세팅이 완료되면, 세팅완료 페이지가 기본적으로 응답하게 됩니다.
![jsp_hosting3](/uploads/31feac92ea79073f7ace80108017de43/jsp_hosting3.png)
# JSP 호스팅서버설정 확인
- [ `STEP 1` ] : MYPAGE의 "서버접속IP 관리" 버튼을 클릭하면 세창에 출력 됩니다.
![jsp_hosting4](/uploads/3ea83f00cb907d63ddbbb27e67f7b58e/jsp_hosting4.png)
1. 위의 "시작일자" 와 "종료일자" 를 선택합니다. 참고적으로 종료일자는 신청일을 기준으로 최대 1일만 제공 됩니다.
2. "허용할 IP주소" 는 현재 PC의 IP가 자동으로 기입되며, 만약 IP가 다를 경우 별도로 입력하시면 됩니다.
- [ `STEP 2` ] : 서버에 SSH를 이용하여 접근 및 로그인 합니다.
![jsp_hosting5](/uploads/f818686637ec7822da37d339706836a2/jsp_hosting5.png)
> 위의 SSH 클라이언트 프로그램은 putty 입니다.
```bash
login as: dem <- 서버계정의 아이디 입력
dem@아이디.freehongs.net's password: <- 서버계정 패스워드 입력
############################################################################################# #######
Now you have shell access is restricted environment drastically command is actually available .
Create and delete directories, Jean-focused functionality for account only for backup and rec overy
Because the environment as a means to a Linux/UNIX learning is virtually impossible to use.
== you can use the command ==
cat chmod chown cp grep gunzip gzip ls mkdir mv mysql mysqldump rm tar vi zip unzip pwd sed
tail expr id uname sort date git
############################################################################################# #######
[SSH:~]$
```
- [ `STEP 3` ] : 위와 같이 로그인을 완료했으면, 디렉토리 및 파일들을 review 합니다.
```bash
[SSH:~]$ ls
ant jdk tomcat
```
> 이 경로가 회원계정의 최상위 경로 입니다.
```bash
[SSH:~]$ ls tomcat/
BUILDING.txt LICENSE README.md RUNNING.txt conf logs webapps
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib temp work
```
> Tomcat의 내역을 출력 합니다.
```bash
[SSH:~]$ ls tomcat/webapps/
ROOT ROOT.war hongsnet jsp_readme.txt
```
> JSP 호스팅의 소스가 위치하는 WebRoot의 내역을 출력 합니다.
- 위의 경로들은 다음과 같이 MYPAGE에서도 확인할 수 있습니다.
![jsp_hosting6-1](/uploads/2f0737824396b8165596b189c1ec3bc0/jsp_hosting6-1.png)
1. `주의 1` : Tomcat Shutdown/AJP 포트를 임의로 변경하시면, 사이트동작에 문제가 발생되며 만약 다른 회원에게 피해가 발생될 경우 통보없이 호스팅이 차단 됩니다.
2. `주의 2` : WebRoot는 변경이 가능(즉시 처리불가)하지만, 최대한 그대로 사용하기 바랍니다.
# JSP 호스팅 웹 소스적용 및 확인
웹 소스변경/배포는 대략적으로 다음과 같이 두 가지 방법이 사용될 것으로 보입니다.
- *.jsp 파일 등을 개별로 업로드하는 방법
- ROOT.war 파일을 이용한 전체배포 방법
## *.jsp 파일 등을 개별로 업로드하는 방법
다음과 같이 홍쓰넷에서 기본적으로 배포하는 세팅완료 페이지(index.html)를 변경하여 배포하는 방법은 다음과 같습니다.
사용하시는 에디터 프로그램 또는 SSH 클라이언트 프로그램을 통해 다음과 같이 소스를 변경해 보겠습니다.
```plaintext
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>:: HONGSNET FREEHOSTING ::</title>
<link href="https://www.hongsnet.net/css2/style_utf8.css" rel="stylesheet" type="text/css">
</head>
<body>
...중략
<tr><td align="center"><h2>여기를 수정했습니다!</h3></td></tr> <= 이 줄을 추가
<tr>
<td class="copyright" align="center">COPYRIGHT (C) 2010-2020 HONGSNET ALL RIGHT RESERVED.</td>
</tr>
</table>
</body>
</html>
```
![jsp_hosting7](/uploads/98b402e71aef52662c123b999a55afe9/jsp_hosting7.png)
> 홍쓰넷 JSP 호스팅은 기본적으로 웹 서버와 연동되기 때문에 html/image/css/js 등과 같이 Tomcat이 실행되지않아도 기본적인 html 웹 페이지의 동작은 가능 합니다.
## ROOT.war 파일을 이용한 전체배포 방법
세팅이 완료되면, 홍쓰넷에서 기본적으로 ROOT.war 파일이 배포 됩니다. 이 소스는 간단한 JSP 테스트 소스이며, 이용에 참고하시라는 목적으로 배포되기 때문에 문의는 사양 합니다.
```bash
[SSH:~]$ ls tomcat/webapps/
ROOT ROOT.war <- 이 파일 hongsnet jsp_readme.txt
```
> 중요 : ROOT.war 파일로 배포하려면, 먼저 현재 존재하는 ROOT 디레토리를 제거(rm -rf ROOT)하거나, 이름을 변경(mv ROOT ROOT_bak)해야 합니다.
```bash
[SSH:~/tomcat/webapps]$ ls
ROOT.war ROOT_bak <- ROOT_bak으로 변경처리한 결과 hongsnet jsp_readme.txt
```
- [ `STEP 1` ] : Tomcat을 실행해야 합니다.
먼저 tomcat/bin 디렉토리로 이동 합니다.
```bash
[SSH:~/tomcat/bin]$ pwd
/home2/dem/tomcat/bin
```
그런 후 startup.sh 스크립트를 실행하여, 톰캣을 기동 합니다.
```bash
[SSH:~/tomcat/bin]$ ./startup.sh
Using CATALINA_BASE: /home2/dem/tomcat
Using CATALINA_HOME: /home2/dem/tomcat
Using CATALINA_TMPDIR: /home2/dem/tomcat/temp
Using JRE_HOME: /home2/dem/jdk
Using CLASSPATH: /home2/dem/tomcat/bin/bootstrap.jar:/home2/dem/tomcat/bin/tomcat-juli.jar
Using CATALINA_PID: /home2/dem/tomcat/catalina.pid
Tomcat started.
```
- [ `STEP 2` ] : ROOT.war 파일의 내역들이 다음과 같이 Unpack 된 것을 볼 수 있습니다.
```bash
[SSH:~/tomcat/webapps]$ ls ROOT/
403.jsp 500.jsp META-INF css jdbctest.jsp tomcat.gif
404.jsp HelloWorld.jsp WEB-INF index.html session.jsp
```
- [ `STEP 3` ] : 사이트를 확인 합니다.
![jsp_hosting8](/uploads/b159a5432da1562336a5c6d8d360fe48/jsp_hosting8.png)
여기까지 완료되었으면, JSP 호스팅을 사용할 준비가 된 것입니다.
# Jenkins를 이용한 지속적인 배포(CI, Continuous Integration)
먼저 웹 소스파일을 개발하고 서버에 업로드하는 일반적인 과정을 살펴보겠습니다.
- [ `STEP 1` ] : PC에 개발소스를 개발하거나 수정한 후 저장
- [ `STEP 2` ] : SFTP/FTP를 이용하여, 웹 소스를 서버에 업로드
과정은 간단하지만, 여기에는 다음과 같은 이슈가 발생 됩니다.
- 개발소스를 개발한 PC에만 최신본이 존재
- 회사PC 등 외부에서 개발한 소스를 최신화하기가 번거로움 (버전관리의 어려움)
- 소스코드 Rollback 의 어려움
- 의도적인 상황 (소스코드의 잘못된 코딩)
- 실수가 발생된 상황에 대한 대처 (파일제거/덮어쓰기)
이런 이슈발생을 최소화하기 위해 홍쓰넷에서는 **GitLAB + Jenkins 솔루션**을 제공하여, 개발작업에 편의/관리적 이점을 드리고자 합니다.
# Jenkins 서비스제한 사항
- 호스팅 특성상 Bandwidth는 `30Mbps/s` 입니다.
- 30Mbps/s 는 전체속도이기 때문에 전체 사용자의 속도에 영향을 받습니다.
- 무료로 제공되는 서비스인만큼 향후 대역폭 상향은 불가능합니다 (홍쓰넷 관리자도 전체트래픽의 관리가 필요).
# 홍쓰넷 CI/CD 서비스구성도 및 절차
![hongsnet_ci_cd](/uploads/54ca0c85cd5d9a0c9ab59df178146478/hongsnet_ci_cd.png)
- [ `STEP 1` ] : 회원은 할당받은 계정을 이용해 **git(GitLab)** 저장소에 **push**를 수행 합니다.
- [ `STEP 2` ] : GitLab에 설정된 **WebHook 설정**을 이용해서 Jenkins에 Build 합니다.
- [ `STEP 3` ] : 회원 Jenkins 프로젝트의 Build 유발 설정을 작성 합니다.
- 홍쓰넷에서는 **ssh를 이용한 배포**만 지원 합니다.
- ssh를 수행하기위해서는 부가서비스를 신청하신 후 **Token 정보**를 받으셔야 합니다.
- [ `STEP 4` ] : 회원은 자신이 개발/변경한 소스코드가 제대로 적용되었는지를 검증 합니다.
# 홍쓰넷 CI/CD 서비스신청 절차
- [ `STEP 1` ] : 홍쓰넷에 로그인 후 MYPAGE로 이동하여, 하단의 서비스추가신청의 **"CI/CD 서비스"** 를 포커스 합니다.
![jenkins_hongs](/uploads/015ab90ae3936c81e860ca56985e9ea8/jenkins_hongs.png)
- [ `STEP 2` ] : **"CI/CD 서비스신청" 버튼**을 클릭하면, 다음과 같이 새창이 출력되면서 신청폼이 나타 납니다.
![jenkins-order2](/uploads/c079fffff49d8d238adf1743710e5ee9/jenkins-order2.png)
- [ `STEP 3` ] : GIT/JENKINS 를 모두 신청 합니다(각각 신청필요).
그럼 페이지 하단이력에 다음과 같이 **두 건의 접수완료가 접수 됩니다.**
![jenkins-order3](/uploads/28bf2bce827298ed00da32b0d4fda6f9/jenkins-order3.png)
> 주의 : Jenkins를 신청하시려면, 먼저 Git의 신청 및 처리가 완료되어야 합니다.
여기까지 완료되었으면, 관리자의 처리를 기다리셔야 합니다.
- [ `STEP 4` ] : 처리가 완료되면, 다음과 같이 **Token 정보**가 생성됩니다.
![jenkins_hongs2](/uploads/9626e53856163b2f4af717af306ae0e6/jenkins_hongs2.png)
여기까지 완료되었으면, Jenkins의 CI/CD 설정만 남게되며 다음의 절차대로 진행 됩니다.
- GitLAB ID/PW, Project, WebHook -> `관리자가 세팅`
- Jenkins ID/PW, Project -> `관리자가 세팅`
- CI/CD 적용 -> `회원이 세팅`
# 홍쓰넷 Jenkins 서비스
먼저 아래의 링크를 참조하여, `사전에` 홍쓰넷에 CI/CD 서비스의 `jenkins` 서비스신청 및 처리완료가 되어야 합니다.
> 홍쓰넷 CI/CD 서비스신청 : https://git.freehongs.net/hongsnet/overview/tree/master/JENKINS
# 홍쓰넷 Jenkins 로그인
> https://jenkins.freehongs.net
- [ `STEP 1` ] : 홍쓰넷 로그인정보를 입력하여 로그인 합니다.
![jenkins](/uploads/163900156a5c270e32e55b3f10b2771b/jenkins.png)
> Jenkins ID & Project Token 정보는 홍쓰넷 MYPAGE에 있습니다.
- [ `STEP 2` ] : 로그인을 완료하면, Jenkins Token과 같은 프로젝트가 생성되어있는 것을 볼 수 있습니다.
![jenkins2](/uploads/3003d49c969cdd99128ccec916946904/jenkins2.png)
여기까지 완료되면, Jenkins의 세팅도 완료된 것입니다.
# hongsnet
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# Table of Contents
| NO | 구분 | 내역 | 바로가기 | 비고 |
| ------ | ------ | ------ | ------ | ------ |
| 1 | GIT | 홍쓰넷 GIT 저장소제공안내 및 주의사항 | [GO](https://git.freehongs.net/hongsnet/overview/tree/master/GIT) | |
| 1-1 | CI | 홍쓰넷 CI 서비스제공안내 및 주의사항 | [GO](https://git.freehongs.net/hongsnet/overview/tree/master/JENKINS) | |
| 2 | Jenkins | 홍쓰넷 Jenkins CI/CD 툴 제공안내 및 주의사항 | [GO](https://git.freehongs.net/hongsnet/overview/tree/master/JENKINS) | |
| 3 | Chat | 홍쓰넷 채팅서비스안내 | [GO](https://git.freehongs.net/hongsnet/overview/tree/master/CHAT) | |
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment