CentOS 리눅스에 설치하기


이번 파트에서는 CentOS 리눅스 호스트에 아이펀 엔진 을 설치하는 방법에 대해서 설명합니다.

Note

윈도우 용 아이펀 엔진에 대한 내용은 윈도우에 설치하기 파트를 참고하시기 바랍니다.

아이펀 엔진 은 물리 호스트 뿐 아니라 AWS 나 Azure, Google Cloud Platform 같은 클라우드 서비스나 VMWare, Hyper-V, VirtualBox 같은 가상화 솔루션으로 생성한 가상 호스트에서도 동작하며, 지원하는 CentOS 리눅스 종류는 다음과 같습니다.

  • CentOS 7 64bit

  • CentOS 8 64bit

아이펀 엔진 설치를 진행하기 전에 CentOS 리눅스 다운로드 페이지 에서 설치 디스크 이미지를 다운로드해서 설치를 진행하시거나, 클라우드 서비스의 가상 호스트 이미지를 사용해서 CentOS 호스트를 준비 해 주세요.

Note

32bit 아키텍처의 리눅스 운영체제 및 Cygwin 이나 WSL (Windows Subsystem for Linux) 기반의 리눅스 운영체제는 지원하지 않습니다.

설치 후 개발 환경을 설정하고 프로젝트를 생성하는 방법은 개발환경 만들기 항목을 참고해 주시기 바랍니다.


YUM 저장소 설정하기

아이펀 엔진 은 CentOS 리눅스의 패키지 매니저가 사용할 수 있는 YUM 저장소를 제공합니다. YUM 저장소를 설정하면 패키지 매니저를 사용해서 편리하게 설치/삭제/업그레이드를 진행할 수 있습니다.

YUM 저장소를 설정하는 방식은 아이펀 엔진 에서 제공하는 RPM 패키지를 설치하는 방식과 수동으로 직접 설정하는 두가지가 있습니다.

Important

YUM 저장소를 사용하기 위해서는 아래 호스트와 통신이 가능해야 합니다.

  • www.ifunfactory.com (54.65.9.158; 향후에 바뀔 수 있습니다) :

    아이펀 엔진 패키지를 내려받기 위한 서버로 만약 이 서버와 통신을 할 수 없는 경우, YUM 저장소를 이용할 수 없습니다.

패키지를 설치해서 설정하기

CentOS 용 아이펀 엔진 자동 설정 패키지 를 다운받아 더블클릭해서 설치하거나, 터미널 창을 열어 다음 명령을 실행합니다.

$ sudo yum install epel-release wget
$ wget https://www.ifunfactory.com/engine/funapi-yum-setup.rpm
$ sudo rpm -Uvh funapi-yum-setup.rpm

Important

현재, CentOS8 에서 funapi-yum-setup 패키지를 처음 설치하면, 다음과 같은 에러가 발생합니다.

error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Resource temporarily unavailable)
error: /tmp/funapi.key: key 1 import failed.
Installed GPG key for Funapi.

이때는 이어서 설명하는 수동으로 YUM 저장소 설정하기 를 참고하셔서 GPG 키를 추가하는 과정을 진행해 주시기바랍니다.

수동으로 저장소 설정하기

만일, 방화벽 설정 등으로 인해 외부와 통신을 할 수 없는 경우에는 패키지를 설치해서 설정하기 에서 언급한 방법으로 YUM 저장소를 설정할 수 없습니다.

이 경우에는 다음 내용을 참고하시어 직접 아이펀 엔진YUM 저장소를 설정 해 주세요.

  1. 다음 내용을 ifunfactory.gpg.key 로 저장해주세요.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQENBFHLrjgBCACzI7l8y1nygGN1b0XwgEDdBZGUlaTZhyHs1Y2VLBmYm3dgyRHp
