일상의 정리

GIT 여러 사용자 공유하기

리눅스/설치

GIT 여러 사용자 공유


리모트 서버의 GIT를 여러 명의 사용자가 공유할 경우 아래의 방법을 사용


1. GIT 서버에서 Remote 관리용 사용자 생성 (ex: gitteam)


2. test 용 저장소 생성

mkdir TestProject.git

cd TestProject.git

git --bare init


3. 클라이언트 PC에서 git 사용자 액세스용 공개키 생성

ssh-keygen -t rsa

--> .ssh/id_rsa.pub 파일 생성됨


4. id_rsa.pub 파일을 scp 명령으로 GIT서버로 복사

scp .ssh/id_rsa.pub to_user@111.222.333.444:~


5. 복사된 사용자 계정의 .ssh/authorized_keys 에 파일 내용 추가

cat id_rsa.pub >> .ssh/authorized_keys


6. 사용자 계정에서 사용자명 추가

git config --global user.name "John"

git config --global user.email "John@gmail.com"


7. git clone 으로 제대로 받아와 지는 지 확인


git clone gitteam@IPADDR:TestProject.git


정상적으로 받아와 지면 성공

SVN to GIT

리눅스/설치

SVN migration to GIT with history


먼저 git 에 svn sub command 추가

# yum install git-svn.noarch


이 후 git 로컬 저장소를 생성할 id로 로그인

$ svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt

users.txt 를 열어서 아래 형식으로 수정

username = 사용자명 <이메일@도메인>


$ git svn clone file:///home/svn/저장소/  --authors-file=users.txt --no-metadata  --trunk /  -s <project-dir>

$ cd <project-dir>

$ git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done
$ git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done

$ git remote add origin ssh://user@www.example.com:2222/home/git/project.git

$ git push origin --all

$ git remote show origin



다른 머신 또는 사용자로 로그인


$git clone ssh://user@www.example.com:2222/home/git/project.git <project-dir>




dnssec-keygen 응답이 없을 때

리눅스/설치

이전 포스팅에서 bind dynamic update 하는 방법을 정리한 적이 있다.


그 이후 오랜만에 서버를 업그레이드 하여 이전 포스팅에 따라 키를 생성하려고 하니 dnssec-keygen 명령이 응답이 없다.

구글링해보니 리눅스에서는 Seed를 주기 위해 -r /dev/urandom을 추가해 주어야 한다고 한다.


예를 들면 다음과 같이 사용한다.

dnssec-keygen -r /dev/urandom -a hmac-md5 -b 256 -n HOST test.com.




CentOS 6.4 qmail + vpopmail + mysql + dovecot + roundcube

리눅스/설치

이 키워드로 구글링 하면 제일 잘 정리된 페이지가 아래 페이지이다.

http://notes.sagredo.eu/


위 페이지를 기반으로 설치를 하면서 버전이 맞지 않아 생기거나 실수로 생기는 사항에 대해서만 추가한다.


주의할 점

위 페이지를 보면 roundcube 설치 후 spamassassin 을 설치하는 거로 되어 있지만 

spamassassin 을 먼저 설치하는 게 정상 순서이다.


vpopmail 설치 시 CentOS 같은 경우 uid 89 를 이미 postfix 에서 사용중이다.

해결방법은 postfix 를 제거 하거나 다른 uid를 사용하는 방법이다.

다른 uid를 사용할 때 주의해야 하는 점은 Roberto의 스크립트를 그대로 따라하면 에러가 발생된다.

스크립트에서 89 라고 되어 있는 부분을 본인이 사용한 uid 로 바꿔 주어야 한다.


dovecot 설치 시 설치 후 테스트 할 경우 ManageSieve 에러가 발생한다.

sieve 설정을 안해서 발생하는 문제로 다음 2가지 방법이 있다.

1. mv 20-managesieve.conf 20-managesieve.conf.disabled 로 sieve 설정을 무효화 한 후 테스트

2. 그 다음 Filtering 페이지까 다 설정한 후에 테스트


spamassassin 설치 방법은 Roberto 의 방법으로 하면 정상 동작하지 않는다.

아래 방법대로 설치한다.

1. spamassassin 소스 취득 및 소스 폴더로 감

2. 필수 패키지 설치

perl -MCPAN -eshell

cpan[1]> install Digest::SHA1 HTML::Parser Net::DNS NetAddr::IP  Time::HiRes LWP HTTP::Date  IO::Zlib Archive::Tar


