Category: Installation

How to install programs, package on Linux

VcXsrv, 원격 X-Windows 클라이언트

집에서 테스트를 위해서 설치한 서버가 있는데, KVM 가상화를 해뒀다. OS 를 설치하기 위해서 virt-manager 를 자주 이용하는데, 노트북에 Mint 리눅스가 있기 때문에 이것을 이용하면 원격 X-Windows 에 접속해 GUI virt-manager 를 실행시킬 수 있다.

그런데, 매번 노트북을 켜서 하기도 귀찮고 그래서 윈도우즈에서 사용가능한 X-Windows 클라이언트를 필요했다. 이에 대해서 이미 NetSarang 에서 만든 XManager, Xming 이란것을 알고 있었다. XManager 는 사용이고, Xming 은 무료이지만 이전에 제대로 안되었던 기억이 있다. 혹시 다른게 있을까 싶어서 찾아보니 VcXsrv 를 알게되었는데 이것을 한번 사용해 보기로 했다.

설치

설치는 VcXsrv 를 다운받아서 설치를 하면 된다. SourceForge 에서 배포한다.

실행

설치가 마무리되면 Xlauch 라는 실행 아이콘이 생성된다. 이것을 클릭하면 실행이 된다.

실행을 하면 Xming 화면과 동일하다. Multiple windows 를 선택하고 다음..

원격 서버에 접속해 프로그램을 실행하기 위해서 ‘Start a program’ 을 선택한다.

원격에서 실행할 프로그램을 기재하고 원격 서버 로그인 정보를 작성해 준다.

위와같이 정보를 정확하게 기재하면 접속이 성공하게 된다. 기존의 Xming 과 사용방법은 똑같다.

Redmine 컴파일 설치

Redmine 컴파일 설치에 대해서 다룬다. 최신의 OS 를 가지고 하면 좋겠지만, CentOS 7 에서 설치를 진행 했다.

Mariadb 설치

MySQL 도 가능하지만, MariaDB 를 선택했다. 컴파일 설치가 가능하지만 패키지 설치로 설치한다.

각종 의존성이 함께 설치가 된다. CentOS 7 에서 MariaDB 버전은 5.5 이다. 현재 최선 버전은 10.4 이며 이것을 설치하고자 한다면 MariaDB 홈페이지에 공식 리파지토리를 설정하고 yum 명령어로 간단하게 설치할 수 있다.

my.cnf 파일을 다음과 같이 설정해 준다.

캐릭터 셋을(character-set) 설정하는 부분과 함께 mysql 콘솔에 대한 설정이 전부다. 이제 서버를 시작해주고 보안 설정을 해준다.

mysql_secure_installation 명령어를 이용하면 root 관리자 비밀번호와 간단한 보안설정도 함께 할 수 있다. 이제 redmine 을위한 데이터베이스를 생성하고 접속 계정을 만들어 준다.

로컬에서만 접속되도록 하였다. 이로서 redmine 설치를 위한 Mariadb 설치 설정은 모두 끝났다.

Ruby 2.7 컴파일 설치

Redmine 4.2 를 사용하기 위해서는 Ruby 2.7 이 필요로 한다. 컴파일 설치를 해야 하는데, 먼저 다음과 같이 컴파일 환경을 만들어 준다.

한가지, Ruby 는 jemalloc 를 사용하도록 할 것이다. CentOS 7 공식 패키지 저장소에는 이를 제공하지 않는다. EPEL 서드파티 레드햇 저장소를 활요하면 설치가 가능하다.

설치를 다하고나면 epel 저장소를 비활성화 해준다.

이제 Ruby 2.7 버전을 다운로드하고 다음과 같이 컴파일 설치 해준다.

Ruby 설치가 정상적으로 되었다면 이제 계정에서 Ruby 를 사용할 수 있도록 쉘 설정을 해준다.

이렇게 root 계정에서 ruby 가 인식이 된다.

Redmine 설치

