CentOS 기준.

yum 으로 설치해도 되고, 소스를 다운받아서 설치해도 된다.


>>>> yum 으로 설치


# yum install golang


이 경우엔 go가 /usr/lib/golang 경로에 자동 설치되고, go 실행파일은 /usr/bin/go 가 된다.


GOPATH를 잡아준다. GOPATH는 go로 작성된 소스들이 위치하는 작업 폴더라고 보면 된다.

GOPATH 폴더엔 pkg와 src 폴더를 만들고, 우리가 작성하는 소스는 src 폴더에 위치하면 된다.


# vi /etc/profile

export GOPATH=/home/jobs/golang

# source /etc/profile


 yum 으로 설치 끝


>>>> 혹은 아래처럼 소스 설치

 


# go version

go version go1.10.2 linux/amd64


이전에 설치된 go가 있는 경우, 버전을 올려서 설치할 경우 /usr/local/go 폴더를 지우도록 한다.


# rm -rf /usr/local/go


새로운 go 를 설치한다.


# cd /home/jobs/src

# wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz

# tar -C /usr/local -xzf go1.11.5.linux-amd64.tar.gz


이 경우엔 /usr/local/go 경로에 설치가 되었고, go 실행파일은 /usr/local/go/bin/go 에 있다.


PATH와 GOPATH를 잡아준다. GOPATH는 go로 작성된 소스들이 위치하는 작업 폴더라고 보면 된다.

GOPATH 폴더엔 pkg와 src 폴더를 만들고, 우리가 작성하는 소스는 src 폴더에 위치하면 된다.


# vi /etc/profile

export PATH=$PATH:/usr/local/go/bin

export GOPATH=/home/jobs/golang

# source /etc/profile


# go version

go version go1.11.5 linux/amd64


소스 설치 끝


>>>> go 환경변수 확인


# go env 


추가로 git도 설치해둔다.


# yum install git

git 설치

 

RHEL/CentOS 6 에는 git 1.7 이 포함되어 있는데. 이 버전이 https를 처리 못하는 버그가 있다고 한다.

따라서 git 버전을 확인해서 1.7이거나 아예 명령어를 인식하지 못한다면.. git 1.9 로 다시 설치하도록 하자.

 

# git version

git version 1.7.1

 

# git version

-bash: git: command not found

 

git 1.9 설치하기

 

# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel cpio perl perl-ExtUtils-MakeMaker

# cd /util/src

# wget https://www.kernel.org/pub/software/scm/git/git-1.9.4.tar.gz

# tar xzvf git-1.9.4.tar.gz

# cd git-1.9.4

# ./configure

# make prefix=/usr/local all

# make prefix=/usr/local install

  

버전 확인 (서버에 재접속해야 반영됨)

 

# git version

git version 1.9.04

 

 

의존성 패키지 설치

 

# yum -y install gcc gcc-c++ openssl-devel curl curl-devel make bzip2-devel libicu-devel

 

Python 설치 확인 (./configure 에 필요)

 

# python -V

Python 2.6.6


 

node.js 설치 (소스 설치 – v6.11.5)

 

g++ 컴파일러가 4.8 버전이 필요하다. 버전이 4.8 보다 작으면 devtools 이용하여 4.8 설치하자.

 

# g++ -v

gcc  version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

# wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /util/src/devtools-2.repo

# cp /util/src/devtools-2.repo /etc/yum.repos.d/devtools-2.repo

# echo enabled=1 >> /etc/yum.repos.d/devtools-2.repo

# yum install -y devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

# ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/

# hash -r

# g++ -v

gcc version 4.8.2 20140120 (Red Hat 4.8.2-15) (GCC)

 

이제 노드를 설치한다.

 

# cd /util/src

# wget https://nodejs.org/dist/v6.11.5/node-v6.11.5.tar.gz

# tar zxvf node-v6.11.5.tar.gz

# cd ./node-v6.11.5

# ./configure --prefix=/util/node

# make && make install


NODEJS_HOME 셋팅

 

# vi /etc/profile

NODEJS_HOME=/util/node