2. 옵션 패키지 설치

cpan[2]> MIME::Base64 Net::SMTP Mail::SPF IP::Country::Fast DB_File Net::Ident IO::Socket::SSL 

cpan[3]> Compress::Zlib Mail::DKIM DBI


3. sapmassassin 설치

cpan[4]> install Mail::SpamAssassion


4. 잘 설치되었는 지 확인

sapmassassin -V


설치 된 이후는 다시 Roberto 의 페이지 대로 설정한다.

CentOS 6.4 + vsftpd 3.0.2 + ftps + 가상유저 설치

리눅스/설치

1. 소스 다운로드

http://vsftpd.beasts.org 에서 최신 버전 소스를 다운합니다.

2. 의존성 패키지 설치

yum install pam.x86_64 pam-devel.x86_64
yum install tcp_wrappers.x86_64 tcp_wrappers-devel.x86_64 tcp_wrappers-libs.x86_64
yum install db4-utils

3. 소스 압축해제

tar xvzf vsftpd-3.0.2.tar.gz

4. 소스 패치 (2개 파일)
vi logging.c postlogin.c
str_replace_unprintable(p_str, '?'); 를 찾아서 // 로 comment 처리

vi builddefs.h (아래와 같이 udef --> define으로 변경)
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL

5. 컴파일 및 설치
make; make install

6. init 스크립트 추가
vi /etc/init.d/vsftpd
#!/bin/bash
#
# vsftpd      This shell script takes care of starting and stopping
#             standalone vsftpd. Customized to be used with CentOS 5.4
#             and Monit by creating PID files for each process
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program \
#              that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0
prog="vsftpd"
site="$prog"
sbin="/usr/sbin/vsftpd"
conf="/etc/vsftpd/vsftpd.conf"
pidfile="/var/run/vsftpd/vsftpd.pid"

[ -d /var/run/$prog ] || mkdir -p /var/run/$prog

start() {

    [ -x $sbin ] || exit 1
    [ -r $conf ] || exit 1

    if [ -f $pidfile ]; then
        pid=`cat $pidfile`
        ps -ef | grep -v grep | grep $pid | grep $sbin > /dev/null
        if [ $? -eq 0 ]; then
            echo "$prog already running!"
            exit 1
        else
            rm -f $pidfile
        fi
    fi

    echo -n $"Starting $prog: "
    $sbin $conf &
    [ $? -eq 0 ] && success || failure
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    pidcmd=`ps -ef | grep -v grep | grep $sbin | awk '{print $2}'`
    echo $pidcmd > $pidfile
    echo
    return $RETVAL
}


stop() {

    echo -n $"Shutting down $prog: "
    killproc $prog
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    rm -f $pidfile
    return $RETVAL

}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart|reload)
        stop
        start
        RETVAL=$?
        ;;
    condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
    status)
        status $prog
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 2
esac

exit $RETVAL


7. vsftp 설정
# adduser virtualuser
# cp vsftpd.conf /etc/vsftpd/vsftpd.conf
# vi /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_passwd

다음 구문 추가 또는 수정
# vi /etc/vsftpd/vsftpd.conf
listen=YES
listen_port=2001
pam_service_name=vsftpd
tcp_wrappers=YES
guest_enable=YES
guest_username=virtualuser
virtual_use_local_privs=YES
hide_ids=YES
pasv_enable=YES
pasv_min_port=2002
pasv_max_port=2100
# 사용자 디렉토리 별도 지정
user_config_dir=/home/vsftpd/users
allow_writeable_chroot=YES
ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
force_local_logins_ssl=YES
force_local_data_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
allow_anon_ssl=NO


8. 사용자/passwd 파일 추가
# cd /etc/vsftpd
# vi virtual_user.txt
user1
user1-pass
user2
user2-pass

// 사용자 password 변환
# db_load -T -t hash -f virtual_user.txt /etc/vsftpd/virtual_passwd.db  

# mkdir /home/vsftpd/users
# vi /home/vsftpd/users/user1
local_root=/home/vsftpd/user1
write_enable=no

9. ssl 설정

cd /etc/pki/tls/certs

// 10년 짜리 키 생성
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
# chmod 600 vsftpd.pem


CentOS 6.4 Mysql 5.6 + httpd 2.4.9 + php 5.5.10 + Tomcat 8.0 설치

