[CentOS 7] step3-3. 웹서버 설치 2014-08-12

1. 기존 설치된 패키지 제거

> OS에 포함되어 있거나 기존에 쓰던 서버를 활용하는 것이라면 버전 호환성을 위해 제거 후 다시 설치

yum -y remove \
       httpd \
       nginx \
       java*jdk-devel \
       php 
>>>>>> description
– 설치여부 및 버전 확인 : yum list installed httpd* nginx* php* java*jdk-devel

2. APACHE OR NGINX

>>> 설치
## apache
yum -y install --enablerepo=remi,remi-php56 \
       httpd httpd-devel
## nginx
yum -y install --enablerepo=remi,remi-php56 \
       nginx nginx-devel
>>>>>> description
– remi repository를 사용
>>> 시스템 시작시 자동실행설정
## apache
systemctl enable httpd
## nginx
systemctl enable nginx
>>>>>> description
– 서비스는 설정파일 수정 후 시작함. (step5. 서비스 설정)

3. JDK & TOMCAT

>>> jdk 설치 가능여부 확인
yum list --enablerepo=remi java*jdk-devel
>>>>>> description
– 설치가능여부를 확인하고 필요한 버전의 패키지(1.7 or 1.8)를 설치
>>> jdk 설치
yum -y install --enablerepo=remi \
       java-1.8.0-openjdk-devel.x86_64
>>>>>> description
– 의존성 있는 기타 패키지가 함께 설치됨
>>> jdk 설치 확인
java -version
>>>>>> description
– 버전정보가 확인된다면 정상설치된 것임
>>> tomcat7 설치 : yum 설치시 apache-common-collections 버전 충돌로 설치 되지 않는다. 직접 다운받아 설치하도록 한다.
## yum 설치 : 현재기준[2014-09-14] 의존성 에러발생
yum -y install --nogpgcheck \
       tomcat7 tomcat7-admin-webapps tomcat7-webapps
## 다운로드
cd /usr/local/src
wget http://server.opendocs.co.kr/apache-tomcat-8.0.21.tar.gz
## 압축해제
tar xvf apache-tomcat-8.0.21.tar.gz
## 폴더이동
mv apache-tomcat-8.0.21 ../
## 시작 / 종료 / 재시작 스크립트 작성
vi /etc/init.d/tomcat
## 실행권한 변경
chmod 755 /etc/init.d/tomcat
## 시작시 자동실행
chkconfig --add tomcat
chkconfig --level 234 tomcat on
## 서비스 시작
service tomcat start
## /etc/init.d/tomcat
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80 

# 환경변수 등록
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/local/apache-tomcat-8.0.21

case $1 in
start)
# 시작
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
# 종료
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
# 재시작
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
>>>>>> description
– 단순압축 해제만으로 설치가능
– 운영을 위하여 시작/종료/재시작의 스크립트를 작성

4. PHP

>>> 설치
yum -y install --enablerepo=remi,remi-php56 \
       php php-devel php-pear
>>>>>> description
– remi repository를 사용
– PEAR : 재사용할 수 있는 PHP 컴포넌트를 관리해주는 시스템
– PECL : PHP 확장라이브러리 설치 및 업그레이드 기능을 제공하며 PEAR와 함께 설치됨
>>> 확장라이브러리 설치
yum -y install --enablerepo=remi,remi-php56 \
       php-gd php-mbstring php-mhash \
       php-mcrypt php-bcmath \
       php-mysql php-mysqli
>>>>>> description
– remi repository를 사용
– PHP로 각종 라이브러리를 사용할 수 있도록 설치
>>> PECL을 통한 확장라이브러리 설치 및 충돌해결
## 충돌해결
pecl upgrade igbinary
pecl upgrade memcached redis
## 설치
yum -y install --enablerepo=remi,remi-php56 \
       php-pecl-memcached php-pecl-redis \
       php-pecl-zendopcache php-pecl-xdebug
## 설치시 충돌발생
PHP Warning: PHP Startup: igbinary: Unable to initialize module
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: igbinary_unserialize in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: undefined symbol: igbinary_unserialize in Unknown on line 0
>>>>>> description
충돌내용
– 설치된 php컴파일 버전과 라이브러리의 컴파일 버전이 일치하지않음
– PECL로 라이브러리의 컴파일버전을 업그레이드 해야함
>>> yum으로 제공되지 않는 확장라이브러리 설치
## mongoDB 라이브러리 설치
pecl install mongo
vi /etc/php.d/mongo.ini
extension=mongo.so
## svn 라이브러리 설치
pecl install svn
vi /etc/php.d/svn.ini
extension=svn.so
>>>>>> description
– redis, memcached등은 자동으로 ini에 추가되나 mongo, svn의 경우 수동으로 추가해주어야 함
– 다음명령으로 PECL 설치내역 및 버전 확인
pecl list

5. NodeJS