qLfHhVGZm1FXzT1X7GlGgQRV+GsyeXNUHWcY794UwZMCM4h0mGDGXX1eR2objUNZ
tVE9VzoXwKwnu7mKJGXgSm+olZKQ43wPnr7Keyap42yKSJv3GBkMmfKjwnjTooLk
g62wwpJa3AOZBBqLwHKt0BYVRT/7ILXJnW4NqDoQPeT1y3Iqt1KxsaR1Ik+byh3g
UUvDqgFRXPW+HDkB265MbQgXHmPTGih8j7ygZz1dM5pJQ//bMqNHmbDPZSwLt0Wb
yB6UNbO9W5ZENCz4h7+3utYAvwERqdZ/nxKZABEBAAG0L0Z1bmFwaSBTdXBwb3J0
IDxmdW5hcGktc3VwcG9ydEBpZnVuZmFjdG9yeS5jb20+iQE4BBMBAgAiBQJRy644
AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCj9+/dSTj/5jzNB/45CD2R
Bv8CrB+ErIVeFjXuhqYwg2fuAdQcXbVpla5rhrvHjGEbCl35kKqEPFP09YvWReIi
i3kK1yF7zNxyk/9N3GUZpIEgbyEuNVjkizPjrs+DWx0j6oZZQLrsEflUMxfALAmr
v3n6fB6XeCk2Hd83XBoqZSHKfzLPFUynS7e2/Vte4UVKbgFPsypPXazYrqvq4ej2
bnHva6/aUakti+A+l8Cs0kf2WzrwOp47PcceT5N0/mwF5XslwaiqH6q+6iGNLdj0
9hjzRcdZ5My/Do6rGXcFJJY17U72HGFTUCU8RXZRTBY2EfjAV6zQlKlaO/Aw0eWX
7UMXUhc+CLv+aZOxuQENBFHLrjgBCAC/xHRd1tH2zs8nplyI3EYRyWqF82waGIyK
SnV/pJ4CCc2YuECnQV0RvoOtZiuwmB3CuNTSEEyAfwU/K3tMsvczMN04MjQGvSA1
4it7xIkg24Qcx0O46JBwvihR4sZ8O/j6X/nVV4pN4zUg5PQh///yn/R7mVH2sWVW
WE5ZpZ1G/eA/fSiqdmZPOjFW9SWsVgPXvyKCM0b5lCjMlbwZspx8YGblJtDqCtWW
Ip2RnGTCSkSo4kRauDU+iGYojUsgsmUSxjtdGZHa41g5HDRoIcL3e40UYe3el7Sx
Aa+lV529kHAZCWtDfS7MoqtE7gvHSGoJAK+2nCAEfw1mz0Ja+XELABEBAAGJAR8E
GAECAAkFAlHLrjgCGwwACgkQo/fv3Uk4/+Y36Qf/VPov5n+h4pEzKspA6hHezD4J
rw9rVCQ/BvidBerV4VvL+oH5ghBV5QeAvd2TyccuKdZJsikAM9wUM1MS+Y4Akno7
vgIKO/7sGGkbAkgSG4vvfG4W9EQ0GqFycaTl9zpiNUrUri5vGNK2PC6p9uXxXmdQ
3iHe1c5+5jvLKCzOdC+Er2E949PzsMuI2L4viNp72J6ilm62RJ+/Pg1rOaRmTH1H
ax7L3Hwsy0GXeubKaeDizvBeKcv6e08DqI2TCllmd8NkR6OSLuks4yHDU1ztAa0c
+RcnddKag+TCYwto617oMZvCPaic/d6AjW3OL48PFNUPpfBeZEJ8B8tm16HxaQ==
=p+5n
-----END PGP PUBLIC KEY BLOCK-----
  1. 그리고, 위 키를 패키지 관리자에 추가해주세요.

$ sudo rpm --import ifunfactory.gpg.key
OK
  1. 마지막으로 아래 내용을 /etc/yum.repos.d/funapi.repo 파일에 저장해주세요.

[funapi]
name=funapi
baseurl=https://www.ifunfactory.com/centos/7
gpgcheck=1
enabled=1

[funapi-experimental]
name=funapi-experimental
baseurl=https://www.ifunfactory.com/centos/7-experimental
gpgcheck=1
enabled=0
[funapi]
name=funapi
baseurl=https://www.ifunfactory.com/centos/8
gpgcheck=1
enabled=1