Redmine 을 설치하기 위해서는 먼저 gem 을 설치해줘야 한다. gem 은 Ruby 에서 사용하는 플랫폼을 작성해주는 프로그램이다. 그런데, 여기서 또 생각해봐야 하는것이 이것을 이제 일반계정으로 만들것인지 아니면 전역적인 시스템에 설치할 것인지하는 것을 고려해야 한다.

나는 이것을 redmine 이라는 일반 계정을 생성해서 설치하기로 했다. ruby 는 전역적으로 설치했지만 redmine 은 계정을 생성해 시스템과 분리되도록 하였다.

gem 설치

이제 gem 을 설치해 준다. gem 은 Ruby 설치 디렉토리에 함께 설치 됨으로 root 계정으로 실행을 해준다.

gem 을 이용해서 다음과 같이 bundler, chef ruby-shadow 설치를 진행해 준다.

또, mysql2 확장을 설치해준다. 일종의 드라이버라고 보면 된다.

계정 생성

다음과 같이 redmine 계정을 생성해 준다.

redmine 계정도 ruby 를 인식 시켜준다.

redmine 설치

이제 redmine 계정에 redmine 4.2 를 다운로드하고 설치해 준다.

이제 구동에 필요한 패키지들을 설치해 준다.

쿠키 암호화를 위한 시크릿 토큰을 생성해 준다.

데이터베이스를 생성해 준다.

기본 언어를 한국어로 설정해 준다.

이제 모든게 완료 됐다. Redmine 을 다음과 같이 구동할 수 있다.

이제 브라우져에서 3000 포트로 접속을 시도해 본다. 만일 안된다면 CentOS 7 의 firewalld 서비스를 중지 시키고 다시해본다.

nginx 연동

redmine 의 자체 웹서버를 이용하는게 아니라 nginx 를 이용하는 방법이 있다. 이를 위해서 passenger 라는 프로그램이 필요한데, 이를 먼저 설치해 준다.

먼저 root 계정으로 gem 를 이용해서 passenger 를 설치해 준다.

이제 passenger 프로그램을 이용해서 passenger-nginx 모듈을 설치해주는데, 이게 passenger 가 알아서 nginx 를 다운로드 받아서 컴파일 설치까지 해준다.

명령어를 실행하면 이것저것 물어보는데, 설치 모듈에는 python 을 빼고 ruby 만 되도록 했고 설치는 커스텀이 아닌 그냥 1번으로 설치를 진행 했다. 디렉토리는 /opt/nginx 기본값을 사용했다.

컴파일이 모두 정상적으로 진행이 되면 위와같이 설정 안내가 간단하게 나온다.

nginx.conf 파일 설정

기본적인 설정만 되어 있어서 redmine 을 위한 설정을 다음과 같이 해준다.

systemd 등록

nginx 를 systemd 에 등록 해보자. 다음과 같이 파일을 작성 한다.

이제 systemd 유닛을 활성화 해주고 시작해준다.

Redmine 설치하기

Redmine 은 오픈소스 프로젝트 매니지먼트 프로그램이다. Ruby 로 제작되었기 때문에 설치 과정에서 Ruby 가 있어야 한다. 웹을 통해서 서비스를 하기 때문에 보통 웹서버와 연동을 하는 편이다.

환경

  • OS: CentOS 7
  • Arch: x86_64
  • Minimal Installation 상태

MariaDB 설치

MySQL 도 가능하지만, MariaDB 를 선택했다. 컴파일 설치가 가능하지만 패키지 설치로 설치한다.

각종 의존성이 함께 설치가 된다.

my.cnf 파일을 다음과 같이 설정해 준다.

다음과 같이 서버를 실행해 준다.

이제 기본적인 설정을 위해 mysql_secure_installation 을 실행해 준다.

root 패스워드를 설정하기 때문에 패스워드을 잃어서는 안된다.

이제 redmine 에서 사용할 계정을 생성해 준다.

이로서 redmine 설치를 위한 Mariadb 설치 설정은 모두 끝났다.

