Myd data server » 이력 » 버전 1
이름없음, 2023/07/11 05:20
1 | 1 | 이름없음 | h1. Getting Started On-Premise! |
---|---|---|---|
2 | |||
3 | <pre> |
||
4 | Category: Guide Document <br> |
||
5 | Last updated on: Jun 29, 2023 |
||
6 | </pre> |
||
7 | |||
8 | --- |
||
9 | |||
10 | > **Requirement and Supported OS** |
||
11 | > - Intel Celeron J4025 @ 2.00 GHz, 2.9 (burst) GHz or later |
||
12 | > - Memory 6GB or more |
||
13 | > - Ubuntu 20.04.6 version x86_64 |
||
14 | |||
15 | --- |
||
16 | |||
17 | h2. 1. Introduction MyD-Data-Center |
||
18 | |||
19 | | 구성 요소 | Docker container name | 설명 | |
||
20 | | Server | b2b.on-premise | openjdk:11.0.10-slim 기반의 web application server 로써 유일 하게 외부에 노출되는 서버 (17070 port), 암호화 및 복호화 및 데이터 수신 검증을 담당함 | |
||
21 | | DB | b2b.on-premise.db | mariadb:10.1.34 기반의 database | |
||
22 | | CsvConverter | Data-Analysis | tiangolo/uwsgi-nginx-flask:python3.9 기반의 Web application 으로써 json 데이터를 csv로 변환하는 역할을 담당 | |
||
23 | |||
24 | --- |
||
25 | |||
26 | h2. 2. Git repository 접근 권한 부여받기 |
||
27 | |||
28 | gitlab을 통해 MyD-Data-Center를 다운로드 받아 설치 할 수 있습니다. |
||
29 | SNPLAB측에 gitlab 계정을 전달해 주시면, 접근 권한을 부여해 드립니다. |
||
30 | |||
31 | --- |
||
32 | |||
33 | h2. 3. Ubuntu에 MyD-Data-Server 설치 준비 하기 |
||
34 | |||
35 | 해당 솔루션은 Linux 기반의 Docker 구동 가능한 환경에서 동작할 수 있습니다. |
||
36 | 해당 솔루션은 Ubuntu 20.04 기준으로 테스트되었으며 Server, Desktop 관계 없이 사용할 수 있습니다. |
||
37 | 설치 준비할 요소는 다음과 같습니다. |
||
38 | |||
39 | h3. Git 설치 |
||
40 | |||
41 | Git repository 로부터 서버 구성 요소를 다운로드 받기 위해 git을 설치해야 합니다. |
||
42 | |||
43 | ```shell |
||
44 | sudo apt install git |
||
45 | ``` |
||
46 | |||
47 | h3. Docker 설치 |
||
48 | |||
49 | Linux 상에서 docker container 를 구동하기 위해 docker engine 을 설치해야 합니다. |
||
50 | Ubuntu 기준으로는 아래와 같이 진행할 수 있습니다. |
||
51 | |||
52 | ```shell |
||
53 | sudo apt-get update |
||
54 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
||
55 | ``` |
||
56 | Ref: https://docs.docker.com/engine/install/ubuntu/ |
||
57 | |||
58 | h3. docker-compose 설치 |
||
59 | |||
60 | Linux 내에 container 배포를 위해서는 docker-compose 설치가 필요합니다. |
||
61 | |||
62 | ```shell |
||
63 | $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
||
64 | ... |
||
65 | $ sudo chmod +x /usr/local/bin/docker-compose |
||
66 | $ docker-compose --version |
||
67 | docker-compose version 1.29.2, build 5becea4c |
||
68 | ``` |
||
69 | |||
70 | Ref: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04 |
||
71 | |||
72 | --- |
||
73 | |||
74 | h2. 4. MyD-Data-Server 설치하기 |
||
75 | |||
76 | |||
77 | h3. Git 을 통해 파일 받기 |
||
78 | |||
79 | **1) git clone 으로 repository 설치하기** |
||
80 | |||
81 | ```shell |
||
82 | $ git clone https://gitlab.com/snplab1/myd-data-server.git |
||
83 | $ cd myd-data-server |
||
84 | ``` |
||
85 | **2) Setting database password** |
||
86 | |||
87 | Database 는 사용자의 자산이므로, password역시 사용자가 설정해야 합니다. |
||
88 | |||
89 | > 중요*** : 한번 설정된 password 는 변경시, database 내부의 데이터를 읽지 못하게 될 수 있으므로 신중히 기억하거나, 안전하게 보관해야 합니다 |
||
90 | |||
91 | 아래와 같이 .env.prod.hostmode 파일에서 PASSWORD 항목 2개를 찾아 변경합니다. |
||
92 | |||
93 | ```shell |
||
94 | $ vi .env.prod.hostmode |
||
95 | |||
96 | MYSQL_ROOT_PASSWORD=inputyourrootpassword // replace this |
||
97 | MYSQL_USER=cranberry |
||
98 | MYSQL_PASSWORD=inputyourpassword // replace this |
||
99 | ``` |
||
100 | |||
101 | **3) Docker container 시작하기** |
||
102 | |||
103 | 아래 명령어를 통해 간단하게 서버를 시작할 수 있습니다. |
||
104 | 최초 구동에는 python package 설치에 시간이 소요되어 네트워크 상태에 따라 3분가량 소요될 수 있습니다. |
||
105 | |||
106 | ```shell |
||
107 | $ docker-compose up -d |
||
108 | Creating Data-Analysis ... done |
||
109 | Creating b2b.on-premise ... done |
||
110 | Creating b2b.on-premise.db ... done |
||
111 | $ |
||
112 | ``` |
||
113 | |||
114 | h2. 4. MyD-Data-Server 설치 검증 |
||
115 | |||
116 | 설치후 동작 확인을 위해 아래 주소를 web browser 로 접근 하여 동작을 확인합니다. |
||
117 | |||
118 | ```shell |
||
119 | http://{your-ip-address}:17070 |
||
120 | ``` |
||
121 | |||
122 | 정상 설치 되었다면 아래와 같이 표시됩니다. |
||
123 | |||
124 | ``` |
||
125 | MyD data server status |
||
126 | |||
127 | Server version "1.0.0 (2023.06.30)" |
||
128 | CsvConverter "1.0.0 (2023.06.05)" |
||
129 | |||
130 | URL location http://{your-ip-address}:17070 |
||
131 | ``` |
||
132 | |||
133 | h2. 5. 외부 IP 및 HTTPS 설정 |
||
134 | |||
135 | 웹 어플리케이션 구동에 필요한 HTTPS 제공이 필요한 경우와, 불필요한 경우를 나누어 설명합니다. |
||
136 | |||
137 | h3. 자체 HTTPS 제공이 가능한 경우 |
||
138 | |||
139 | 사용자가 사내에 이미 domain 과 연결된 HTTPS 제공이 가능하다면, MyD data server 가 17070 port 를 열어두고 있으므로 사용자의 도메인에 17070 포트를 reverse proxy로 연결하면 안전하게 사용하실 수 있습니다. |
||
140 | |||
141 | h3. 외부 IP 나 domain은 있지만, HTTPS 제공이 불가한 경우 |
||
142 | |||
143 | nginx 와 letsencrypt를 통해서 HTTPS 를 제공할 수 있습니다. |
||
144 | |||
145 | > **NginX 설정 및 도메인 연결 방법** <br> |
||
146 | > |
||
147 | > **1) docker-compose 파일 실행 및 config 파일 확인** |
||
148 | > |
||
149 | >```shell |
||
150 | > $ docker-compose -f docker-compose.yml up -d webserver |
||
151 | > $ vi nginx/conf/default.conf |
||
152 | > ``` |
||
153 | > |
||
154 | > default.conf 파일을 사용합니다. config 파일은 사용 순서가 있으니, 설치 시에 문제가 생긴다면 올바른 config 파일을 사용했는지 확인해주시면 되겠습니다. |
||
155 | > |
||
156 | > **첫번째 config 파일** |
||
157 | > ```shell |
||
158 | > server { |
||
159 | > listen 80; |
||
160 | > listen [::]:80; |
||
161 | > |
||
162 | > server_name shuai1593.xyz www.shuai1593.xyz; |
||
163 | > server_tokens off; |
||
164 | > |
||
165 | > location /.well-known/acme-challenge/ { |
||
166 | > root /var/www/certbot; |
||
167 | > } |
||
168 | > |
||
169 | > location / { |
||
170 | > return 301 https://shuai1593.xyz$request_uri; |
||
171 | > } |
||
172 | > |
||
173 | > } |
||
174 | > ``` |
||
175 | > |
||
176 | > **두번째 config 파일** |
||
177 | > ```shell |
||
178 | > server { |
||
179 | > listen 80; |
||
180 | > listen [::]:80; |
||
181 | > |
||
182 | > server_name shuai1593.xyz www.shuai1593.xyz; |
||
183 | > server_tokens off; |
||
184 | > |
||
185 | > location /.well-known/acme-challenge/ { |
||
186 | > root /var/www/certbot; |
||
187 | > } |
||
188 | > |
||
189 | > location / { |
||
190 | > return 301 https://shuai1593.xyz$request_uri; |
||
191 | > } |
||
192 | > |
||
193 | > } |
||
194 | > |
||
195 | > server { |
||
196 | > listen 443 default_server ssl http2; |
||
197 | > listen [::]:443 ssl http2; |
||
198 | > |
||
199 | > server_name example.org; |
||
200 | > |
||
201 | > ssl_certificate /etc/nginx/ssl/live/shuai1593.xyz/fullchain.pem; |
||
202 | > ssl_certificate_key /etc/nginx/ssl/live/shuai1593.xyz/privkey.pem; |
||
203 | > |
||
204 | > location / { |
||
205 | > proxy_pass http://192.168.0.141:8080/; |
||
206 | > } |
||
207 | > } |
||
208 | > ``` |
||
209 | > |
||
210 | > **2) certbot 실행 및 인증서 발급** |
||
211 | > ```shell |
||
212 | > $ docker start nginxssl_webserver_1 |
||
213 | > $ docker compose run --rm certbot certonly --webroot --webroot-path /var/www/certbot/ --dry-run -d {yourserver} |
||
214 | > $ du -a |
||
215 | > ``` |
||
216 | > |
||
217 | >> **주의사항** <br> opKey.jck 는 data encrypt key 입니다. |
||
218 | > 해당 파일이 없다면 암,복호화가 되지 못하니 꼭 /store 폴더 내에 있는지 확인 부탁드립니다. |
||
219 | > |
||
220 | h3. > 인증서 재발급 및 확인 |
||
221 | > |
||
222 | > 인증서 재발급 명령어는 하기와 같습니다. |
||
223 | > > $ docker compose run --rm certbot renew |
||
224 | > |
||
225 | > 인증서 확인 명령어는 하기와 같습니다. |
||
226 | > > $ docker compose run --rm certbot certificates |
||
227 | > |
||
228 | > 참고 문서: [Nginx Install Guide](https://mindsers.blog/post/https-using-nginx-certbot-docker/) |
||
229 | |||
230 | h2. 6. Backup 및 Restore |
||
231 | |||
232 | | 항목 | 내용 | 비고 | |
||
233 | | Backup | myd-data-server Repository 내에 data 폴더에 있는 /store/* 와 /mysql/* 파일들을 저장해야 합니다. | - [백업 관련 스크립트 참고 자료](https://ubuntu.com/server/docs/backups-shell-scripts) | |
||
234 | | Restore | 위에서 저장해둔 파일들을 data 폴더 내에 붙여넣습니다. | | |
||
235 | |||
236 | h2. 6. Trouble Shooting |
||
237 | |||
238 | h3. 6.1 Capturing log |
||
239 | |||
240 | **Docker log 를 log file 로 뽑아오기** |
||
241 | ```shell |
||
242 | $ docker logs b2b.on-premise > log1.txt |
||
243 | $ docker logs b2b.on-premise.db > log2.txt |
||
244 | $ docker logs Data-Analysis > log3.txt |
||
245 | $ ls -al |
||
246 | ``` |
||
247 | |||
248 | 이렇게 진행하시면 log1.txt, log2.txt, log3.txt 파일이 생긴 것을 확인하실 수 있습니다. |
||
249 | 문제가 있는 경우엔 해당 파일을 SNPLAB로 보내주시면 되겠습니다. |
||
250 | |||
251 | h3. 6.3 Application Error |
||
252 | |||
253 | h3. 5.4 Terminal Error |
||
254 | |||
255 | @@ |