리눅스/설치
Ⅰ. 설치 전 준비

yum -y ?disablerepo=\* ?enablerepo=c6-media install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel  ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool  libtool-libs openldap openldap-devel nss_ldap openldap-clients openldap-servers libtool-ltdl libtool-ltdl-devel bison
yum groupinstall "Development Tools"
yum -y install gd gd2 gd-devel gd2-devel wget pcre openssl* perl libaio


- Download

http://dev.mysql.com/downloads/mysql/#downloads

Generic Linux (Architecture Independent), Compressed TAR Archive download
apr: http://apache.mirror.cdnetworks.com/apr/apr-1.6.2.tar.gz
apr-iconv: http://apache.mirror.cdnetworks.com/apr/apr-iconv-1.2.1.tar.gz
apr-util: http://apache.mirror.cdnetworks.com/apr/apr-util-1.6.0.tar.gz
apache: http://apache.mirror.cdnetworks.com/httpd/httpd-2.4.27.tar.gz
pcre: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

php : http://www.php.net/downloads.php#v5
http://kr1.php.net/get/php-5.5.10.tar.gz/from/this/mirror
libiconv : http://www.gnu.org/software/libiconv/#downloading
libmcrypt : http://sourceforge.net/projects/mcrypt/files/Libmcrypt/
mhash : http://mhash.sourceforge.net/
mcrypt : http://sourceforge.net/projects/mcrypt/
ImageMagick: http://www.imagemagick.org/script/download.php
imagick: http://pecl.php.net/package/imagick

Tomcat 8.0 : http://tomcat.apache.org/download-80.cgi
Tomcat Native: http://tomcat.apache.org/download-native.cgi
Tomcat Connector : http://tomcat.apache.org/download-connectors.cgi
jdk : http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Ⅱ. MySQL

1. 기존 mysql 제거
yum erase mysql-libs


2. 의존성 패키지 설치
yum install cmake.x86_64
yum install ncurses-devel.x86_64

3. 컴파일

cmake -DCMAKE_INSTALL_PREFIX=/home/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all

make; make install

 


4. 환경 설정
cp /home/mysql/support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
다음 항목을 [mysqld] 영역에 추가
########################
basedir = /home/mysql
datadir = /home/mysql/data
port = 3306
server_id = 1
socket = /tmp/mysql.sock
explicit_defaults_for_timestamp=true
########################


5. 사용자 추가 및 DB 설치
groupadd mysql
useradd -r -g mysql mysql
cd /home
chown -R mysql:mysql mysql
cd mysql
scripts/mysql_install_db \
--user=mysql \
--datadir=/home/mysql/data \
--basedir=/home/mysql


6. MySQL 시동파일 구성 및 시작
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
/etc/init.d/mysqld start


7. root 패스워드 및 보안 설정
/home/mysql/bin/mysql_secure_installation


8. 리눅스 시작시 mysql 구동되도록 설정
chkconfig --add mysqld
chkconfig mysqld on

Ⅲ. Tomcat 8 설치

1. apr 1.6.2 설치
tar zxvf apr-1.6.2.tar.gz
cd apr-1.6.2
./configure --prefix=/usr/local/apr
make
make install


2. apr-iconv 설치
tar zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install


3. apr-util 설치
tar zxvf apr-util-1.6.0.tar.gz
cd apr-util-1.6.0
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install

4. jdk 설치
rpm -ivh jdk-7u45-linux-x64.rpm

5. Tomcat 8.0 설치
tar zxvf apache-tomcat-8.5.20.tar.gz
mv apache-tomcat-8.5.20 /usr/local/


tar xvzf ../down/tomcat-native-1.2.12-src.tar.gz
cd tomcat-native-1.2.12-src/jni/native/
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.8.0_144/ --libdir=/usr/local/lib64

make
make install


a. 환경구성

vi /etc/profile 파일의 마지막에 다음 행 추가

export LD_LIBRARAY_PATH=/usr/local/apr/lib
export JAVA_HOME=/usr/java/jdk1.8.0_144
export TOMCAT_HOME=/usr/local/tomcat
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib

b. 설정 확인을 위해 다음 명령 실행

# source /etc/profile
# java -version

************* 다음 내용이 출력되면 성공 ***************************
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
*****************************************************************

c. 방화벽 포트를 오픈

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart

d. tomcat 시작/정지

startup.sh
# tomcat 시작

shutdown.sh
# Tomcat 정지