[funapi-experimental]
name=funapi-experimental
baseurl=https://www.ifunfactory.com/centos/8-experimental
gpgcheck=1
enabled=0

Mono 라이브러리 설치하기(필수)

아이펀 엔진Protobuf 라이브러리C# 언어 개발 환경을 지원하기 위해서 Mono 라이브러리 를 사용합니다.

CentOS 에서 특정 버전 의 Mono 라이브러리를 사용할 수 있도록 다음 안내에 따라 미리 설치를 진행해 주시기 바랍니다.

Note

CentOS 에서는 Mono 프로젝트 저장소 주소를 통해서 버전을 고정할 수 없습니다.

먼저, Mono 라이브러리 저장소를 설정해 주시기 바랍니다.

rpmkeys --import "http://pool.sks-keyservers.net/pks/lookup?op=get&search=0x3fa7e0328081bff6a14da29aa6a19b38d3d831ef"
su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'
rpmkeys --import "http://pool.sks-keyservers.net/pks/lookup?op=get&search=0x3fa7e0328081bff6a14da29aa6a19b38d3d831ef"
su -c 'curl https://download.mono-project.com/repo/centos8-stable.repo | tee /etc/yum.repos.d/mono-centos8-stable.repo'

다음으로 아래 명령을 실행해서 Mono 라이브러리 패키지를 설치해 주시기 바랍니다.

# 패키지 버전을 지정하기 위해 관련 패키지 전부를 지정해서 설치를 진행합니다.
sudo yum install mono-devel-6.8.0.96 mono-core-6.8.0.96 libmono-llvm0-6.8.0.96 mono-data-6.8.0.96 mono-data-oracle-6.8.0.96 mono-data-sqlite-6.8.0.96 mono-extras-6.8.0.96 mono-llvm-tools-6.8.0.96 mono-mvc-6.8.0.96 mono-wcf-6.8.0.96 mono-web-6.8.0.96 mono-winforms-6.8.0.96 mono-winfxcore-6.8.0.96 libmonoboehm-2_0-devel-6.8.0.96 libmono-2_0-devel-6.8.0.96 libmonoboehm-2_0-1-6.8.0.96 libmono-2_0-6.8.0.96 libmonosgen-2_0-6.8.0.96 libmonosgen-2_0-devel-6.8.0.96

그러나, 이렇게 특정 버전의 패키지를 설치하더라도 패키지 저장소에 더 높은 버전의 동일 패키지가 발견되면 강제로 업데이트가 됩니다.

이것을 방지하기 위해 다음 조치들을 취해 주세요.

# YUM 패키지 관지리의 버전 잠금 기능을 설치합니다.
sudo yum install yum-plugin-versionlock

# Mono 라이브러리의 핵심 패키지 두개를 업데이트하지 않도록 설정합니다.
sudo yum versionlock mono-core mono-devel

이렇게 설정하면 YUM 패키지 관리자에 의해서 의도치 않게 Mono 라이브러리 패키지가 업데이트되는 것을 방지할 수 있지만, yum upgrade 명령을 실행해도 전체 패키지를 업데이트할 수 없게 됩니다.

만약, 위와 같은 상태에서 전체 패키지를 대상으로 업데이트를 가능하게 하고 싶으시다면 위에서 설정한 Mono 라이브러리 저장소 설정 파일을 다음과 같이 수정해 주세요.

#/etc/yum.repos.d/mono-centos7-stable.repo

[mono-centos7-stable]
name=mono-centos7-stable
baseurl=https://download.mono-project.com/repo/centos7-stable
# 저장소를 사용하지 않도록 설정
enabled=0
gpgcheck=1
gpgkey=https://download.mono-project.com/repo/xamarin.gpg
#/etc/yum.repos.d/mono-centos8-stable.repo

