그리고 /etc 경로는 root 권한의 파일이라 수정할 때마다 sudo 로 접근해야하는 것도 마음에 들지 않는다.
/home/ubuntu/{서비스이름}.env 경로에 둬야겠다.
# 기존 파일을 홈으로 복사 (원본은 검증 전까지 보존)
sudo cp /etc/{서비스 이름}.env /home/ubuntu/{서비스 이름}.env
sudo chown ubuntu:ubuntu /home/ubuntu/{서비스 이름}.env
chmod 600 /home/ubuntu/{서비스 이름}.env # 시크릿 → 본인만 읽기
sudo 명령어로 옮겼기에 실행 권한은 root 인 걸 알 수 있다.
chown 명령어로 소유자, 소유자와 소유그룹을 변경하자.
이미 권한은 600으로 ubuntu 만 읽고 쓸 수 있게 되어있으므로 chmod 는 안해줘도 될 것 같음.
파일은 옮겼으니, 이제 system 이 이 환경변수 파일을 읽도록 수정을 해줘야 한다.
그 전에 안전하게 백업 먼저 해두자.
# 안전하게 백업 먼저
sudo cp /etc/systemd/system/{서비스이름}.service /etc/systemd/system/{서비스이름}.service.bak
그리고 파일 내용을 수정하는 명령어로 파일을 수정해준다. 새로 옮긴 파일내용으로!
# EnvironmentFile 경로만 한 줄 교체
sudo sed -i 's#EnvironmentFile=/etc/{서비스이름}.env#EnvironmentFile=/home/ubuntu/{서비스이름}.env#' \
/etc/systemd/system/{서비스이름}.service
# 바뀐 내용 확인
systemctl cat {서비스이름} | grep EnvironmentFile
# → EnvironmentFile=/home/ubuntu/{서비스이름}.env 나오면 성공
이제 반영 -> 재시작 -> 확인을 해보자
sudo systemctl daemon-reload
sudo systemctl restart {서비스이름}
sleep 5
sudo systemctl --no-pager status {서비스이름} | head -n 15
한국어인 경우에는 절대... 검색 쿼리에서 "백화점"을 검색하면 절대 검색 결과에 내가 처음에 저장한 문서가 나오지 않을 것이다.
왜냐하면, 인덱스를 생성할 때 한국어 전용 토크나이저가 아닌 기본 토크나이저 (영어 기본) 을 설정했기 때문이다.
그럼 기본 토크나이저로는 어떻게 문장이 토크나이징이 되는지 확인을 하고 싶을 수 있다.
그럴 때는 아래의 분석 쿼리를 날리면 된다.
텍스트 분석 쿼리 (Analyze API)
형태소 분석 요청, 텍스트 분석 테스트를 목적으로 사용하는 쿼리
내가 정의한 analyzer가 텍스트를 어떻게 토크나이징하는지 확인할 때나 검색이 예상대로 안될 때 디버깅 용도로 사용
GET /boards/_analyze
{
"field": "content",
"text" : "백화점에서 쇼핑을 하다가 친구를 만났다."
}
한국어를 보다 잘 토크나이징을 하기 위해서는 nori analyzer 플러그인을 설치해서 사용하면 된다.
opensearch를 Docker compose 로 돌리고 있어서 잠시 Docker container를 멈추고
Dockerfile을 작성한다.
Nori Analyzer 플러그인 설치
FROM opensearchproject/opensearch:latest
RUN /usr/share/opensearch/bin/opensearch-plugin install --batch analysis-nori
Nori Analyzer 의 구성
nori analyzer는 다음과 같이 구성되어있다.
analyzer는 char_filter, tokenizer, filter 이 세가지로 구성되는데 이 속성을 custom tokenizer를 구성할때 넣어주고
더 필요한 것들을 추가해주면 한국어를 보다 잘 분석해서 역인덱싱이 된다.
# Nori Analyzer 의 구성
# nori_part_of_speech : 의미없는 조사 제거
# nori_reading_form : 한자를 한글로 변환 후 저장
GET /_analyze
{
"text" : "백화점에서 쇼핑을 하다가 친구를 만났다.",
"char_filter": [],
"tokenizer": "nori_tokenizer",
"filter": ["nori_part_of_speech", "nori_readingform", "lowercase"]
}
GET /_analyze
{
"text" : "오늘 영어 책에서 'It depends on the results.' 라는 문구를 봤다.",
"char_filter": [],
"tokenizer": "nori_tokenizer",
"filter": ["nori_part_of_speech", "nori_readingform", "lowercase"]
}
그냥 기본형 분석기를 사용하면 영어같은 경우에는 처리를 해주는데 한국어 전용 분석기를 사용하니
영어를 그냥 띄어쓰기를 기준으로 토크나이징하는 이슈가 있었다.
그렇다면 이럴 때 nori analyzer를 커스텀할 수 있다.
# 불용어, 영단어 기본 형태 저장됨
GET /_analyze
{
"text" : "오늘 영어 책에서 'It depends on the results.' 라는 문구를 봤다.",
"char_filter": [],
"tokenizer": "nori_tokenizer",
"filter": ["nori_part_of_speech", "nori_readingform", "lowercase", "stop", "stemmer"]
}
이런 형태로 filter 에 stop(불용어 저장 X), stemmer(영어 기본형으로 저장) 옵션을 추가해주면 된다.
Mac(OS)에서 UTM을 사용해 Rocky Linux 8.8(aarch64) 가상 머신을 생성했다. Rocky-8.8-aarch64-minimal.iso 이미지를 연결한 뒤 부팅하자 설치 메뉴가 정상적으로 표시되었고, “Install Rocky Linux 8.8 in basic graphics mode” 항목을 선택했다. 하지만 설치가 시작되는 듯하다가 별도의 오류 메시지 없이 다시 설치 메뉴 화면으로 되돌아왔다.
2. 원인
사용한 ISO 이미지가 minimal ISO였다는 점이 원인이었다. Rocky Linux의 minimal ISO는 설치 과정에서 필요한 패키지를 네트워크를 통해 추가로 다운로드하는 구조다. UTM + Apple Silicon 환경에서는 이 과정에서 그래픽 초기화 또는 네트워크 설정 단계가 정상적으로 처리되지 않으면 설치 커널이 바로 종료되고 부트 메뉴로 복귀하는 문제가 발생할 수 있다.
3. 근거
설치 실패 시 에러 메시지 없이 부트 메뉴로 즉시 복귀
ISO 파일 재다운로드, CPU/메모리 설정 변경 후에도 동일 현상 반복
같은 환경에서 DVD ISO 사용 시 설치가 정상적으로 진행됨
강의 자료에서도 minimal ISO가 아닌 DVD ISO 사용을 권장
이를 통해 UTM 환경 자체의 문제라기보다는 minimal ISO와 가상화 환경 간의 호환성 문제로 판단했다.
4. 해결 방안
Rocky-8.8-aarch64-dvd.iso 이미지로 변경하여 설치를 진행했다. DVD ISO는 설치에 필요한 패키지가 모두 포함되어 있어 네트워크 의존 없이 설치가 가능하고, UTM 환경에서도 안정적으로 동작했다. ISO 변경 후 설치 화면이 정상적으로 진행되었고, 문제 없이 Rocky Linux 설치를 완료할 수 있었다.
5. 정리
UTM + Apple Silicon 환경에서 Rocky Linux를 설치할 경우, 입문자나 강의 따라가기 목적이라면 minimal ISO보다는 DVD ISO 사용이 안전하다. 설치 메뉴에서 선택 후 다시 원래 화면으로 돌아오는 현상이 발생한다면 환경 설정 이전에 ISO 종류부터 점검하는 것이 우선이다.