e. 테스트

http://server-ip:8080/

f. 구동파일 생성

vi /etc/init.d/tomcat
다음 내용을 추가
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
 
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.20
 
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

chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on


Ⅳ. apache 설치

1. pcre 설치

pcre-8.41.tar.gz

tar zxvf pcre-8.41.tar.gz

cd pcre-8.41/

./configure --libdir=/usr/local/lib64

make && make install
ln -s /usr/local/lib64/libpcre.so.1 /lib

2. apache 설치
tar xvzf httpd-2.4.27.tgz
cd httpd-2.4.27

groupadd apache
useradd -g apache apache

./configure --prefix=/usr/local/apache \
--enable-authn-alias \
--enable-cache \
--enable-file-cache \
--enable-mem-cache \
--enable-disk-cache \
--enable-mods-shared=most \
--enable-proxy=shared \
--enable-proxy-ajp=shared \
--enable-proxy-ajp=shared \
--enable-dav=shared \
--with-apr=/usr/local/apr/ \
--with-apr-util=/usr/local/apr-util/ \
--enable-ssl \
--enable-dav \
--enable-cgi \
--with-mpm=event \
--enable-cgid \
--enable-vhost-alias \
--enable-rewrite \
--enable-forward=shared \
--enable-proxy-connect=shared \
--enable-proxy-http=shared \
--enable-deflate=shared \
--enable-so \
--enable-headers=shared \
--enable-include=shared \
--enable-rewrite=shared


make&&make install


3. Apache 사용자 지정을 위해 /usr/local/apache/conf/httpd.conf 파일 수정

User apache

Group apache


4. Apache 시작

/usr/local/apache/bin/apachectl start


테스트


http://server-ip


It Works!가 보이면 정상

5. 구동 파일 설정
cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
vi /etc/rc.d/init.d/httpd
다음 5줄을 #을 포함하여 위 파일의 상단부 #!/bin/bash 다음에 복사
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/apache/bin/apachectl
# config: /usr/local/apache/conf/httpd.conf
# pidfile: /usr/local/apache/logs/httpd.pid

chkconfig --add httpd
chkconfig httpd on

아파치 재시작
/etc/rc.d/init.d/httpd restart

Ⅴ. php-5.5.10 설치

1. PHP 5 지원 라이브러리 설치

a. libiconv(문자 인코딩 라이브러리)

tar xvzf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local --libdir=/usr/local/lib64
make
make install
cd ..

b. libmcrypt(PHP에서 암호화 해독 알고리즘인 mcryp를 사용하기 위해서 설치해야 한다)

tar xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local --libdir=/usr/local/lib64
make
make install
/sbin/ldconfig

cd libltdl/
./configure --enable-ltdl-install --libdir=/usr/local/lib64
make
make install
cd ../../

c. mhash(hash암호화 알고리즘)

tar xvzf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure --prefix=/usr/local --libdir=/usr/local/lib64
make
make install
cd ..

d. mcrypt 설치

tar xvzf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure --prefix=/usr/local --libdir=/usr/local/lib64
make
make install
cd ..

2. php-5.5.10 설치
yum install libxml2-devel bzip2-devel libcurl-devel openldap-devel
tar xvzf php-5.5.10.tar.gz
mysql lib를 64비트로 인식되도록 변경
ln -s /home/mysql/lib /home/mysql/lib64
./configure --prefix=/usr/local/php \
--with-libdir=lib64 \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/home/mysql \
--with-mysqli=/home/mysql/bin/mysql_config \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-pear=/usr/share/php \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-maintainer-zts \
--enable-opcache \
--with-curl \
--with-iconv-dir=/usr/local \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-ldap \
--with-ldap-sasl \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-bz2 \
--enable-static \
--enable-intl \
--enable-exif \
--with-pdo-mysql=/home/mysql \
--with-gettext

make
iconv관련 링크에러가 날  경우
vi 로 Makefile 을 열어서
EXTRA_LIBS 를 찾아 -liconv 를 추가

make install

3. php구성 파일 생성
cp -f php.ini-production /usr/local/php/etc/php.ini

4. opcache 활성화
/usr/local/php/etc/php.ini 의 opcache 부분을 아래와 같이 변경

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
;opcache.validate_timestamps=1
;opcache.revalidate_path=0
;opcache.save_comments=1
;opcache.load_comments=1
;opcache.enable_file_override=0
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
;opcache.blacklist_filename=
;opcache.max_file_size=0
;opcache.consistency_checks=0
;opcache.force_restart_timeout=180
;opcache.error_log=
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0