>>> 설치
# 패키지 설치
yum -y install --enablerepo=remi npm nodejs
# 패키지 관리자 업데이트
npm -g update
>>>>>> description
– remi repository를 사용
– NPM(Node Package Manager) : nodejs와 함께 자동 설치됨
>>> 서비스 운영을 위한 패키지 설치
npm -g install supervisor forever
>>>>>> description
– ‘-g’ : 글로벌 옵션을 주어 설치
– supervisor : js 파일 수정시 자동으로 재시작 해줌
– forever : 예외 발생시 데몬이 죽어도 자동으로 재시작(무한 또는 횟수 지정) 해줌
※ 상세 활용법은 별도 문서 작성 [forever], [supervisor]

[CentOS 7] step3-2. 캐시서버 설치 2014-08-11

1. 기존 설치된 패키지 제거

> OS에 포함되어 있거나 기존에 쓰던 서버를 활용하는 것이라면 버전 호환성을 위해 제거 후 다시 설치

yum -y remove redis memcached
>>>>>> description
– 설치여부 및 버전 확인 : yum list installed redis* memcached*

2. Redis

>>> 설치
yum -y install --enablerepo=remi redis
>>>>>> description
– remi repository를 사용
>>> 설정파일 수정
## 설정파일 수정
vi /etc/redis.conf
#### /etc/redis.conf
pidfile /var/run/redis/redis.pid
dir /var/lib/redis/
port 6379
logfile /var/log/redis/redis.log
#bind 127.0.0.1
>>>>>> description
– pidfile : pid 파일 경로
– REDIS_CONFIG : 설정파일 경로
– dir : 데이터파일 경로
– logfile : 로그파일 경로
– vm-swap-file : 스왑파일 경로
– #bind 127.0.0.1 : 원격에서 접속하기 위해서 주석처리
>>> 자동실행 설정 및 서비스 시작
## 서비스 시작
systemctl start redis.service
## 시스템 시작시 redis 자동실행
systemctl enable redis
>>>>>> description
– 설정파일 : vi /etc/redis.conf
>>> 실서비스 구성환경과 동일하게 설정하기 위해 추가 데몬구성
## 설정파일 복사
cp /etc/redis.conf /etc/redis_{PROJECT_NAME}.conf
## 실행파일 복사
cp /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis_{PROJECT_NAME}.service
## 데이터 저장 폴더 생성
cp /var/lib/redis /var/lib/redis_{PROJECT_NAME}
chown -R redis:redis /var/lib/redis_{PROJECT_NAME}
## 설정파일 수정
vi /etc/redis_{PROJECT_NAME}.conf
## 실행파일 수정
vi /usr/lib/systemd/system/redis_{PROJECT_NAME}.service
## 서버폴더 생성
mkdir /var/lib/redis_{PROJECT_NAME}
chown -R redis:redis /var/lib/redis_{PROJECT_NAME}/
chgrp -R redis /var/lib/redis_{PROJECT_NAME}/
## 서비스 시작
systemctl start redis_{PROJECT_NAME}.service
## 시스템 시작시 자동실행
systemctl enable redis_{PROJECT_NAME}
## /etc/redis_{PROJECT_NAME}.conf
pidfile /var/run/redis/redis_{PROJECT_NAME}.pid
dir /var/lib/redis_{PROJECT_NAME}/
port 6380
logfile /var/log/redis/redis_{PROJECT_NAME}.log
## /usr/lib/systemd/system/redis_{PROJECT_NAME}.service
## - redis => redis_{PROJECT_NAME}으로 수정
ExecStart=/usr/bin/redis-server /etc/redis_{PROJECT_NAME}.conf --daemonize no
>>>>>> description
– 설정파일 : vi /etc/redis_{PROJECT_NAME}.conf

3. Memcached