Redmine 설치

Redmine 4.2 버전을 설치하기 위해서는 다음과 같은 의존성이 필요하다.

  • Ruby – 4.2
  • Rails – 5.2

CentOS 7 에 Ruby 2.0 만을 패키지로 지원한다. 컴파일 설치를 해야한다.

컴파일을 위한 환경 구축

컴파일러와 라이브러리들을 함께 설치해 준다.

Passenger 와 Nginx 설치

Passenger 는 가벼운 웹 애플리케이션 서버로 Ruby 를 지원한다. 이것을 Nginx 와 통합시켜줄 것이다. 다음과 같이 epel 저장소를 활성화 해준다.

이제 Passenger 설치를 위한 저장소를 추가 준다.

redmine 시스템 계정 생성

다음과 같이 redmine 을 위한 시스템 계정을 생성해 준다.

RVM 을 이용한 Ruby 설치를 할 것이기 때문에 GPG 키를 먼저 임포트 해준다.

다음과 같이 RVM 을 설치 해준다.

마지막에 source 부분을 반드시 해준다. Ruby 2.7 을 설치해 준다.

mysql2 extension 을 다음과 같이 설치해 준다.

이제 Redmine 을 설치해 준다.

다음과 같이 데이베이스 접속 정보를 수정해 준다.

Redmine 의존성을 설치해 준다.

키를 생성하고 데이터베이스를 생성해 준다.

Nginx 설정

GitLab 설치와 설정

GitLab 설치 하기. GitLab 은 무료로 사용가능한 git 저장소, ticket 시스템이다. github 의 오픈소스 버전으로 생각할 수 있지만 그것보다 많은 기능을 제공한다. 이 글에서는 gitlab 을 Ubuntu 20.04 LTS 에 설치와 설정에 대해서 알아보도록 하겠다.

준비

Gitlab 을 설치하기 전에 필요한 의존성 패키지들을 먼저 설치해 준다.

메일을 사용할 경우에는 메일 서버를 설치해줘야 하지만 여기서는 제외한다.

Gitlab 설치를 위한 저장소 추가

gitlab 홈페이지에서는 각 리눅스 배포판에 맞춰 스크립트를 제공한다. Ubuntu 20.04 를 위해 제공해주는 스크립트를 실행해 준다.

Gitlab 설치

접속을 위한 도메인을 결정해야 한다. 그리고 gitlab 은 SSL 접속을 권장하지만, 꼭 필요한 것은 아니다. 설치를 할 시점에서 도메인을 정할 수 있다.

별문제가 없다면 설치가 정상적으로 진행이 된다.

Gitlab 설정

Gitlab 설정은 ‘/etc/gitlab/gitlab.rb’ 파일을 이용 한다. 여기서 뭔가 변경을 하면 다음과 같이 재설정을 해야 한다.

접속 URL 바꾸기

접속 URL 은 설치시에 지정해 줬지만 나중에 바꿀 수 있다. gitlab.rb 파일을 열어 다음의 내용을 확인하고 바꾸면 된다.

Grafana 비활성화

Gitlab 서버를 모니터링을 하기 위해서 Grafana 를 내장하고 있다. 이것을 비활성화를 하고 싶다면 다음과 같이 비활성화를 해준다.

Prometheus 모니터링 비활성화

Prometheus 는 서비스에 대한 모니터링을 수집해주는 프로그램이며 Time Series 데이터베이스다. Grafana 는 이 데이터베이스를 읽어서 그래프를 그려주는 것이다.

Prometheus 뿐만 아니라 서비스의 각 메트릭을 수집해주는 Exporter 들이 있는데, Gitlab 에서는 prometheus_monitoring 을 비활성화하면 모든 Exporter 들도 비활성화가 된다.

이렇게 한 후에 gitlab 을 reconfigure, restart 를 한 후에 gitlab 상태를 보면 다음과 같다.

모니터링을 위한 export, prometheus 등의 프로세스가 없다.

업로드 용량 변경

