카테고리 보관물: Linux

AWS Lightsail에 둥지 틀기

여러 국내 호스팅 업체들을 거쳐서 여러 곳에서 WordPress 호스팅 서비스로 추천되는 Siteground에 한동안 정착하는 듯 했다. 준수한 속도에 비해 합리적인 가격($3.95/월) 때문에 당분간 정착할 거라고 생각하고 있었는데 일년이 지나서 서비스 갱신기간이 되자 가격이 세배 넘게 올라서 1년에 $143을 달라고 한다.($11.95/월).
“이건 너무 한 거 아니냐고!”

WordPress hosting은 더 비싸다

대안으로 생각한 것은 1) wordpress.com hosting과 2) AWS Lightsail이었는데, 발견한 한 가지 놀.라.운. 사실은 WordPress hosting에서 플러그인을 설차하려면 한달에 $25 짜리 business plan 이상을 계약해야 한다는 것이다. 한달에 $25라니!!! 멋 모르고 카드 결재를 하고 이리저리 플러그인 설치를 시도하다가 아래의 표를 발견하고는 미련 없이 ‘refund’ 버튼을 눌렀다.

AWS Lightsail은 한 달간 무료 시험기간을 주기 때문에 Siteground 계정이 종료하기 전에 미리 설치를 마쳤다. 인스턴스 리전을 한국으로 할까 하다가 이전 Siteground와 같은 위치인 싱가포르로 선택했고 WordPress의 export/import 기능 덕에 마이그레이션은 수월하게 진행되었다. Domain name은 호스팅 업체와 같은 곳으로 이전하는게 좋다고 해서 AWS Route 53으로 이전 및 1년 연기 등록을 했는데 상위 도메인에 따라 다르지만 .com의 경우 $13.2(세금포함)가 소요된다. 어라? 그러고 보니 Siteground에서 도메인을 연장하는 서비스는 $15.95였는데? 이눔 시키들…

도메인 이전과 새로운 IP 연결

도메인 이전을 요청하니 이전 관리자였던 Siteground에서 확인 메일이 왔고, 수락한 이후에는 하루 후에 AWS로 도메인이 이전되었다. 그 후에는 Lightsail의 네트워킹 탭에서 고정 IP와 DNS 영역을 생성해서 A 레코드를 추가하고 IP와 도메인 이름을 연결 시켜 주었다.

그리고 나서 한참을 DNS가 업데이트 되기를 기다렸다. nslookup은 여전히 예전 IP를 보여줬지만 48시간 까지 걸릴 수 있다는 말에 이틀정도를 기다렸는데도 IP가 업데이트 되지 않았다. AWS Route 53에 가보니 ‘registered domains > [domain name]’ 아래에 Name Servers 항목이 있는데 혹시 이것 때문인가 싶어서 고정 IP를 만들때 나왔던 네임서버 목록으로 업데이트를 해주었다. 그리고 나서 잠시 후 드디어 새로운 IP로 접속되었다!

계속 예전 IP로 돌아가는 도메인 문제와 해결

기쁜 마음으로 꿀잠에 들었는데 다음날 아침에 보니 Jetpack에서 서버연결 붙었다가 끊어졌다가 했다는 연락이 와 있었다. 혹시나 싶어서 서버를 재부팅 해봤더니 재부팅하는 순간 잠깐 IP가 새 것으로 붙었다가 다시 예전 IP로 돌아가는게 보였다. 그니까 누가 AWS 알고 있는 것과 다른 예전 정보를 자꾸 준다는 거지…” 혹시나 하는 마음에 Siteground의 cPannel > Advanced DNS zone editor에 들어가 봤더니 역시나 얘가 예전 주소를 꼭 쥐고 있었다. 예전 사업자의 도메인 서버를 AWS 고정 IP로 수정해 주고 났더니 Jetpack이 사이트 살아났다고 축하한댄다. 다행히 그 후로는 다시 끊어지는 일은 없었다.

