- SpringBoot
- JAVA
- MariaDB
- GitHub-Action CI/CD
- HTML
- CSS
- JS
- Bootstrap
- CentOS
- jQuery
- NAVER Cloud
- IntelliJ IDEA
- DBeaver
- Termius
목록 | 요구사항 | 구현여부 |
---|---|---|
RQ1 | 회원은 자유게시판 게시글 등록이 가능하다 | O |
RQ2 | 회원은 본인이 작성한 자유게시판 게시글 수정이 가능하다 | O |
RQ3 | 회원은 본인이 작성한 자유게시판 게시글 삭제가 가능하다 | O |
RQ4 | 회원은 자유게시판 게시글에 댓글 등록이 가능하다 | O |
RQ5 | 회원은 본인이 작성한 자유게시판 게시글에 댓글 수정이 가능하다 | O |
RQ6 | 회원은 본인이 작성한 자유게시판 게시글에 댓글 삭제가 가능하다 | O |
RQ7 | 페이지 상단에 네비게이션 바를 구현하고 메뉴에는 자유게시판, 공지사항, 사진첩 이 있고 오른쪽에는 로그인관련 버튼이 있다 | O |
RQ8 | 회원가입이 가능하다 | O |
RQ9 | 가입한 아이디로 로그인이 가능하다 | O |
RQ10 | 로그인 상태에서 로그아웃이 가능하다 | O |
RQ11 | 게시글을 페이징처리 한다. | O |
RQ12 | 자유게시판 목록 상단의 버튼으로 인해 해당 장르의 게시글만 필터링하여 확인이 가능하다 | O |
RQ13 | 로그인시 네비게이션바에 로그인 버튼이 사라지고 로그아웃 버튼이 생긴다 | O |
RQ14 | 게시글 목록의 게시글제목 옆에 댓글수가 나타난다 | O |
RQ15 | 게시글 목록에 해당 게시글의 조회수가 표시된다 | O |
RQ15 | 자유게시판의 게시글을 접속 할 때마다 조회수가 올라간다 | O |
RQ16 | 회원은 사진첩 게시글 등록이 가능하다 | O |
RQ17 | 회원은 본인이 작성한 사진첩 게시글 수정이 가능하다 | O |
RQ18 | 회원은 본인이 작성한 사진첩 게시글 삭제가 가능하다 | O |
RQ19 | 회원은 사진첩 게시글에 댓글 등록이 가능하다 | O |
RQ20 | 회원은 본인이 작성한 사진첩 게시글에 댓글 수정이 가능하다 | O |
RQ21 | 회원은 본인이 작성한 사진첩 게시글에 댓글 삭제가 가능하다 | O |
RQ22 | 공지사항의 게시글을 작성할 수 있다 | O |
RQ23 | 공지사항의 게시글을 수정할 수 있다 | O |
RQ24 | 공지사항의 게시글을 삭제할 수 있다 | O |
RQ25 | 메인페이지에는 설정한 배너가 슬라이드쇼로 나타난다 | O |
RQ26 | 메인페이지에는 자유게시판의 게시글과 공지사항의 게시글이 최신순으로 5개까지 리스트로 나타난다 | O |
RQ27 | 메인페이지에는 해당 이름의 페이지로 이동할 수 있는 버튼이 존재한다 | O |
@GetMapping(value = "/freenotice/sort/{key}")
public String sortlist(Model model , @PathVariable("key") String sortkey ,@RequestParam(value = "page",defaultValue = "0")int page ,
@RequestParam(value = "kw",defaultValue = "")String kw ){
String key;
if(sortkey.equals("free")){
key="자유";
Page<FreeNotice> paging = this.freeNoticeService.getList(page,kw,key);
int FreeNoticeCount = paging.getNumberOfElements();
model.addAttribute("paging",paging);
model.addAttribute("FreeNoticeCount",FreeNoticeCount);
} else if (sortkey.equals("vote")) {
key="추천";
Page<FreeNotice> paging = this.freeNoticeService.getList(page,kw,key);
int FreeNoticeCount = paging.getNumberOfElements();
model.addAttribute("paging",paging);
model.addAttribute("FreeNoticeCount",FreeNoticeCount);
} else if (sortkey.equals("party")) {
key="파티원구함";
Page<FreeNotice> paging = this.freeNoticeService.getList(page,kw,key);
int FreeNoticeCount = paging.getNumberOfElements();
model.addAttribute("paging",paging);
model.addAttribute("FreeNoticeCount",FreeNoticeCount);
} else if (sortkey.equals("question")) {
key="질문";
Page<FreeNotice> paging = this.freeNoticeService.getList(page,kw,key);
int FreeNoticeCount = paging.getNumberOfElements();
model.addAttribute("paging",paging);
model.addAttribute("FreeNoticeCount",FreeNoticeCount);
}
return "FreeNotice_list";
}
네이버 클라우드에서 생성한 서버에 프로젝트 ci/cd 환경으로 배포하기
서버 ssh 터미널 접속
터미어스(or moba)를 이용해 해당 서버의 터미널로 접속을 한다.
배포도구 다운로드
epel-release / docker / mariaDB
// yum 업데이트
yum install epel-release -y
yum update -y
//도커 설치
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker
systemctl enable docker
// 컨테이너 실행 (mariaDB)
docker run \
--name mariadb_1 \
-d \
--restart unless-stopped \
-e MARIADB_ROOT_PASSWORD=root123414 \
-e TZ=Asia/Seoul \
-p 3306:3306 \
-v /docker_projects/mariadb_1/conf.d:/etc/mysql/conf.d \
-v /docker_projects/mariadb_1/mysql:/var/lib/mysql \
-v /docker_projects/mariadb_1/run/mysqld:/run/mysqld/ \
mariadb:latest
mariaDB 보안 권한설정 / 깃헙토큰 /깃헙플로우
보안상 해당 설정은 비공개로 포스팅.
깃헙에서 러너 생성
깃헙 레포지토리 > 셋팅 > 액션 > 러너 > 리눅스
나오는 명령문을 실행하고 오류가 날경우 아래 유틸 다운로드
깃헙액션 오류 해결을 위한 유틸 다운로드
shasum 설치
-shasum은 SHA 메시지 다이제스트, 암호화 체크섬 또는 암호화 해시코드를 계산하는 데 사용됩니다.
#Reference : https://linuxhint.com/shasum-linux/
yum install perl-Digest-SHA -y
환경변수 설정
-GitHub action 은 기본적으로 루트 권한으로 실행되지 않도록 설계
-환경 변수 설정을 통해 루트 권한으로 실행할 수 있도록 허용해주면 원하는 작업을 성공할
export RUNNER_ALLOW_RUNASROOT="1"
Dotnet 6.0 설치
-닷넷 종속성 누락 설치
-아래의 명령어로 누락된 종속성을 설치할 수 있다.
./bin/installdependencies.sh
러너 실행
Enter the name of the runner group to add this runner to : #엔터
Enter the name of runner : #엔터
Enter any additional label : work-1 #워크플로우에 작성했던 라벨명
Enter name of work folder : #엔터
-완료 후 ./run.sh를 백그라운드로 실행
nohup ./run.sh &
실행 완료 / 오류 해결로그
완료 시 아래처럼 main branch에 git push를 할경우 자동으로 반영되어 재배포 된다.
도커이미지 빌드와 푸시 시 403오류: 권한설정 문제로 토큰설정이 잘못되어 발생하였다.
워크플로우의 yml파일 안에 토큰파일명이 잘못되어 해당내용 수정 후 해결
도커배포 시 무한대기 : 설정한 워크플로우 이름과 yml의 워크플로우 이름이 상이해 발생하였다. yml 워크플로우 이름 변경 후 해결