Files
chocomae/README.md
T
2026-09-14 15:50:24 +09:00

358 lines
9.2 KiB
Markdown

# [ 서비스 ]
## 운영 서버
- 초코마에
- http://chocomae.jinaju.com
- 초코마에 어드민
- https://chocoadmin.jinaju.com/
- 계정 정보: jisangs / friends
- (구) http://chocomae.jinaju.com/mouse_typing/src/web/admin/login.html
## 스테이지 서버
```text
💡 Gabia DNS에 도메인을 등록하지 않고, hosts에 등록해서 사용하는 이유
: stage URL이 검색 엔진에 노출되는 것을 방지
- Synology npm에도 등록 X
```
- hosts 설정
- Mac: /etc/hosts (root 권한으로 편집)
- Windows: C:\Windows\System32\drivers\etc\ (관리자 권한으로 메모장 실행 후 편집)
```bash
# Chocomae (Stage)
182.217.174.221 chocomae-stage.jisangs.com
182.217.174.221 chocoadmin-stage.jisangs.com
```
- 초코마에
- (30010 포트 지정) http://chocomae-stage.jisangs.com:30010/
- 초코마에 어드민
- (30011 포트 지정) http://chocoadmin-stage.jisangs.com:30011/
## 도메인
### Gabia - DNS 레코드 설정
- DNS 도메인 레코드 등록
| Type | Host | 값 | TTL |
| --- | --- | --- | --- |
| A | chocomae | 13.124.33.235 | 600초 |
| CNAME | chocoadmin | jisangs.synology.me. | 600초 |
- Gmail 발송시 스팸 방지 SPF 레코드 추가 (support@jinaju.com)
| Type | Host | 값 | TTL |
| --- | --- | --- | --- |
| TXT | @ | v=spf1 include:_spf.google.com ~all | 3,600초 |
- 검색엔진, 포털 등록
| 포털 | 등록 정보 |
| --- | --- |
| 다음 | 다음 검색 (jisangs@daum.net) |
| 네이버 | Search Advisor (jisangs@naver.com) |
| 구글 | (아직 미등록) 구글 서치 콘솔 |
# [ 주요 개발 환경 ]
## 개발 기술
- 애플리케이션
| 기술 | 내용 |
| --- | --- |
| Apache2 | 웹 서버 |
| BootStrap | 프론트엔드 툴킷 |
| PHP7 | DB 접속용 외부 API |
| MySQL5 | DataBase |
| Phaser2 | Application contents 제작 |
- 배포 환경
| 기술 | 내용 |
| --- | --- |
| Docker | 운영 서버 환경 |
## 개발 툴
- 개발 툴
| 툴 | 내용 |
| --- | --- |
| MAMP 5.3 | • Apache2
• PHP 7.3.1
• MySQL 5.7.25 |
| IntelliJ IDEA Ultimate | 통합개발환경 |
| DBeaver | DB 클라이언트 |
| Affinity Designers | 이미지 작업 (벡터 기반) |
| Piskelapp | 도트 이미지, 애니메이션 |
## 프로젝트 관리
- 저장소
| 내용 | 저장소 | 디렉토리 |
| --- | --- | --- |
| gitea | git.jisangs.com | ssh://git@git.jisangs.com:30005/jisangs/chocomae.git |
| gitea | git.jisangs.com | ssh://git@git.jisangs.com:30005/jisangs/chocoadmin.git |
- 관리툴
| 툴 | 내용 |
| --- | --- |
| Git | 소스 관리, release 배포 |
| Notion | 작업 문서, 진행 상황 정리 |
- 작업 폴더
| 내용 | 저장소 | 디렉토리, URL |
| --- | --- | --- |
| 개발 소스 | iMac | /Application/MAMP/htdocs/mouse_typing |
| PSD 작업 파일 | Synology | /volume1/work/project/2017_초코마에/Photoshop |
| DB 백업 | Synology | /volume1/work/service/chocomae/db-backup |
| 견적 요청 | Synology | /volume1/work/service/chocomae/견적 요청 |
| 에듀집 | Synology | /volume1/work/service/chocomae/에듀집 |
# [ DB ]
DB 운영, 관리 작업
### 운영 서버 (AWS)
- URL: chocomae.jinaju.com
- port: 3306
- DB 계정
- root / sEobMPuJ2A8KTfwU
- chocomae / sEobMPuJ2A8KTfwU
- backup / sEobMPuJ2A8KTfwU
### 시놀로지 도커 DB
시놀로지 도커 컨테이너간에 proxy-network로 묶여 있음
- URL: mariadb.jisangs.com
- port: 30001
- DB 계정
- root / 오이나파크!
- chocomae / (대문자)친구들95
# [ 운영 서버 ]
## AWS
- Host: chocomae.jisangs.com (13.124.33.235)
- SSH (port 22)
| ID | PW |
| --- | --- |
| ubuntu | a오이나파크! |
- 주요 폴더
| 내용 | 폴더 |
| --- | --- |
| 초코마에 서비스 | /var/www/html/mouse_typing |
| Maria DB 설정 | /etc/mysql |
| Maria DB 로그 | /var/log/mysql |
## Synology
- Host: jisangs.synology.me
- SSH (port 22)
| ID | PW |
| --- | --- |
| happyhome | s오이나파크!(올해년도) |
- 주요 폴더 (Synology 기준)
| 내용 | 폴더 | 비고 |
| --- | --- | --- |
| 초코어드민 (production) | /volume1/docker/service/jinaju/chocoadmin | chocoadmin (production) 도커 |
| 초코마에 운영 DB 백업 | /volume1/work/service/chocomae/db-backup/daily-backup | 매일 04:00마다 운영 DB 풀백업 |
| 마에스트로 계정 백업 | /volume1/work/service/chocomae/db-backup/maestro-data | 삭제된 마에스트로-학생 데이터 백업 |
# [ 스테이지 서버 ]
## Synology
- 주요 폴더 (Synology 기준)
| 내용 | 폴더 | 비고 |
| --- | --- | --- |
| 초코마에 (stage) | /volume1/docker/service/jisangs/chocomae-stage | chocomae (stage) 도커 |
| 초코어드민 (stage) | /volume1/docker/service/jisangs/chocoadmin-stage | chocoadmin (stage) 도커 |
| Stage DB | /volume1/docker/db/mariadb | mariadb 도커 (30001) |
- ipTIME 포트포워드
| 내용 | 외부 포트 | 내부 IP | 내부 포트 |
| --- | --- | --- | --- |
| Docker - chocomae-stage - http | 30010 | synology IP | 30010 |
| Docker - chocoadmin-stage - http | 30011 | synology IP | 30011 |
## Synology NAS Docker
### chocoadmin
- /volume1/docker/service/jinaju/chocoadmin
- docker-compose.yml
```bash
services:
# 서비스 이름은 Docker 네트워크 alias로 등록되므로 stage(chocoadmin-stage)와 겹치면 안 된다.
# 겹치면 Docker DNS가 라운드로빈으로 두 컨테이너에 트래픽을 분산시킨다.
chocoadmin:
build:
context: .
dockerfile: Dockerfile
image: chocoadmin:latest
container_name: chocoadmin
expose:
- "3000"
env_file:
- .env.production
environment:
NODE_ENV: production
APP_ENV: production
PORT: 3000
HOSTNAME: 0.0.0.0
TZ: Asia/Seoul
networks:
- proxy-network
restart: unless-stopped
# Synology 기본 db 로그 드라이버는 대량 로그 버스트 시 메시지를 드롭한다.
# json-file(blocking 모드)은 무손실 — 표/SQL 로그 잘림 방지.
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
networks:
proxy-network:
external: true
```
### chocoadmin-stage
- /volume1/docker/service/jisangs/chocoadmin-stage
- docker-compose.stage.yml
```bash
services:
# 서비스 이름은 Docker 네트워크 alias로 등록되므로 production(chocoadmin)과 겹치면 안 된다.
# 겹치면 Docker DNS가 라운드로빈으로 두 컨테이너에 트래픽을 분산시킨다.
chocoadmin-stage:
build:
context: .
dockerfile: Dockerfile
image: chocoadmin-stage:latest
container_name: chocoadmin-stage
expose:
- "3000"
env_file:
- .env.stage
environment:
NODE_ENV: production
APP_ENV: stage
PORT: 3000
HOSTNAME: 0.0.0.0
TZ: Asia/Seoul
ports:
- "0.0.0.0:30011:3000"
networks:
- proxy-network
restart: unless-stopped
# Synology 기본 db 로그 드라이버는 대량 로그 버스트 시 메시지를 드롭한다.
# json-file(blocking 모드)은 무손실 — 표/SQL 로그 잘림 방지.
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
networks:
proxy-network:
external: true
```
### proxy-network
- mariadb ↔ chocomae-stage
- mariadb ↔ chocoadmin-stage
# [ 배포 ]
## 초코마에
### 운영 서버
1. https://jenkins.jisangs.com/ 로그인
2. [ chocomae > chocomae (production) ] 메뉴 실행
3. 왼쪽 사이드바에서 [지금 빌드] 버튼 클릭
### 스테이지 서버
1. https://jenkins.jisangs.com/ 로그인
2. [ chocomae > chocomae (stage) ] 메뉴 실행
3. 왼쪽 사이드바에서 [지금 빌드] 버튼 클릭
## 초코어드민
### 운영 서버
1. 터미널로 시놀로지 접속
2. chocoadmin 운영 도커 디렉토리 이동
```bash
cd /volume1/docker/service/jinaju/chocoadmin
```
3. stage용 deploy.sh 실행
```bash
./deploy/deploy-production.sh
```
4. 운영 서버 배포 실행 계속하기 확인
```bash
운영 서버에 배포합니다. 계속하시겠습니까? (yes 입력)
# yes 입력
```
5. chocoadmin 운영 도커 빌드 및 컨테이너 재시작
- git pull
- proxy-network 확인
- 도커 빌드 및 컨테이너 재시작
- npm 리로드
### 스테이지 서버
1. 터미널로 시놀로지 접속
2. chocoadmin 운영 도커 디렉토리 이동
```bash
cd /volume1/docker/service/jisangs/chocoadmin-stage
```
3. stage용 deploy.sh 실행
```bash
./deploy/deploy-stage.sh
```
4. chocoadmin 운영 도커 빌드 및 컨테이너 재시작
- git pull
- proxy-network 확인
- 도커 빌드 및 컨테이너 재시작
- npm 리로드