[mono-centos8-stable]
name=mono-centos8-stable
baseurl=https://download.mono-project.com/repo/centos8-stable
# 저장소를 사용하지 않도록 설정
enabled=0
gpgcheck=1
gpgkey=https://download.mono-project.com/repo/xamarin.gpg

배포판 타입 선택하기

아이펀 엔진 은 두 종류의 배포판을 제공하고 있습니다.

  • Stable 배포판: 안정화 버전

  • Experimental 배포판: 시험적인 기능들을 포함하는 버전

새로운 기능이 추가되거나 기존 기능에 변경이 생기면 먼저 experimental 버전을 통해서 안정성을 검증한 후에 stable 버전에 반영됩니다.

저장소를 패키지를 통해서 자동 설정하셨다면 stable 저장소를 사용하도록 초기화되며 funapi_select_repo 명령을 사용해서 현재 설정된 배포판 종류를 확인하거나 변경할 수 있습니다.

현재 배포판 타입 확인하기

현재 선택된 엔진의 배포판 타입과 실제로 설치된 엔진의 패키지 저장소 정보는 다음과 같은 방법으로 확인할 수 있습니다.

$ funapi_select_repo
Current repository: stable
Installed package: funapi1-runtime 1.0.0-4096centos7: stable

위 명령어의 결과를 보면 현재 선택된 배포판 타입은 stable 이며, 설치되어있는 엔진은 stable 임을 알 수 있습니다.

Note

다음 챕터에서 설명하는 내용과 같이 설치 후 배포판 타입을 변경할 수 있기 때문에 현재 설정된 배포판 타입과 설치되어있는 배포판 타입은 다를 수 있습니다.

배포판 종류 변경하기

배포판을 확인할 때, 사용했던 funapi_select_repo 명령어 뒤에 배포판 종류를 입력하면 배포판 설정을 변경할 수 있습니다.

Warning

설정 변경을 위해서 funapi_select_repo 명령을 사용할 때에는 root 권한이 필요합니다.

$ sudo funapi_select_repo experimental
Activating iFunEngine experimental repository
Cache was expired
0 files removed

위 명령을 보시면, 노란색으로 강조한 것처럼 experimental 배포판이 활성화 되고 자동으로 패키지 목록이 갱신됨을 알 수 있습니다. 다시 인자 없이 funapi_select_repo 를 실행하면 다음과 같이 배포판이 바뀐 것을 알 수 있습니다.

$ funapi_select_repo
Current repository: experimental
Installed package: funapi1-runtime 1.0.0-5677centos8: stable

The installed package is not from the current repository.
This means you might have installed it from other repository.
So, please be cautious that it could be replaced upgrading the package.

이 후의 YUM 패키지 관리자는 experimental 배포판을 기준으로 동작합니다.

아이펀 엔진 패키지 설치하기

YUM 저장소를 설정했다면 YUM 패키지 매니저를 사용해서 저장소에 올라가 있는 패키지들을 설치 또는 삭제, 업그레이드할 수 있습니다.

현재 사용가능한 패키지 목록은 다음과 같습니다.

$ sudo yum update
$ yum search funapi
  • funapi1-devel: 아이펀 엔진 으로 서버를 개발하기 위한 개발 패키지.

  • funapi1-runtime: 아이펀 엔진 으로 개발한 서버를 실행하기 위해 필요한 런타임 패키지.

  • python-funapi1-devel: 아이펀 엔진 에서 사용하는 Python 모듈을 설치하는 패키지.

  • funapi1-doc: 아이펀 엔진 에 대한 문서 패키지.

  • python-funapi1-dev: 아이펀 엔진 에서 사용하는 Python 모듈을 설치하는 패키지.

  • funapi1-doc: 아이펀 엔진 에 대한 문서 패키지.

  • libfunapi1-mongodblogger: 아이펀 엔진 의 사용자 행동 로그를 MongoDB 에 남기기 위해 필요한 패키지.

  • funapi1-dedicated-server-host: 아이펀 엔진 으로 데디케이티드 서버 환경을 운용할 때, 데디케이티드 서버 호스트의 에이전트 역할을 하는 서버.

  • funapi-biller1: 아이펀 엔진 의 결제 검증 기능을 사용하기 위한 아이펀 빌러 패키지.

  • funapi-leaderboard1: 아이펀 엔진 의 리더보드 기능을 사용하기 위해 필요한 아이펀 엔진 리더보드 패키지.

  • funapi-dashboard: 아이펀 엔진 으로 제작한 서버의 여러 성능 지표를 모니터링하기 위한 아이펀 대시보드 서비스 패키지.

  • funapi-dashboard-agent: 아이펀 엔진 으로 제작하지 않은 서버로부터 아이펀 대시보드 가 필요한 성능지표를 추출하기 위한 서비스 패키지.

  • funapi-dashboard-collector: funapi-dashboard-agent 가 수집한 데이터를 다시 취합하는 서비스.