도메인 관리자를 변경하고 새로운 IP를 연결 했으니 이전 네임 서버에서는 자동으로 놔 주겠거니 하고 잘 못 생각하고 있었던게 문제 였던듯 싶다.

ClearLinux에 Tomcat 설치하기

2019년 3월 현재, Clear Linux에서는 Tomcat이 bundle로 제공되지 않기  때문에 수동으로 설치해야 한다. 이 포스트는 Clear Linux에 수동으로 Tomcat을 설치하기 위한 과정에 관한 것이다.

 

Java Runtime 설치

Tomcat을 실행하기 위해서는 Java runtime이 시스템에 설치 되어 있어야 한다. 만약 없다면 다음 명령어로 설치해 준다.

Java runtime을 설치한 후에는 버전명에 관계없이 접근할 수 있도록 보다 잘 알려진 경로인 /usr/lib/jvm/java로 링크를 생성해 주고 JAVA_HOME 환경 변수를 설정해 준다.

 

Tomcat 다운로드 및 설치

설치된 Java runtime에 맞게 Tomcat download page에서 적절한 binary distribution을 download받고 설치해준다. Tomcat website에 있는 Which version? 항목을 보면 아래와 같이 표가 나오는데,  “Supported Java Version”을 참고해서 적합한 “Apache Tomcat Version”을 선택하면 된다. 예를 들어, OpenGrok의 경우 Java 1.8이 requirement이므로, Tomcat version 9.0.x이상을 선택하면 된다.

sc_tomcat_versions

다음과 같이 Tomcat을 download 받고 /opt/tomcat에 풀어 준다.

 

사용자 설정

/opt/tomcat/conf/tomcat-users.xml 파일을 편집해서 다음과 같이 Tomcat user를 추가해 준다. 아래의 설정은 가장 단순하게 access control하기 위한 설정으로 ‘tomcat’이라는 id를 추가하기 위한 것이다.

 

결과확인

모든 설정이 끝났다면 Tomcat을 설치한 머신에서  http://localhost:8080/manager/html 주소에 접근해서 Tomcat 서버 설정을 관리 할 수 있다. ID와 password를 묻는 prompt가 뜨면 위의 tomcat-users.xml에서 설정한것 처럼 ID/비밀번호(tomcat/비밀번호(password)를 입력한다.

SC_tomcat_manage_html

 

Remote Access 허가

Tomcat 관리자 page를 접근할 때 localhost가 아닌 remote에서 접속을 시도하면 403 access denied 오류가 뜰 수 있다. Localhost외에서도 tomcat 관리자 page 접근을 허용하려면 아래 경로에 있는 context.xml file의 allow= 부분을 수정해서 모든 IP를 받아들이도록 변경해 주면된다. context.xml은 여러개 있으니 경로에 주의.

/opt/tomcat/webapps/manager/META-INF/context.xml

 

WordPress permalink(고유주소) 변경

WordPress의 permalink(고유주소) 형식을 변경하면 검색 엔진을 포함해서 외부에서 들어 오는 링크가 동작하지 않는다. 서버에 대한 root권한이 없다면 .htaccess file에, 권한이 있다면 apache2.conf에 새로운 형식의 permalink로 연결되도록 설정해 주는 것으로 이 문제를 해결 할 수 있다.

처음에는 서버를 재시작 할 필요가 없는 .htaccess에 관련 설정을 했었는데,  아파치 투토리얼: .htaccess 파일 문서에 .htaccess file 설정은 성능에 영향을 미칠 수 있으므로 권한이 있는 경우라면 apache2.conf에 설정하라는 이야기가 있어서 이것을 수정했다.

먼저 Apache2의 rewrite module을 enable한다.

그다음 apache2.conf에 관련 설정을 추가한다.

이 설정은 이전의 /archives/xxxx 형식의 글이나, /archives/tag/xxxx 형식의 tag, /archives/yyyy/mm 형식의 날짜를 “Ugly”한 기본 형식으로 변경하기 위한 것이다.

마지막으로 Apache2 서버를 재시작해준다.

 