Gitlab 은 nginx 를 웹서버로 사용한다. nginx 에서는 client_max_body_size 값으로 파일 업로드 용량을 결정하는데, 이것을 설정에서 바꾸면 된다.

데이터 저장 디렉토리 변경

만일 데이터 저장 디렉토리를 변경하고 싶다면 다음의 설정을 바꾸면 된다.

저장소를 “/opt/gitlab-data” 로 변경된다.

하지만, 만일 이미 저장소를 사용하고 있다면 다음과 같이 해줘야 한다.

자세한 것은 다음 링크를 참고한다.

Oracle Linux 8.2 설치

Oracle 에서 만들어서 배포하는 Oracle Linux 8.2 를 설치해 본다. 현 시점(2020.07) 에서 최신버전은 Oracle Linux 8.2 이다.

다운로드

Oracle Linux 를 설치를 위해 준비된 이미지는 두가지로 전체 패키지를 담은 DVD 이미지와 Boot 이미지를 제공한다. Boot 이미지는 또 일반 커널과 UEK 커널을 가지는 버전으로 제공한다. 어느걸 하던 상관은 없다.

설치

다운받은 이미지를 USB 나 CD 로 구워서 부팅을 한다.

부팅을 하면 위와 같은 화면이 나온다. 여기서 “Install Oracle Linux 8.2.0” 를 선택해서 설치를 진행한다.

설치는 CentOS 설치 화면과 동일하다. 부팅을 uek boot 이미지를 이용해서 부팅을 했기 때문에 설치를 위한 패키지가 존재하지 않는다. 따라서 반드시 인터넷이 되어야 한다. 그래서 설치할때에 반드시 Network 설정을 먼저해 줘야 한다.

Network 설정

나는 iptime 공유기를 이용하고 있기 때문에 DHCP 만으로 설치하는 Oracle Linux 서버의 ip 설정을 끝냈다. 물론 고정IP 를 설정해도 된다. 일단 인터넷이 되어야 한다.

패키지 저장소 지정.

uek boot 이미지로 부팅을 했기 때문에 패키지를 인터넷을 통해서 다운받아야 한다. 다운받을 주소를 지정해준다. 이 주소는 다음의 링크에서 확인이 가능하다.

위 링크에서 “Installation Media Packages” 에서 BaseOS 8.2 에 x86_64 링크를 클릭해서 나오는 화면에 오른쪽에 Direct Yum Repository URL 주소를 입력해주면 된다.

나머지는 모두 CentOS 설치와 완전히 동일하다. 개인적으로 여기에 Oracle DB 를 설치하고자 파티션을 다음과 같이 나눴다.

  1. / – 40GB
  2. swap – 12GB

Node 설치하기

Node.js 줄여서 Node 는 브라우저에서 탑재되었던 Javascript 엔진을 독립된 애플리케이션으로 만들어 Javascript 를 이용해 애플리케이션을 작성할 수 있도록 해준다.

준비

모르긴 몰라도 Javascript 만큼이나 다이나믹하고 빠르게 변화를 수용하는 언어를 찾기는 쉽지 않다. 그러다보니 이를 지원하는 Node.js 도 다양한 버전이 존재하게 되는데 이러한 다양한 버전을 관리하기 위한 별도의 툴이 필요하게 되었던 모양이다.

Node Version Manager (NVM). Node.js 의 버전을 관리하기 위한 툴로서 이를 이용하면 다양한 버전의 Node.js 를 설치하고 관리할 수 있게 된다.

Node.js 설치는 NVM 을 사용해 할 것이다.

NVM 설치

NVM 의 장점은 대략 다음과 같다.

  • 간단한 명령어로 로컬 계정에 설치가 가능하다.
  • 다양한 버전의 Node.js 를 쉽게 교체 가능하다.
  • Default 버전을 alias 를 통해서 간단하게 지정이 가능하다.

다음과 같이 설치 쉘 스크립트를 다운로드해 실행함으로써 설치는 끝난다.