>>> 설치
yum -y install --enablerepo=remi memcached
>>>>>> description
– remi repository를 사용
>>> 설정파일 수정
vi /etc/sysconfig/memcached
PORT="11211"
USER="root"
MAXCONN="1024"
CACHESIZE="256"
OPTIONS=""
>>>>>> description
– PORT : 접속포트번호
– USER : 사용자
– MAXCONN : 최대 접속수
– CACHESIZE : 캐쉬사이즈
– OPTONS : 보안옵션으로 빈값이면 ANY ADDRESS로부터 접속허용 (EX. 특정아이피에서만 접속하고자하면 -l {IP ADDRESS)
>>> 자동실행 설정 및 서비스 시작
## 서비스 시작
systemctl start memcached.service
## memcached시스템 시작시 자동실행
systemctl enable memcached
>>>>>> description
– 설정파일 : vi /etc/sysconfig/memcached
>>> 실서비스 구성환경과 동일하게 설정하기 위해 추가 데몬구성
## 설정파일 복사
cp /etc/sysconfig/memcached /etc/sysconfig/memcached_{PROJECT_NAME}
## 실행파일 복사
cp /usr/lib/systemd/system/memcached.service /usr/lib/systemd/system/memcached_{PROJECT_NAME}.service
## 설정파일 추가
vi /etc/sysconfig/memcached_{PROJECT_NAME}
## 실행파일 수정
vi /usr/lib/systemd/system/memcached_{PROJECT_NAME}.service
## 서비스 시작
systemctl start memcached_{PROJECT_NAME}.service
## memcached시스템 시작시 자동실행
systemctl enable memcached_{PROJECT_NAME}
## /etc/sysconfig/memcached_{PROJECT_NAME}
PORT="11212"
USER="root"
MAXCONN="1024"
CACHESIZE="256"
OPTIONS=""
## /usr/lib/systemd/system/memcached_{PROJECT_NAME}.service
## 다음라인 수정 (memcached => memcached_{PROJECT_NAME})
EnvironmentFile=-/etc/sysconfig/memcached_{PROJECT_NAME}
>>>>>> description
– 설정파일 : vi /etc/sysconfig/memcached_{PROJECT_NAME}

[CentOS 7] step3-1. 디비서버 설치 2014-08-10

1. 기존 설치된 패키지 제거

> OS에 포함되어 있거나 기존에 쓰던 서버를 활용하는 것이라면 버전 호환성을 위해 제거 후 다시 설치

yum -y remove mysql mongodb-org
>>>>>> description
– 설치여부 및 버전 확인 : yum list installed mysql* mongodb-org*

2. MySQL or MariaDB

> remi7 버전부터 MySQL대신 MariaDB를 지원한다. MariaDB의 설정 및 운영은 MySQL과 거의 비슷하다고 볼 수 있으므로 MariaDB를 설치하자. 자세한 내용은 사이트(https://mariadb.com)확인하자.

>>> 설치
## MariaDB 설치
yum -y install --enablerepo=remi \
       mariadb \
       mariadb-server \
       mariadb-devel
## MariaDB 서비스 실행
systemctl start mariadb.service
>>>>>> description
– remi repository를 사용
– 서버운영에 필요한 패키지를 함께 설치

>>> 인스톨
/usr/bin/mysql_secure_installation
>>>>>> description
– 기본값으로 입력하기 위해서는 엔터입력
>>> 서버사양에 맞는 설정파일 복사
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
>>>>>> description
설정파일 메모리
my-huge.cnf 1 ~ 2 GB
my-large.cnf 512 MB
my-medium.cnf 128 MB ~ 256 MB
my-small.cnf 64 MB 이하
>>> 설정파일 수정
# 설정파일 수정
vi /etc/my.cnf
# 소캣파일 심볼릭 링크
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
[mysqld]
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql/data
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
## 추가
character-set-server=utf8
collation-server=utf8_general_ci
>>>>>> description
– 캐릭터셋을 utf8로 설정
– 데이터파일 경로 설정
– 로그파일 경로 설정
※ 성능튜닝에 관련해서는 별도로 작성토록함 [링크]
>>> 권한 변경 및 인스톨
## MariaDB 서비스 중지
systemctl stop mariadb.service
## 기본디비 인스톨
/usr/bin/mysql_install_db --user=mysql
## 폴더 권한 설정
mkdir /var/lib/mysql/data
chown -R mysql:mysql /var/lib/mysql/
chgrp -R mysql /var/lib/mysql/
## 시스템 시작시 자동실행
systemctl enable mariadb.service
>>>>>> description
– 데이터 파일은 별도의 계정으로 관리
– 설정파일 : /etc/my.conf
– 데이터 저장 폴더 : /var/lib/mysql/data
– 로그 저장 폴더 : /var/log/mysqld.log

3. mongoDB

> 현재기준 remp repository에서 지원되지 않아 직접 추가해주어야 함

>>> repository 추가 및 설치
## 저장소 추가
vi /etc/yum.repos.d/mongodb.repo
## 최신 안정화버전 설치
yum -y install mongodb-org
## 특정버전 설치
yum -y install \
       mongodb-org-2.6.1 \
       mongodb-org-server-2.6.1 \
       mongodb-org-shell-2.6.1 \
       mongodb-org-mongos-2.6.1 \
       mongodb-org-tools-2.6.1
# mongodb.repo
## 64 비트
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
priority=1
## 32 비트
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1
priority=1
>>>>>> description
– 최초 안정화 버전 설치 후 추후 다른 시스템과의 호환성을 위해 버전을 꼭 체크해야함
>>> 설치 후 의도하지 않은 업데이트 진행방지
vi /etc/yum.conf
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
>>>>>> description
– 업그레이드시 호환성 문제가 발생될 가능성이 있음
>>> 설정파일 수정
vi /etc/mongod.conf
dbpath=/var/lib/mongo/data
#bind_ip=127.0.0.1
>>>>>> description
– 데이터 폴더 경로 설정
– #bind_ip=127.0.0.1 : 원격접속을 위해 주석처리
>>> 자동실행 설정 및 서비스 시작
## 디비 관리 계정추가
useradd mongod
passwd mongod
## mongo 폴더 권한 설정
mkdir /var/lib/mongo/data
chown -R mongod:mongod /var/lib/mongo/
chgrp -R mongod /var/lib/mongo/
## 서비스 시작
service mongod start
## mongod 시스템 시작시 자동실행
chkconfig mongod on 
– 설정파일 : /etc/mongod.conf
– 데이터 저장 폴더 : /var/lib/mongo
– 로그 저장 폴더 : /var/log/mongodb