맨 끝에 다음 내용 추가

zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20121212/opcache.so


Ⅵ. PHP5확장모듈 컴파일 및 설치

1. ImageMagick-6.8.7-3.tar.xz 설치

ImageMagick은 TIFF, JPEG, GIF, PNG, PDF 및 기타 포토 CD 등 89가지 이상의 이미지의 읽기, 쓰기 및 처리하는 데 사용할 수 있는 안정적인 도구 및 개발 키트 세트입니다

tar xvzf ImageMagick-6.8.7-3.tar.gz
cd ImageMagick-6.8.7-3
./configure --libdir=/usr/local/lib64
make
make install
cd ..

2. imagick-3.1.2.tgz 설치

yum -y install gtk2-devel* gtk+extra
tar xvzf imagick-3.1.2.tgz
cd imagick-3.1.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
vi /usr/local/php/etc/php.ini
에 아래 라인 추가
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20121212/imagick.so
cd ..

3. php
# echo "/usr/local/php/lib" >> /etc/ld.so.conf
# ldconfig

4. php-cgi 프로세스 시작
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf

올바른 구분을 시작하기 전에 다음 php-fpm.conf 를 테스트 할 수 있습니다.

/usr/local/php/sbin/php-fpm -t

/usr/local/php/sbin/php-fpm 실행

5. apache 에서 PHP5 지원

vi /usr/local/apache/conf/httpd.conf
#아래 LoadModule 추가
LoadModule php5_module modules/libphp5.so

#AddType 추가
    AddType application/x-httpd-php .php .php3 .inc
    AddType application/x-httpd-php-source .phps

아파치 재시작
/usr/local/apache/bin/apachectl restart
libconv 에러 발생시 /usr/local/apache/bin/apachectl 맨 위에 다음 라인 추가
export LD_PRELOAD=/usr/local/lib64/libiconv.so

6. php지원 여부 테스트

cd /usr/local/apache/htdocs
echo "<?php phpinfo(); ?>" > phpinfo.php

http://server-ip/phpinfo.php,정상적으로 출력되는 지 확인

Ⅶ. apache와 tomcat 통합

 1. mod_jk 생성

tomcat-connectors-1.2.37-src.tar.gz
tar xvzf  tomcat-connectors-1.2.37-src.tar.gz
cd tomcat-connectors-1.2.37-src/
cd native
./configure --with-apxs=/usr/local/apache/bin/apxs
make
cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/

2. 설정파일 복사
cd ../conf
cp httpd-jk.conf /usr/local/apache/conf/mod_jk.conf
cp workers.properties /usr/local/apache/conf/

a. mod_jk.conf 설정

vi /usr/local/apache/conf/mod_jk.conf

다음 내용 추가:

JkWorkersFile /usr/local/apache/conf/workers.properties
JkLogFile /usr/local/apache/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"