설치가 끝나면 로그인을 새로하거나 다른 로그인 세션을 열면 된다.

설치가 정상적으로 되었다면 다음과 같이 확인해 볼 수 있다.

Node.js 설치

NVM 을 설치했다면 Node.js 설치는 매우 쉽다.

확인은 역시 버전을 통해서 가능하다.

간단 NVM 사용 방법

NVM 이 설치한 Node.js 를 비롯한 컴포넌트들을 확인하기 위해서는 다음과 같하면 된다.

Node.js 역시 Long Term Support 버전을 지원한다. 이 버전을 설치하기 위해서는 다음과 같이 하면 된다.

이렇게 하면 default 값이 v12.14.1 로 변경된다. 확은은 nvm ls 명령어를 이용한다.

사용하고자하는 버전으로 변경하고 싶다면 use 를 사용하면 된다.

Python – easy_install, pip 설치하는 방법

Python 에서는 easy_install, pip 를 설치하는 방법중에 하나가 ‘get-pip.py’ 스크립트를 이용하는 것인데, 다음과 같다.

wget, curl 과 같은 프로그램을 이용할 수 없을 경우에 python 프로그램을 이용할 수도 있다.

python3 의 경우에는 다음과 같다.

python2 의 경우에는 다음과 같다.

 

한줄짜리 python 프로그램으로 get-pip.py 를 다운받고 설치를 해준다. ‘–user’ 는 사용자 홈 디렉토리를 설치 디렉토리로 삼게 한다.

 

Trac 설치 및 실행

현재(2018년)에 Trac 을 설치해서 사용하는 사람이 있을지 모르겠지만, 개인적으로 뭔가를 할때 제일 좋은 툴은 것 같다. 그런데, Trac 설치는 가끔 하는거라 할때마다 헤메곤 하는데 기록해두기 위해서 이 글을 작성한다.

Python 2.7

Trac 은 현재 Python 2.7 에서 잘 작동한다. Python 2.7 이 설치되어 있어야 한다. 현 시점에서 CentOS 7, Ubuntu 16.04 LTS 에서 기본으로 Python 2.7 이 설치되어 있어 별도로 Python 2.7 을 설치할 필요는 없다.

pip, setuptools 설치

Trac 뿐만 아니라 Python 의 라이브러리를 설치하기 위해서 pip 를 이용한다. 역시나 이것도 프로그램이라서 pip 를 설치해줘야 한다.

설치하는 방법은 다음과 같이 두가지가 있다.

  • 배포판 패키지로 설치
  • setuptools 을 이용한 설치.

CentOS 7 과 Ubuntu 16.04 LTS 에서는 pip 패키지를 제공 한다. 별도로 setuptools 을 이용한 설치를 할 필요가 없다.

설치를 마쳤으면 최신버전으로 다음과 같이 업데이트를 해준다.

그리고 setuptools 은 많은 Python 라이브러리들을 설치할때 이용된다. 이것도 CentOS 7, Ubuntu 16.04 LTS 에서 패키지로 제공 한다. 설치해 주자.

Trac 1.0.15 설치

현재 2018년 1월에 Trac 최신 버전은 1.3 이다. 하지만 Trac 에 설치되는 플러그인들이 아직 1.2 이상을 잘 지원하지 못한다. 그래서 1.0.1 버전을 설치하기로 했다.

이렇게 함으로써 Trac 의 설치는 끝난다.

Trac 프로젝트 생성

Trac 은 알겠지만 Project Management 프로그램이다. 그래서 프로젝트를 만들어 줘야 한다.

위와같이 프로젝트를 생성해 준다.

프로젝트가 생성이 되었다면 이제 프로젝트를 관리할 ID 에 권한을 부여해줘야 한다. 보통 ID 는 admin 으로 하고 다음과 같이 프로젝트 Administrator 퍼미션(Permision)을 부여해준다.

admin 이라는 ID 를 추가하면서 퍼미션을 TRAC_ADMIN 으로 부여 했다.

로그인 인증 설정

