가상서버 호스팅(Linux CentOS 6.3) 기본셋팅 로그

프로젝트 마다 SE 직군 분들이 해주시던 작업인데,
직접 하려니 쉽지 않은 작업이네요.
기록을 위해 정리를 해둡니다.

주의사항

  • Linux 를 정말 못하는 프로그래머가 작업을 했습니다.
  • 따라서, 맞지 않은 부분도 많이 있습니다. Comment 해주시면 감사하겠습니다.

Linux Version 확인

 [root@jongkwang /root]# cat /etc/*release*
 CentOS release 6.3 (Final)
 CentOS release 6.3 (Final)
 CentOS release 6.3 (Final)
 cpe:/o:centos:linux:6:GA
 

OS 64bit 확인

getconf LONG_BIT

Prompt 절대 경로 표시

vi /etc/bashrc
PS1="[\u@\h \\] 이부분 찾아서
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \$PWD]\\$ "

서버명 변경

vi /etc/sysconfig/network
HOSTNAME=localhost.localdomain // 이부분을 수정 한다.

// 재부팅 명령어 이니 조심히 실행하세요.
shutdown -r now // 그리고 재부팅해야 반영된다. (재부팅 안하고 반영 하는 방법 아시면 코멘트 부탁드려요)

yum 속도 향상

  • yum-fastestmirror 설치하여 ping 이 빠른 서버 자동으로 찾기
    • 설치여부 확인 :
      yum list installed | grep fastestmirror
    • 설치하기 :
      yum -y install yum-plugin-fastestmirror yum-fastestmirror 
  • ftp.daum.net 을 yum repository 에 설정하면 빨라진다.
    • (CentOS 6.3 에서의 설정 방법을 찾지 못함. 아시는 분은 Comment 부탁드립니다.)

기본 설치

yum install gcc-c++

Java Version 1.5 –> 1.7 Upgrade

yum list java*jdk-devel //설치가능 버전 확인

yum remove java-1.5.*
yum install java-1.7.0-openjdk-devel
java -version

Apache 설치

  •  설치 여부 확인 :
    yum list installed | grep http
  • 설치:
    yum install httpd httpd-devel
  • 설치여부 확인1 :
    yum list installed | grep http
  • 설치여부 확인2 (:80포트가 있어야 한다.) :
    netstat -lntp

setup 설치 (방화벽 설정을 위함)

yum install setuptool system-config-securitylevel-tui authconfig system-config-network-tui ntsysv

방화벽 셋팅

setup

방화벽 설정 반영

/etc/init.d/iptables restart

Apache DocumentRoot

  • Document Root 위치 : grep -i ‘DocumentRoot’ /etc/httpd/conf/httpd.conf
  • DocumentRoot : /var/www/html

Tomcat6 설치

yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps

Tomcat6 Repository를 찾지 못해 설치를 못한 경우

cd /etc/yum.repos.d
wget 'http://www.jpackage.org/jpackage50.repo'
yum update
yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps
service tomcat6 start

Tomcat URIEncoding

vi /etc/tomcat6/server.xml

<Connector port="8080" ...중략... URIEncoding="UTF-8"/>

Tomcat6 실행 및 실행 확인

service tomcat6 start
netstat -ant | grep 8080

Service 에 Apache 와 Tomcat6 등록하여 부팅 시 자동실행 설정 : Setup 명령에서 서비스 등록한다. + 8080방화벽 Open

Apache VirtualHost 설정