export NODEJS_HOME

PATH=$PATH:$NODEJS_HOME/bin

export PATH

# source /etc/profile

 

설치 확인

 

# node -v

v6.11.5


npm 모듈 설치

 

npm 모듈은 전역적으로 사용할 것이므로 -g 옵션과 함께 설치한다.

 

# npm install npm -g

  

forever 모듈 설치

 

forever 모듈은 전역적으로 사용할 것이므로 -g 옵션과 함께 설치한다.

 

# npm install forever -g

시스템 디폴트 언어 ID - 한국어 : 1042


GetSystemDefaultLangID


시스템 기본 언어 - 한국어 : KOR


function GetSystemDefaultLang: string;

var

  szLang: array[0..5] of Char;

begin

  Result := '';

  GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SABBREVLANGNAME,

    szLang, SizeOf(szLang) - 1);

  Result := szLang;

end;


 

로케일 얻기 - 한국 : 한국어(대한민국)


function CurrentLocale: string;

var

  ID: LangID;

  LanguageName: array[0..254] of Char;

begin

  {read current system locale}

  ID := GetSystemDefaultLangID;

  {convert an ID into text}

  VerLanguageName(ID, LanguageName, SizeOf(LanguageName));

  Result := LanguageName;

end;


설명은 따로 없습니다. 아래 코드를 참고하세요.


function BinToInt(const Bin: string): Integer;

var

  I, Len: Integer;

begin

  Result := 0;

  Len := Length(Bin);

  for i := Len downto 1 do

    if Bin[I] = '1' then

      Result := Result + (1 shl (Len - I));

end;


 

function HexToBin(const Hexadecimal: string): string;

const

  BCD: array[0..15] of string =

  ('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',

    '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');

var

  I: integer;

begin

  for I := Length(Hexadecimal) downto 1 do

    Result := BCD[StrToInt('$' + Hexadecimal[I])] + Result;

end;


설명은 따로 없습니다. 아래 코드를 참고하세요.


const

  HexChars: array[0..15] of Char = ('0', '1', '2', '3', '4', '5',

                                    '6', '7', '8', '9', 'a', 'b',

                                    'c', 'd', 'e', 'f');


function IntToHex(Int: Int64; IntSize: Byte): string;

var

  n: Byte;

begin

  Result := '';

  for n := 0 to IntSize - 1 do

  begin

    Result := HexChars[Int and $F] + Result;

    Int := Int shr $4;

  end;

end;


 

function HexToInt(const Value: string): LongWord;

const

  HexStr: String = '0123456789abcdef';

var

  i: Word;

begin

  Result := 0;

  if Value = '' then Exit;

  for i := 1 to Length(Value) do

    Inc(Result, (Pos(Value[i], HexStr) - 1) shl ((Length(Value) - i) shl 2));

end;



특별한 설명은 없습니다. 아래 코드를 참고하세요.


type

  TByteArr = array of byte;


function ByteToString(const Value: TByteArr): String;

var

  I: integer;

  S : String;

  Letra: char;

begin

  S := '';

  for I := Length(Value)-1 downto 0 do begin

    letra := Chr(Value[I] + 48);

    S := letra + S;

  end;

  Result := S;

end;


 

function StrToByte(const Value: String): TByteArr;

var

  I: integer;

begin

  SetLength(Result, Length(Value));

  for I := 0 to Length(Value) - 1 do Result[I] := ord(Value[I + 1]) - 48;

end;


MySQL 서버의 상태를 모니터링하고 튜닝하기 위해 MySQLTuner-perl 라는 스트립트가 제공됩니다.


지원되는 환경은 아래와 같습니다. 윈도우는 아직 안되네요.


 

https://github.com/major/MySQLTuner-perl 사이트에 방문하여 mysqltuner.pl 를 다운로드 받고 실행해주면 됩니다.


# wget https://github.com/major/MySQLTuner-perl/blob/master/mysqltuner.pl

# chmod +x mysqltuner.pl

# perl mysqltuner.pl