JkMount /servlet/* worker1
JkMount /*.jsp         worker1
JkMount /application/* worker1
JkMount /*.do          worker1
JkMount /*.class       worker1
JkMount /*.jar         worker1

########해석#############

1. JkMount 위치는 Tomcat이 해석을 담당, JkUnMount는 반대임
2.  JkMount /test/* worker1 의 의미는 test 디렉토리 아래는 Tomcat이 처리를 담당
3. jsp와servlet은 tomcat이 처리, 그 외 그림이나 정적 파일은 Apache가 처리
###################

b. vi /usr/local/apache/conf/workers.properties

다음 내용 추가:

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=192.168.1.185
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300

c. apache 설정파일 수정

vi /usr/local/apache/conf/httpd.conf

다음 내용 추가:

Include /usr/local/apache/conf/mod_jk.conf
# 위 mod_jk.conf 파일의 맨 위에 아래 라인이 있는 지 확인
#LoadModule jk_module modules/mod_jk.so

d. TOMCAT 설정 변경

cd /usr/local/apache-tomcat-8.5.20/conf
vi server.xml

<Host 를 찾음
(다음과 같음:  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">)

다음 줄에 다음 내용을 추가:
<Context path="" docBase="/usr/local/apache-tomcat-8.5.20/webapps"
 debug="0" reloadable="true" crossContext="true"/>

########dobase 경로는 /usr/local/apahce/htdocs 로 변경 가능#####

e. apache와 tomcat을 다시 시작

apache 재시작

/usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl start

tomcat 재시작

startup.sh

이 시점에서,tomcat과 apache 통합 완료!

성공여부 확인 :

/usr/local/apache/logs/mod_jk.log 확인
다음과 같은 라인이 나오면 성공!
[Sun Sep 22 23:21:18 2013][15053:3078219984] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized

테스트:

vi /usr/local/apache-tomcat-8.5.20/webapps/test.jsp

다음 내용 추가:

<html>
<h1>JSP test<hr>

<%out.println("Hello World!");%>

</html>

http://server-ip/test.jsp

출력결과: HELLO WORLD


우분투 ssh 접속이 오래 걸릴 때

리눅스/설치

우분투 터미널에서 ssh 접속을 하는 경우 오랫동안 응답이 없다가 패스워드를 물어보는 현상이 발생한다.

이는 ssh의 인증이 GSS API, 공개키(Public Key), 패스워드 순으로 이루어 지는데 GSS API 인증 과정에서 Kerberos DNS 질의가 발생을 하게 되고 이 DNS 질의에 대해 응답을 받지 못하는 경우 타임아웃이 발생할 때까지 대기를 하기 때문이다.

이 경우 별도 GSS API를 사용하지 않을 경우 이 GSS API 를 비활성화 해야 한다.

비활성화 하는 방법은

/etc/ssh/ssh_config 에서 GSSAPIAuthentication을 no 로 설정한다.


참고: About GSS API : http://en.wikipedia.org/wiki/Generic_Security_Services_Application_Program_Interface



CentOS 6 inittab 설정

리눅스/설치

CentOS 6.x 부터는 SysV init 스크립트를 Upstart 라는 새로운 스크립트 시스템으로 변경하였다고 함

Upstart 는 이벤트 방식의 스크립트 시스템으로 SysV init 보다 빠르다고 하는 데 


문제는 기존에 잘 사용하던 inittab 을 어떻게 옮기고 관리할 것인가 하는 것...


기존에 Fax Modem 용 getty 스크립트가 있었는 데 inittab 이 더 이상 동작 않음


CentOS 6.x 에서는 아래와 같이 처리


/etc/init  디렉토리 아래에

원하는 서비스명.conf 파일 생성

예를 들어 faxgetty.conf 라는 파일을 만들고

아래와 같이 스크립트를 작성


start on runlevel [2345]

stop on runlevel [S016]

respawn

exec /usr/sbin/faxgetty ttyS0


스크립트를 실행하는 방법은 2가지

1. reboot

2. /sbin/initctl


2번의 initctl 은 작업을 start, stop, reload 할 수 있음


위의 경우에는 먼저 기존 스크립트를 종료 한 후 시작

/sbin/initctl  stop faxgetty

/sbin/initctl  start faxgetty


ps -ef | grep fax

로 프로세스가 정상적으로 실행 되는 지 확인


SVN 무시할 파일/폴더 설정

리눅스/설치

Ignore file

To ignore all files with the ending .o use:

Ignore dir

If you want to ignore folder tmp

Ignore multiple files/dirs

If you want to ignore tmp,obj,bin dirs and all files with *.o
*.lib,*.la
extension. Save this file

and name it svnignore.txt, the following command will do the job !

Ignore multiple files/dirs via command line

This will bring up list of files or directories to ignore.

Find files that are not under version control

To find such files:


Ubuntu 12.04 콘솔 모드로 시작하기

리눅스/설치

Ubuntu 의 기본 runlevel 은 2로 설정되어 있다.

근데 Ubuntu 클라이언트 버전인데도 불구하고 콘솔 모드로 시작해서 서버처럼 사용하고 싶다면...


다음 작업을 수행하면 된다.

1. /etc/default/grub 파일을 열어서

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

라인을 

GRUB_CMDLINE_LINUX_DEFAULT="text"

바꾼다.

그리고 

GRUB_HIDDEN_TIMEOUT=0

라인 앞에 #을 넣어 코멘트 아웃한다.

저장하고 종료


2. 다음 명령으로 GRUB 설정을 저장한다.

sudo update-grub


리부팅하면 다음부터 명령어 라인으로 실행된다.


만약 계속 그래픽 모드로 동작한다면


sudo apt-get install lightdm


으로 이전 버전을 업데이트 해 본다.