최신 버전 설치하기

아이펀 엔진 이 설치되어있지 않은 상태에서 패키지 설치를 진행하면, 현재 배포판 설정에 따라 stable 또는 experimental 패키지의 최신 버전을 설치합니다.

$ sudo yum update
$ sudo yum install funapi1-devel

위 명령 하나로 아이펀 엔진 으로 서버를 개발하기 위한 핵심인 funapi1-dev 패키지와 의존하는 패키지를 모두 설치합니다.

Important

최초에 아이펀 엔진을 설치하면 1주동안 유효한 평가판 라이선스가 자동으로 발급됩니다. 평가판 라이선스는 사용에 제약이 있습니다. 자세한 내용은 개요 매뉴얼을 참고해 주세요.

업그레이드 하기

현재 시스템에 설치한 아이펀 엔진 패키지의 버전이 YUM 저장소의 최신 버전보다 낮다면 다음 명령으로 업그레이드 할 수 있습니다.

$ sudo yum update
$ sudo yum upgrade

이때, 저장소의 최신 버전이 현재 설치되어 있는 패키지 버전보다 낮으면 업그레이드가 진행되지 않으며 이것은 아이펀엔진 패키지 저장소과 상관없이 적용됩니다.

예를들어 현재 호스트에 Experimental 1.0.0-5000 버전이 설치되어 있다고 가정해 보겠습니다. 아이펀 엔진 저장소가 Stable 로 설정되어 있고, Stable 저장소의 최신버전이 Stable 1.0.0-4999 라면 업그레이드가 진행되지 않습니다.

이런 경우에는 다음에 설명하는 버전을 지정해서 설치하는 방법을 사용해 주시기 바랍니다.

특정 버전 설치하기

만약, 배포판의 종류와 상관없이 이미 설치되어 있는 패키지의 버전이 YUM 저장소의 최신 버전보다 높거나, 이전 버전의 패키지를 설치하고자 하는 경우에는 다음과 같이 버전을 지정해서 설치할 수 있습니다.

단, 이 경우는 아래와 같이 상호 의존하는 패키지를 동시에 설치해야 합니다.

Note

아래 명령 중 1.0.0-1234centos8 은 CentOS 리눅스 배포판 이름을 포함하는 버전명입니다.

$ sudo yum install funapi1-devel-1.0.0-1234centos8 funapi1-runtime-1.0.0-1234centos8 python-funapi1-dev=1.0.0-1234centos8

RPM 패키지 파일을 사용해서 설치하기

패키지 매니저를 사용해서 YUM 저장소로부터 패키지를 받지않고, .rpm 확장자를 갖는 아이펀 엔진 패키지 파일로부터 직접 설치하기 위한 방법에 대해서 설명하겠습니다.

  1. Runtime 패키지만 설치하는 경우, 파일이 있는 위치에서

    $sudo yum localinstall ./runtime.rpm
    
  2. 아이펀 엔진 전체를 설치하려는 경우에는 의존성이 걸려있는 funapi1-devel, funapi1-runtime, python-funapi1-devel 패키지 세 개를 동시에 설치해야 합니다.

    $sudo yum localinstall ./funapi1-devel.rpm ./funapi1-runtime.rpm ./python-funapi1-devel.rpm