아래 그림처럼 현재 MySQL 서버 상태를 체크해서 결과를 보여주게 됩니다.

결과에서 추천하는대로 서버를 튜닝해주세요.



자세한 내용은 https://github.com/major/MySQLTuner-perl 사이트를 방문하세요.

CentOS 기준으로 ImageMagick를 설치해보자.


의존성 모듈 설치


# yum install -y tcl-devel libpng-devel libjpeg-devel 

# yum install -y ghostscript-devel bzip2-devel freetype-devel libtiff-devel zlib-devel

# yum install -y ImageMagick-c++ ImageMagick-c++-devel


imagemagick 설치


참고 사이트 http://www.imagemagick.org/script/install-source.php#unix

(configure시 CXX=CC CXXFLAGS=-O2 옵션을 주어 magicK++을 함께 설치한다)


 

# wget http://www.imagemagick.org/download/ImageMagick.tar.gz

# tar xvzf ImageMagick.tar.gz

# cd ImageMagick-7.0.4-0

# ./configure CXX=CC CXXFLAGS=-O2 --prefix=/usr/local

# make clean

# make

# make install

# /sbin/ldconfig /usr/local/lib

# /usr/local/bin/convert logo: logo.gif

# make check


imagemagick 의 delegate 조회


# identify -version

Version: ImageMagick 7.0.4-0 Q16 x86_64 2015-09-14 http://www.imagemagick.org

Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC

License: http://www.imagemagick.org/script/license.php

Features: Cipher DPC OpenMP

Delegates (built-in): bzlib fontconfig freetype jng jpeg pangocairo png x xml zlib


================================================================================


png나 jpeg가 deledates 에 보이지 않는다면.. 이 모듈이 설치된 곳을 확인해보자


# locate libpng

/usr/bin/libpng-config

/usr/bin/libpng12-config

/usr/include/libpng12

/usr/include/libpng12/png.h

/usr/include/libpng12/pngconf.h

/usr/lib64/libpng.so

/usr/lib64/libpng.so.3

/usr/lib64/libpng.so.3.49.0

/usr/lib64/libpng12.so

/usr/lib64/libpng12.so.0

/usr/lib64/libpng12.so.0.49.0

/usr/lib64/compiz/libpng.so

/usr/lib64/gthumb/modules/libpngexporter.so

/usr/lib64/pkgconfig/libpng.pc

/usr/lib64/pkgconfig/libpng12.pc


/usr/lib64 에 들어가 있다면 make 에 옵션을 주고 다시 해보자.


# make clean

# make libdir=/usr/lib64

# make libdir=/usr/lib64 install


# identify -version

Version: ImageMagick 7.0.4-0 Q16 x86_64 2015-09-14 http://www.imagemagick.org

Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC

License: http://www.imagemagick.org/script/license.php

Features: Cipher DPC OpenMP

Delegates (built-in): bzlib fontconfig freetype jng jpeg pangocairo png x xml zlib



forever 모듈을 통해 node를 구동하면 forever 로그가 /root/.forever/ 폴더에 기본적으로 남는다.

이 로그가 시간이 지날수록 점차 늘어나게 되어 디스크에 부담을 주게 되는데.

logrotate 같은 것으로 관리를 해도 되겠지만, 애시당초 로그를 남기지 않게 하는 방법을 선호할 수도 있다.

어차리 winstom 같은 로그 모듈로 특정 폴더에 로그를 남기게 할 경우 forever 로그가 딱히 필요가 없을 수 있기 때문이다.


 

forever 구동시 아래와 같이 한다면,

forever start app.js


로그를 남기지 않기 위해  -a -l /dev/null 을 옵션으로 추가해준다.


forever start -a -l /dev/null app.js

Redis를 설치하면 기본적으로 원격 접속이 가능하다. 

해당 서버 이외에는 원격 접속을 막고 싶다면 설정 파일에서 bind 정보를 로컬로 지정하면 된다.


 

redis.conf 파일을 열고


bind 127.0.0.1


이렇게 로컬 아이피를 지정하면 해당 서버에서만 접속이 가능하게 된다.

+ Recent posts