vi /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
    ServerAdmin ???@jongkwang.com
    DocumentRoot /home/www/????.sencha.or.kr
    ServerName ????.sencha.or.kr
    ServerAlias ????.sencha.or.kr
    JkMount /*.jsp ajp13
    JkMount /servlet/* ajp13
    ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/????.sencha.or.kr-error_%Y%m%d.log 86400 +540"
    CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/????.sencha.or.kr-access_%Y%m%d.log 86400 +540" common
</VirtualHost>

MySQL 설치

yum install mysql mysql-server
(Service 에 mysqld 등록 (setup 이용))
service mysqld start
mysqladmin -u root password XXXX

mysql 한글설정(UTF-8) – http://blog.daum.net/2734/47

vi /etc/my.cnf
[client]
default-character-set=utf8

[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

MariaDB 한글설정(UTF-8)

하이라이트 된 16라인 설정을 추가 해 준다.

[mysqld]
# 0 : uppercase and lowercase divide
# 1 : no divide
lower_case_table_names=0
character-set-server=utf8

[client]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

MySQL Backup & Restore

Backup : mysqldump --opt --host=localhost --user=root --password=XXXX --all-databases > /tmp/backup/MySql_DailyBackup.sql
Restore : mysql -uroot -pXXXX < MySql_DailyBackup.sql

php 설치 및 Apache 연동
(출처 : http://iniciel.blogspot.kr/2009/06/php-%EC%99%80-apache-%EC%97%B0%EB%8F%99.html )

/usr/local/apache2/modules 디렉토리로 이동해 보면 libphp5.so 란 파일이 있을 것이다. 없으면 연동 안된다. 인스톨 다시 할 것
yum install php (5.3 버전 확인 필요)
httpd.conf 파일을 보면
LoadModule 라는 부분이 있을 것이다.
다음을 추가한다.
LoadModule php5_module modules/libphp5.so
또 AddType 부분에 가서
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
위의 라인을 추가한다.
DirectoryIndex 부분을 찾아서 index.php 와 index.phtml을 추가한다.
끝났으면 test.php 라는 파일을 아래와 같이 작성하고
<!--?php phpinfo(); ?-->
브라우저에서 php 설정 정보에 관한 테이블이 나오면 성공한 것이다.
※ chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so : 모듈 권한이 없을경우엔 이와같은 설정을 해주면 된다.
chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so

phpmyadmin 설치

rpm -ivh ftp://ftp.univie.ac.at/systems/linux/fedora/epel/6/i386/epel-release-6-5.noarch.rpm
yum update
yum install php-mcrypt
yum install phpmyadmin

vi /usr/share/phpMyAdmin/config.inc.php ==> cookie 를 http 로 변경

$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)?

vi /etc/httpd/conf.d/phpMyAdmin.conf 에서 아래 부분 주석처리

10 #
11 # order deny,allow
12 # deny from all
13 # allow from 127.0.0.1
14 #

mod_jk 설치

wget http://mirror.apache-kr.org//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz
tar xvfz tomcat*
cd tomcat*
cd native
./configure -with-apxs=/usr/sbin/apxs
make
make install

# "make install" 하면 /etc/httpd/modules/mod_jk.so 파일이 생성된다.

mod_jk 와 Apache 연동

# mod_jk.so 위치 확인
ls /etc/httpd/modules/mod_jk.so

# workers.properties 생성
vi /etc/httpd/conf/workers.properties
workers.tomcat_home="/home/tomcat6"
workers.java_home="/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64"
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.lbfactor=1
worker.ajp13.type=ajp13

# mod_jk.conf 생성
vi /etc/httpd/conf/mod_jk.conf
<IfModule mod_jk.c>
    JkWorkersFile "/etc/httpd/conf/workers.properties"
    JkLogFile "/var/log/tomcat6/mod_jk.log"
    JkLogLevel info
#    JkAutoAlias "/var/lib/tomcat6/webapps"
#    JkMount /* ajp13
#    JkMount /*.jsp ajp13
#    JkMount /servlet/* ajp13
#    JkMount /examples/*.jsp ajp13
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    JkRequestLogFormat "%w %V %T"
</IfModule>

# httpd.conf 에 다음 내용 추가
vi /etc/httpd/conf.httpd.conf
LoadModule jk_module modules/mod_jk.so
include conf/mod_jk.conf

svn 1.7 설치

개인적으로 svn 1.7버전을 선호한다.(보통은 대게 1.6버전을 많이 쓴다.)
svn 설치 시 sqlite 설치를 요구한다.

SQLite 설치

wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz
## 위 주소는 http://www.sqlite.org/download.html 이곳에서 확인 한다.
tar xvfz sqlite-autoconf-3071700.tar.gz
cd sqlite-autoconf-3071700
./configure --prefix=/usr/local/sqlite3
make
make install

Subversion 1.7 설치

yum remove subversion
cd /usr/local/src
wget http://www.apache.org/dist/subversion/subversion-1.7.10.tar.gz
tar zxf subversion-1.7.10.tar.gz
cd /usr/local/src/subversion-1.7.10
wget http://mirror.apache-kr.org//apr/apr-1.4.6.tar.gz
wget http://mirror.apache-kr.org//apr/apr-util-1.5.2.tar.gz
tar zxf apr-util-1.5.2.tar.gz
tar zxf apr-1.4.6.tar.gz
./configure

Subversion 1.7 설치 &gt apr 에러 발생하면

./configure --with-apr=/usr/local/apr-1.4.6 --with-apr-util=/usr/local/apr-util-1.4.1

Subversion 1.7 설치 시 sqlite3.c 관련 에러 발생하면

./configure --with-sqlite=/usr/local/src/sqlite-autoconf-3071700/sqlite3.c
또는
cp sqlite3.c /usr/local/src/subversion-1.7.10/sqlite-amalgamation

Subversion 1.7 설치 시 zlib 관련 에러 발생하면
(참고사이트 : http://clumsyfingers.blogspot.kr/2012/04/installing-subversion-17-on-centos-55.html )

wget http://zlib.net/zlib-1.2.7.tar.gz #version may have changed, check site
tar xvf zlib-1.2.7.tar.gz
mv zlib-1.2.7 zlib
cd zlib
./configure --shared
make
make install
cd ..
./configure CPPFLAGS="-Izlib/ -Lzlib/"
make
make install

/usr/local/bin/svn --version

SVN Repository 생성

svnadmin create --fs-type fsfs /home/svn/repos

subversion 이 재부팅 시 자동으로 실행 되지 않는 경우

보통의 경우 service로 등록되어 자동실행 되지만
그렇지 않은 경우 아래와 같은 방법을 이용 할 수 있다.
(사실 service 등록하는 방법보다 훨씬 간편하다.)
/etc/rc.d/rc.local 파일에 아래와 같은 내용 추가

# SVN Server
/usr/local/bin/svnserve -d -r /home/svnrepository

SFTP만 접속 가능한 계정 생성

$ vi /bin/sftp-only

#!/bin/sh
if [ "$*" != "-c /usr/libexec/openssh/sftp-server" ]; then
 echo "Sorry, ssh access not allowd.";
 exit;
fi;
exec /usr/libexec/openssh/sftp-server

이와 같이 스크립트 작성 후 계정의 로그인쉘로 지정한다.
(물론 실행 권한은 줘야 한다.)


adduser 아이디 -d /홈경로/ -g 그룹명 -s /bin/sftp-only