admin 이라는 ID 로 로그인 인증을 위해서는 인증을 위한 방법을 먼저 정의해야 한다. 인증 방법에는 다음과 같이 두가지 방법이 있다.

  • Basic Auth by HTTP
  • Htdigest

나의 경우에는 Htdigest 방법을 사용한다. 이를 위해서 AccountManager 플러그인을 설치했다.  그리고 Htdigest 인증 파일을 작성해줘야 한다. 이를 위해서 다음과 같이 Htdigest 인증 파일을 만들어주는 trac-digest.py 파일을 이용한다.

위 소스를 trac-digest.py 로 저장한다. 그리고 다음과 같이 실행해 준다.

AccountManager 플러그인을 활성하고 이를 이용해서 이 인증 방법을 지정해준다. 다음과 같이 trac.ini 설정 파일을 편집해 준다.

Trac 실행

Trac 실행은 먼저 다음과 같이 CLI 로 할 수 있다.

CentOS 7, Ubuntu 16.04 LTS 는 Systemd 가 기본이다. 시스템 부팅 프로세스에 등록하기 위해서 systemd 스크립트를 다음과 같이 작성해 준다.

/etc/default/tracd 파일에 다음과 같이 프로젝트 정보를 기술해 준다.

이제 다음과 같이 systemd 스크립트 활성화 하고 시작해준다.

이렇게 한 후 서버에 8000 포트로 접속해서 “LocalProject” 프로젝트 리스트가 나오면 정상이다.

그리고 로그인을 할때에 앞서 설정한 계정과 비밀번호로 로그인을 하면 된다.

PHP7 설치하기

이 문서는 php7.2 설치 문서 입니다.

1. 준비

CentOS 가 최소설치되었다고 가정하고 시작했기 때문에 컴파일 환경을 구축해야 합니다.

Ubuntu16.04 의 경우에는 다음과 같은 프로그램이 설치되어 있어야 합니다.

 

2.Download and Unpack

최신버전을 다운로드 받아야 합니다.

3. Configure and Compile

이제 PHP에서 사용할 기능들을 결정해야 합니다. PHP에서 제공하는 기능은 아주 많지만 여기서는 다음과 같은 기능들을 사용할 것입니다.

아무런 에러없이 끝났다면 다음과 같이 컴파일을 해주고 설치해준다.

4. Configure to the installed php7

config-file-scan 디렉토리를 생성해 준다.

그리고 php.ini 파일을 /opt/php-7.2.1/etc 디렉토리로 복사해준다.

그리고 다음과 같이 php-fpm 을 위한 설정 파일도 만들어 준다. 이것은 php-fpm.conf.default 파일을 php-fpm.conf 파일로 복사해주고 다음과 같이 설정해 주면 된다.

그리고 pool 을 php-fpm.d 디렉토리에 설정해 준다. 보통 기본으로 www.conf 가 있는데 이것을 활요하면 된다.

위 설정은 각 서버 환경에 맞춰 해줘야 한다. 얼마나 사용자를 받느냐에 따라서 pm 값을 달리 해줘야 한다.

마지막으로 다음과 같이 systemd 를 위한 서비스 파일을 다음과 같이 작성해 줍니다.

위 내용을 php-fpm.service 파일로 /etc/systemd/system 디렉토리에 작성해 주고 systemd 에 등록해준다.

5. Verify

php-fpm 이 잘 동작하는지 확인 하는 방법으로 cgi-fcgi 명령어를 활용하는 법이 있다. 이 명령어는 php-fpm 처럼 FastCGI 로 동작하는 서버에 직접 연결을 할 수 있게 해준다.

php 정보를 표시해줄 파일을 작성하고 다음과 같이 cgi-fcgi 를 사용해 본다.

index.php  파일에는 ‘phpinfo();’ 를 호출해 php 설치에 관한 정보를 출력하도록 했으며 각종 파라메터를 쉘 환경변수에 지정해서 cgi-fcgi 로 전달해준다.