MinnowboardMAX에 Yocto 올려본 내용 정리

Yocto는 embedded 환경에 Linux를 편리하게 적용하기위한 목적의 프로젝트로 보다 자세한 내용은 project home page인 https://www.yoctoproject.org에서 확인할 수 있다. 이 글에서는 Intel Baytrail을 사용하는 MinnowboardMAX에  Yocto linux를 올리는 과정을 설명한다.

환경설정

  • Ubuntu 14.04 (64bit)
  • Yocto build system (poky)와 Intel corei64 BSP
    :2016년 현재의 최종 stable release인 Jethro branch를 받는다.

    • Poky build system
    • Intel core-i7 64 BSP

 

Build

Poky는 build system이고 meta-intel은 Intel core-i7 64를 위한 BSP이다. Poky에서 meta-intel BSP를 build할 수 있도록 약간의 수정이 필요 하다. bblayers.conf file에 meta-intel BSP를 build에 포함하도록 BBLAYERS에 추가하고, local.conf file에는 MACHINE을 intel-corei7-64로 설정해 준다.

 

yocto_sato_running

Flashing

Build가 완료되면 build/tmp/deploy/images/intel-corei7-64/core-image-minimal-intel-corei7-64.hddimg에 image가 만들어지는데 이것을 Yocto에서 지원하는 mkefidisk.shscript 를 이용해서 USB drive 혹은 SDcard에 flash한다.

이 예제에서 사용된 /dev/sdb는 build machine에 연결된 USB drive의 경로로 device 연결 후 dmesg 혹은 mount command로 확인할 수 있고 가장 마지막에 있는 /dev/sda는 target device에서의 경로라고 하는데 명확한 내용을 찾기 힘들어서 그냥 /dev/sda로 설정했더니 별 문제는 없었다.  😉

 

Booting-up

Flashing한 USB drive를 연결한 상태에서 booting을 완료하면 UEFI shell로 진입하는데 다음의 command로 Yocto를 실행시킬 수 있다.

 

Build 환경에 대한 정보표시

현재의 layer들 보기

Overlay된 recipe들 보기

적용된 BB appends 보기

 

Trouble-shooting

“ERROR: No recipes available for:”

예전 버전의 Yocto (daisy)에서 kernel version과 다른 recipe가 포함되어 있는 경우 이와 같은 오류를 내면서 build를 멈추는 경우가 있다. 사용하지 않는 버전의 bbappend file을 삭제하고 재시도 해본다. 예를들어 Daisy version에서는 kernel version 3.14가 사용되는데, 3.10에 대한 bbappend file이 있으면 이런 문제가 생긴다. 이 떄는 다음과 같이 3.10에 해당하는 file들을 삭제한다.

 

“ERROR: Fetcher failure: Unable to find revision XXX in branch YYY even from upstream”

Git fetching에 실패하는 경우인데, git에 관련한 설정이 올바르게 되어 있는 경우에도 이 문제가 생기고 있는것이라면 사용중인 BSP와 Poky의 version이 맞는지 다시한번 확인해 보자. Poky build system과 BSP의 version이 맞지 않는 경우에 특정 commit ID를 찾지 못해서 이러한 문제가 생기기도 한다.

 

References

[Tip] PyDev plugin 설치후 동작하지 않을 때

Ubuntu용 Eclipse에 PyDev를 설치하고 program을 재실행 했는데도 *.py 확장자가 인식되지 않고 실행과 디버깅 메뉴에도  Python 항목이 나타나지 않는 것은 PyDev가 3.0 버전 부터는 Java7를 요구하기 때문이었다. (참조 기사)

pydev_py_file_not_recognized

같은 서버에서 Android를 build하고 있어서 Oracle JDK version을 올릴 수는 없기 때문에 옆에서 놀고 있던 Open JDK의 version을 7로 올려서 설정하기로 했다.

Open JDK는 Ubuntu software center에서 설치할 수 있고, eclipse.ini file을 편집해서 사용할 VM을 이것으로 지정해 주면 된다.