매번 나만의 도서관을 사용 할 때마다 elasticsearch도 켜야 하고 app.py도 켜야 하는 건가? 뭔가 번거롭고 잊어버리기 쉬운데? 내가 최종적으로 원하는 건 아이콘을 누르면 따로 서버를 수동으로 켤 필요 없이 서비스를 이용하는 거야.
매번 "나만의 도서관" 애플리케이션을 사용할 때마다 Elasticsearch와 Flask 애플리케이션(app.py)을 수동으로 실행하는 것은 번거로울 수 있습니다. 이를 자동화하거나 더 쉽게 관리하는 방법이 있습니다.
각 방법의 장단점을 비교한 표를 제시하고, 귀하의 요구사항에 가장 적합한 방법을 추천해 드리겠습니다.
서비스로 설정 | - 시스템 부팅 시 자동 시작 - 백그라운드에서 실행 - 시스템 관리 도구로 쉽게 관리 가능 |
- 초기 설정이 복잡할 수 있음 - 시스템 리소스를 지속적으로 사용 |
배치 파일 사용 | - 설정이 간단함 - 필요할 때만 실행 가능 - 커스터마이징이 쉬움 |
- 수동으로 실행해야 함 - 백그라운드 실행이 기본적으로 불가능 |
Docker 사용 | - 환경 일관성 보장 - 쉬운 배포 및 확장 - 격리된 환경에서 실행 |
- Docker 학습 곡선이 있음 - 시스템 오버헤드가 있을 수 있음 |
### 1. 서비스로 설정
Elasticsearch와 Flask 애플리케이션을 시스템 서비스로 설정하면, 시스템 부팅 시 자동으로 시작되도록 할 수 있습니다.
#### Elasticsearch 서비스 설정 (Windows)
1. **Elasticsearch 설치 디렉토리로 이동**:
```cmd
cd C:\path\to\elasticsearch\bin
```
2. **Elasticsearch 서비스 설치**:
```cmd
elasticsearch-service.bat install
```
3. **Elasticsearch 서비스 시작**:
```cmd
elasticsearch-service.bat start
```
4. **Elasticsearch 서비스 상태 확인**:
```cmd
elasticsearch-service.bat manager
```
#### Flask 애플리케이션 서비스 설정 (Windows)
Windows에서 Flask 애플리케이션을 서비스로 실행하려면 `nssm`(Non-Sucking Service Manager) 도구를 사용할 수 있습니다.
1. **nssm 다운로드 및 설치**:
- [nssm 다운로드 페이지](https://nssm.cc/download)에서 적절한 버전을 다운로드합니다.
- 압축을 풀고 `nssm.exe` 파일을 시스템 경로에 추가합니다.
2. **Flask 애플리케이션 서비스 설치**:
```cmd
nssm install MyFlaskApp
```
3. **서비스 설정**:
- `Application` 탭에서 `Path`에 Python 실행 파일 경로를 입력합니다. 예: `C:\Python39\python.exe`
- `Startup directory`에 Flask 애플리케이션 디렉토리를 입력합니다.
- `Arguments`에 `app.py` 파일 경로를 입력합니다. 예: `C:\path\to\app.py`
4. **서비스 시작**:
```cmd
nssm start MyFlaskApp
```
### 2. 배치 파일 (Batch File) 사용
배치 파일을 사용하여 Elasticsearch와 Flask 애플리케이션을 동시에 실행할 수 있습니다.
1. **배치 파일 생성**:
- 메모장을 열고 다음 내용을 입력합니다:
```cmd
@echo off
start "" "C:\path\to\elasticsearch\bin\elasticsearch.bat"
timeout /t 10
start "" "C:\Python39\python.exe" "C:\path\to\app.py"
```
2. **배치 파일 저장**:
- 파일을 `start_services.bat`로 저장합니다.
3. **배치 파일 실행**:
- 배치 파일을 더블 클릭하여 Elasticsearch와 Flask 애플리케이션을 동시에 실행합니다.
### 3. Docker 사용
Docker를 사용하면 Elasticsearch와 Flask 애플리케이션을 컨테이너로 실행할 수 있어 관리가 용이합니다.
#### Docker Compose 설정
1. **`docker-compose.yml` 파일 생성**:
```yaml
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- "9200:9200"
- "9300:9300"
flaskapp:
build: .
container_name: flaskapp
ports:
- "5000:5000"
depends_on:
- elasticsearch
```
2. **Flask 애플리케이션 Dockerfile 생성**:
```Dockerfile
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
```
3. **Docker Compose 실행**:
```bash
docker-compose up
```
귀하의 요구사항인 "아이콘을 누르면 따로 서버를 수동으로 켤 필요 없이 서비스를 이용하는 것"을 고려할 때, 다음과 같은 방법을 추천합니다:
추천 방법: 서비스로 설정 + 바로가기 생성
- Elasticsearch와 Flask 애플리케이션을 Windows 서비스로 설정합니다.
- 웹 브라우저에서 Flask 애플리케이션 URL로 연결되는 바로가기를 생성합니다.
구현 단계:
- 서비스 설정:
- Elasticsearch와 Flask 애플리케이션을 Windows 서비스로 설정합니다.
- 서비스 자동 시작 설정:
- 서비스 관리자에서 두 서비스를 "자동 시작"으로 설정합니다.
- 웹 애플리케이션 바로가기 생성:
- 바탕화면에 새 바로가기를 만듭니다.
- 바로가기 대상을 http://localhost:5000 (Flask 애플리케이션 URL)로 설정합니다.
- 바로가기 이름을 "나만의 도서관"으로 지정합니다.
- 아이콘 설정 (선택사항):
- 바로가기 속성에서 아이콘을 변경하여 쉽게 식별할 수 있게 합니다.
이 방법의 장점:
- 시스템 부팅 시 서비스가 자동으로 시작되므로 수동 실행이 필요 없습니다.
- 바로가기 아이콘을 클릭하면 즉시 웹 애플리케이션에 접근할 수 있습니다.
- 서비스가 백그라운드에서 실행되므로 사용자 인터페이스에 영향을 주지 않습니다.
'1인 프로젝트 > 나만의 도서관' 카테고리의 다른 글
드디어... elasticsearch랑 tesseract가 잘 작동한다! (0) | 2024.08.01 |
---|---|
Elasticsearch가 왜 웹페이지에서 작동하지 않나... (0) | 2024.08.01 |
Tesseract OCR 라이브러리 설치 (1) | 2024.07.31 |
Elasticsearch 서버 연결 (0) | 2024.07.31 |
Elasticsearch에서 Exit 코드 1이 발생하는 일반적인 이유 (0) | 2024.07.31 |