사이드바 영역으로 건너뛰기

게시물에서 찾기분류 전체보기

5개의 게시물을 찾았습니다.

  1. 2011/12/08
    자바스크립트 (funtion(){})()
    단단이아빠
  2. 2011/02/17
    뒤로 가기 할 때 웹페이지 만료 에러메시지 안보기
    단단이아빠
  3. 2010/10/26
    php + instantclient rpm 설치
    단단이아빠
  4. 2006/07/23
    apache + php + mysql + mssql + qmail + phpmail(1)
    단단이아빠
  5. 2005/03/29
    php를 쉘스크립트로 이용할 때 인자 처리
    단단이아빠

쿼리에서 사용하기 위한 implode,array_walk

$arr = ['a','b','c'];

array_walk($arr, function(&$x) {$x = "'$x'";});

echo implode(',', $arr); // 'a','b','c'
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

heidisql ssh tunnel 연결시 Lost connection to MySQL server at 'reading initial communication packet', system error: 0 엘

heidisql 을 사용해서 원격 mysql 서버에 연결시

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

에러가 나올 때가 있다.

 

 

사용자 삽입 이미지

 

검색을 해도 왜 이런 문제가 나오는지 여러가지 이유와 해결방식을 제시하지만 맞는 방법을 못찾았다.

관리하는 3대의 서버중 1대는 연결되고 2대는 연결안되는 상황에서 차이점을 찾아보니 결국 방화벽차이...

[root@mtosedu ~]# vi /etc/sysconfig/iptables

해서

-A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT

입력한 후 저장

 


[root@mtosedu ~]# service iptables restart
iptables: Setting chains to policy ACCEPT: nat filter mangl[  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

 

연결된다.

 

다른 문제가 없으면 방화벽 확인
 

 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

mac 에서 php 에서 mysql connect error 날때

맥북에서 개발환경을 만드느라고 APM(Apache + Mysql + PHP) 세팅을 끝냈는데 mysql connect error가 난다. 터미널에서 접속해 보면 접속이 되는데...

 

구글링으로 찾아본 여러 정보중에서 해결된 정보이다.

 

출처) http://stackoverflow.com/questions/4219970/warning-mysql-connect-2002-no-such-file-or-directory-trying-to-connect-vi

 

/tmp/mysql.sock 가 있고  /var/mysql/mysql.sock 가 없을 때

cd /var 
mkdir mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock

/var/mysql/mysql.sock 가 있고 /tmp/mysql.sock 가 없을 때

cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock

 

 

[출처] mac php mysql connect error|작성자 웹사이더

 
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

자바스크립트 (funtion(){})()

자바스크립트에서 

 

(funtion(){

 

})();

을 사용하는 건 1번만 실행되고 메모리에서 사라지게 하고 싶을 때

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

뒤로 가기 할 때 웹페이지 만료 에러메시지 안보기

POST 로 변수를 Submit 할 때 자바스크립트로 뒤로가기를 시키거나 브라우저의 뒤로가기 버튼을 누르면 

 

 


사용자 삽입 이미지

 

와 같은 에러페이지를 만난다.

 

캐쉬를 비워줘야 해서..

 

 ini_set ( 'session.cache_limiter' , 'private' );  

session_start();
session_start();
 
와 같이 써주면 해결.
 
이건 항상 잊어먹는다. 적어놔야지...
 
위 내용은 post 받는 페이지에 적어준다.
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

php + instantclient rpm 설치

웹서버를 새로 하나 세팅하고 오라클 연동하려고 작업

 

기본 Cent-OS 5.2 버전으로 깔아주고

 

아파치,php는 기본설치되는 버전으로(예전에는 꼭 소스 컴파일해서 설치했는데 귀찮기도 하려니와 유지관리하기가 힘들어서 요새는 그냥 rpm 으로 깔고 yum 으로 업데이트 해주면서 산다.)

 

http://www.oracle.com/index.html

 

에서 Instant Client Downloads 찾아서 Version 11.2.0.2.0 

  Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications 
Download instantclient-basic-linux32-11.2.0.2.0.zip (57,278,802 bytes) (cksum - 2728428371)
Download oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm (56,566,427 bytes) (cksum - 380585012)

 

*Instant Client Package - SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client

Download instantclient-sdk-linux32-11.2.0.2.0.zip (638,200 bytes) (cksum - 1866436207)
Download oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm (608,070 bytes) (cksum - 958481474)
 

rpm으로 다운받고(다 좋은데 꼭 로그인해야 하는 건 뭐여... 서버에서 직접 처리못하고 꼭 다운 받고 난 다음에 ftp로 올려야 한다.)

 

]#rpm -ivh oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm

 

]#rpm -ivh oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm

 

으로 설치하면

 

/usr/lib/oracle/11.2/client/lib
/usr/lib/oracle/11.2/client
 
에 깔린다.
 
]# vi /etc/profile
export ORACLE_HOME=/usr/lib/oracle/11.2/client
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export ORACLE_SID=ORCL
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export TNS_ADMIN=/usr/lib/oracle/11.2/client
 
]#source /etc/profile
 
 
]#pecl install oci8
 
해서 
Please provide the path to the ORACLE_HOME directory. Use ‘instantclient,/path/to/instant/client/lib’ if you’re compiling with Oracle Instant Client : autodetect
나올 때 instantclient 엔터
 
별 문제가 없는 한 인스톨되고 문제가 있으면 대부분 관련 패키지가 없을 때다. 그럼 yum 으로 업데이트. 이번 경우에는 gcc 가 안깔려 있어서 에러가 났고 yum 으로 인스톨 해줘서 패스.
 
TNS_ADMIN=/usr/lib/oracle/11.2/client 
 
요렇게 했으니까 /usr/lib/oracle/11.2/client  밑에 tnsnames.ora 파일을 만들어서 내용 입력
 
]#vi /usr/lib/oracle/11.2/client/tnsname.ora
 
HEXPO =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 222.234.2.143)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = hexpo)
    )
  )
HEXPO =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 222.234.2.143)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = hexpo)
    )
  )
ORCL=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )
 
 
아파치 재실행시켜서 phpinfo 찍어봐서 오라클 제대로 나오면 끝...
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

apache + php + mysql + mssql + qmail + phpmail(1)

필요한 파일들은 /usr/local/src 에 모아놓고 작업한다.

구성이 복잡한 세팅의 경우에는 text 파일로 작업하고 #sh text 파일의 형태로 실행.

실행되는 서버의 경우(구성파일에 의해 구동 환경이 정해지는 경우) /usr/local 밑에 설치한다.

 

cent-os 4.3 으로 시스템을 구성하였고 꼭 필요한 경우가 아니면 yum 으로 rpm 인스톨해서 사용하였다.

 

세팅한 서버 종류

apache 1.3.33

mysql 4.1.11

curl 7.13.1

mhash 0.9.2

libmcrypt 2.5.7

clibpdf

swf

mm

freetype

jpeg

libungif

libpng

libtiff

t1lib

ming

gd

freetds

 

 

export LANG=ko_KR.eucKR

요새는 utf-8 형식으로 되어 있어서 언어 설정을 안해주면 화면이 온통 맛이 간다. perl의 경우에는 계속 에러메시지 봐야 하고.

일단 새로 리눅스를 세팅한 경우에는 언어설정해주는게. 참고로 이건 bash에서.

 

# vi /etc/sysconfig/i18n

LANG="ko_KR.eucKR"
SUPPORTED="ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

요렇게 적어주면 에러메시지가 뒹귁어로 나오는 건 안볼수 있다.

 

1. apache 설치(자세한 설정은 php를 설치한 후에 한다.)

  //rpm으로 깔려 있는 apache 가 있는지 확인 후 삭제한다.

  #rpm qa | grep apache

  #rpm e apache

 

  # tar xvfz apache_1.3. 33.tar.gz
  #vi configure-apache.txt

 

./configure

--prefix=/usr/local/apache

--enable-shared=max

--enable-module=rewrite

--enable-shared=rewrite

--enable-module=info

--enable-shared=info

--enable-module=so

 

(사실 아파치의 경우 그냥 깔아도 큰 문제 없는데 설정 안해주면 꼭 나중에 말썽이다.)

 

  # cd apache_1.3. 33

  #sh ../ configure-apache.txt
  # make
  # make install

 

2. cronlog 설치

 

http://cronolog.org/download/index.html

#./configure
#make
#make install

httpd.conf 수정
CustomLog "|/usr/local/sbin/cronolog --symlink=/var/log/httpd/access_log /var/log/httpd/%Y/%m/access_log.%Y%m%d" combined

 

3.  mysql 설치

 

  # tar xvfz mysql-4.1.11. tar.gz

  #vi configure-mysql.txt

./configure

--prefix=/usr/local/mysql

--localstatedir=/usr/local/mysql/data

--enable-local-infile

--enable-thread-safe-client

--with-extra-charsets=all

--with-zlib

--with-charset=euckr

--with-extra-charsets=complex

--without-readline

 

(mysql 이 4.1 대로 올라가면서 콘솔상에서 한글이 안써지는 문제가 있다.  charset 하고 readline 설정을 해줘야 웹상에서 보이는 한글과 콘솔상에서 보이는 한글이 맞춰진다.)

 

  # cd mysql-4.1.11
  # sh ../ configure- mysql.txt

  # make
  # make install-strip
  # /usr/local/mysql/bin/mysql_install_db

 

(mysql을 편하게 사용하기 위한 스크립트 작성)
  # vi /usr/local/mysql/share/mysql/mysql.server

 

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &

부분을

$bindir/mysqld_safe --user=root --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &

로 바꾼다.

 

(세팅 초기에는 위의 부분에 --log=로그파일명 을 덧붙여서 초기 세팅과정에서 에러나 오류가 있는지 확인하는 것이 좋다.)

 

# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# ln -s /etc/init.d/mysqld /etc/rc3.d/S90mysqld
# /etc/init.d/mysqld start 

 

- 동적 라이브러리링크

# vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql 추가
ldconfig

 

 

4. freetds 설치

 

mssql 을 사용하기 위해서 freetds 를 설치한다.

# tar xvfz feetds-0.63.tgz

# cd freetds-0.63/

# ./configure --prefix=/usr/local/freetds
# make
# make install

 

 

 

5. qmail 설치

 

(제발 패치 안할수는 없나.. 이건 정말 삽질이다.)

 

종류도 많은 qmail 패치들...

 

 

일단 필요한 패치는 qmail-1.03-mysql-0.7.2.patch

http://download.softagency.net/mysql/Downloads/Contrib/qmail-1.03-mysql-0.7.2.patch.gz

여기에서 구했다.

 

# tar xvfz qmail-1.03.tar.gz

# cd qmail-1.03

# patch -p1 < ../qmail-1.03-mysql-0.7.2.patch

# patch < ../qmail-1.03.errno.patch

 

패치후에 수정해줘야 하는 작업이 몇가지 있다.(mysql 의 인스톨 위치 때문에)

 

mysql.c (mysql.h 절대 위치) :

#include mysql/mysql.h

Makefile (수정내용) :

#include  /usr/local/mysql/include/mysql/mysql.h

 

# for Linux libc6
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 를
MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

qmail-getpw.c (수정내용) :

#include mysql/mysql.h 를
#include  /usr/local/mysql/include/mysql/mysql.h 

 

계정 생성

 

# mkdir -p /var/qmail


# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails

 

# make

# make setup check

# ./config-fast 메일서버도메인명

 


 

6.  ucspi-tcp 설치

 

# tar xvfz ucspi-tcp-0.88.tar.gz

# cd ucspi-tcp-0.88

# patch < ../ucspi-tcp-0.88-mysql.patch

# patch < ../ucspi-tcp-0.88.errno.patch

 

db.c 수정 (mysql.h 절대 위치)

#include
#include

conf-ld 수정

gcc -s  -I/usr/include/mysql -L/usr/local/lib/mysql -lmysqlclient 를
gcc -s -I/usr/local/mysql/include/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient

# make

# make setup check

 

 

7. daemontools 설치

 

# tar xvfz daemontools-0.76.tar.gz

# cd admin/

 

# patch < ../daemontools-0.76.errno.patch

 

나오는 파일 패스입력하는 프롬프트에

File to patch: daemontools-0.76/src/error.h 입력

 

# cd daemontools-0.76

# package/install

 

# vi /etc/inittab

맨 마지막 줄

SV:123456:respawn:/command/svscanboot 삭제

# rm -rf /service/

# rm -rf /command/

# cd command/

# mv * /usr/local/bin/

# ps -ef | grep svscan

# kill -9 "관련프로세스종료"

 

8. checkpassword 설치

 

# tar xvfz checkpassword-0.90.tar.gz

# cd checkpassword-0.90

# patch < ../checkpassword-0.90-mysql-0.6.6.patch

 

패치는 이걸로.. 버전이 높다고 해서 꼭 좋은 것은 아닌가봐.. 아님 내가 모르는 뭔가가 있던가..

 

mysql.c (mysql.h 절대 위치) :

#include
#include

Makefile (수정내용) :

MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 를
MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

(# Don't edit Makefile! Use conf-* for configuration.
라고 되어 있는데도 이걸 수정하다니... 수정안하면 더 귀찮아지니까..

결국 제작자의 의지라는 건 뭐 수용할 수 있으면 수용하는 정도 ㅎㅎ)

 

# patch < ../checkpassword-0.90.errno.patch

 

# make

# make setup check

 

 

9. qmail 설정

 

# mkdir -p /var/qmail/supervise/qmail-send/log

# mkdir -p /var/qmail/supervise/qmail-smtp/log

# mkdir -p /var/qmail/supervise/qmail-pop3/log
# chmod +t /var/qmail/supervise/qmail-send

# chmod +t /var/qmail/supervise/qmail-smtp
# chmod +t /var/qmail/supervise/qmail-pop3

# vi /var/qmail/supervise/qmail-send/run

 

#!/bin/sh
exec /var/qmail/rc

 

# vi /var/qmail/supervise/qmail-send/log/run

 

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/send

# vi /var/qmail/supervise/qmail-smtp/run

 

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 5000000
/usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

 

# vi /var/qmail/supervise/qmail-smtp/log/run

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp

# vi /var/qmail/supervise/qmail-pop3/run

 

#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000
/usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup
메일서버도메인명 /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

 

# vi /var/qmail/supervise/qmail-pop3/log/run

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3

 

# chmod 755 /var/qmail/supervise/qmail-send/run

# chmod 755 /var/qmail/supervise/qmail-send/log/run

# chmod 755 /var/qmail/supervise/qmail-smtp/run

# chmod 755 /var/qmail/supervise/qmail-smtp/log/run

# chmod 755 /var/qmail/supervise/qmail-pop3/run

# chmod 755 /var/qmail/supervise/qmail-pop3/log/run

# cd ~alias
# echo 사용자아이디 > .qmail-mailer-daemon
# echo 사용자아이디 > .qmail-postmaster
# echo 사용자아이디 > .qmail-root
# cp /var/qmail/boot/proc /var/qmail/rc
# vi /var/qmail/rc


 

* 7라인을 다음과 같이 수정


 

qmail-start '|preline procmail ./Maildir/' splogger qmail

 

# mkdir -p /var/log/qmail/send
# mkdir -p /var/log/qmail/smtp
# mkdir -p /var/log/qmail/pop3
# chown qmaill /var/log/qmail /var/log/qmail/send /var/log/qmail/smtp /var/log/qmail/pop3

# vi /etc/init.d/qmail

 

 

#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: sendmail을 대체하는 빠르며, 안정적이고, 유연한 MTA
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat << HELP
stop -- stops mail service (smtp connections refused, nothing goes out)
start -- starts mail service (smtp connection accepted, mail can go out)
pause -- temporarily stops mail service (connections accepted, nothing leaves)
cont -- continues paused mail service
stat -- displays status of mail service
cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0

 

# chmod 755 /etc/init.d/qmail

 

# vi /etc/tcp.smtp

 

127.0.0.1:allow,RELAYCLIENT=""
릴레이를 허용할 아이피주소:allow,RELAYCLIENT=""
:allow

 

# /etc/init.d/qmail cdb

# /etc/init.d/sendmail stop
# mv /etc/rc3.d/S88sendmail /etc/rc3.d/K88sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.old
# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

 

# vi /var/qmail/control/sqlserver


 

mysql_use yes
server localhost
login phpmail
password phpmail
db phpmail
table mailuser
port 3306
check_host yes
quota yes
ignore_validity yes
swap_check_order yes

 

# /usr/local/mysql/bin/mysqladmin create phpmail
# /usr/local/mysql/bin/mysql -u root -p mysql

 

mysql> insert into user (Host,User,Password) values ('localhost', 'phpmail', password('phpmail'));

 

mysql> insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y');

 

mysql> flush privileges;

 

mysql> exit

 

 

# /usr/local/mysql/bin/mysql -u phpmail -p phpmail

 

mysql> create table mailuser (
mbox_host varchar(32) binary null,
id varchar(32) binary not null,
passwd varchar(32) binary not null,
crypt varchar(32) binary not null,
uid int(5) unsigned not null default '99',
gid int(5) unsigned not null default '99',
shell varchar(16) not null default '/bin/false',
home varchar(64) binary not null,
quota_size int(10) null,
start_date date not null default '0000-00-00',
expire_date date not null default '0000-00-00',
active enum('Y','N') not null default 'Y'
);

mysql> insert into mailuser (mbox_host, id, passwd, crypt, uid, gid, shell, home) values ('메일서버도메인명', 'phpmail', 'phpmail', encrypt('phpmail'), 99, 99, '/bin/false', '/home/phpmail/메일서버도메인명/phpmail');

 

mysql> exit

 

# mkdir -p /home/phpmail/메일서버도메인명/phpmail

# /var/qmail/bin/maildirmake /home/phpmail/메일서버도메인명/phpmail/Maildir

# echo ./Maildir/ > /home/phpmail/메일서버도메인명/phpmail/.qmail
# chown -R 99:99 /home/phpmail
# /etc/init.d/qmail start
# pstree

|-svscan-+-supervise---qmail-send-+-qmail-clean
| | |-qmail-lspawn
| | |-qmail-rspawn
| | `-splogger
| |-3*[supervise---multilog]
| `-2*[supervise---tcpserver]

 

이렇게 나와야 정상이다.

 

# /var/qmail/bin/qmail-getpw phpmail 메일서버도메인명

* 다음과 같은 출력결과가 나와야 정상
phpmail9999/phpmail/메일서버도메인명/phpmail0

 

 

10. imap 설치

# ln -s /usr/local/mysql/lib/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a

(귀찮아서...)

 

다시 imap4.7 로 복귀...

 

Linux 7.1이상에서는 ucspi-tcp, imap 설치시에 time.h가 문제가 됩니다.
따라서, 아래와 같이 수정하신다음에 다른 패키지를 컴파일하거나 설치하실때는
원래대로 되돌려 놓으면 됩니다.

# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h

 

 

# tar xvfz imap-2001a_patched.tar.gz

# cd imap-2001a

# make slx PASSWDTYPE=std SSLTYPE=none

# cd ..

# cp -R imap-2001a /usr/local/imap

# cd /usr/local/imap/

# ln -s c-client/ include

# ln -s c-client/ lib

# cd c-client/

# ln -s c-client.a libc-client.a

 

# cd ..
# cp imapd/imapd /usr/sbin/in.imapd

 

# vi /etc/xinetd.d/imap

service imap
{
disable = no
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.imapd
log_on_failure += USERID
}

 

# /etc/init.d/xinetd restart

 

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost.localdomain IMAP4rev1 v12.264 server ready
a00 login phpmail@메일서버도메인명 비밀번호
a00 OK LOGIN completed
a01 list mbox *
* LIST (NoInferiors) NIL INBOX
a01 OK LIST completed
a02 logout

11. libiconv 설치

 

http://www.gnu.org/software/libiconv/

 

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz

 

# tar xvfz libiconv-1.9.2.tar.gz

# cd libiconv-1.9.2

# ./configure --enable-static --enable-shared

# make

# make install

 

12. freetype2 설치

 

# tar xvfz freetype-2.2.1.tar.gz

# cd freetype-2.2.1

# ./configure --enable-shared --enable-static

# make

# make install

 

 

 

 

13. PHP 설치

 

# tar xvfz php-4.4.2.tar.gz

# cd php-4.4.2

# vi ../conf-php.txt

 

CFLAGS="-L/usr/local/mysql/lib/mysql -lmysqlclient" ./configure
--with-apxs=/usr/local/apache/bin/apxs
--with-kerberos
--with-mysql=/usr/local/mysql
--with-imap=/usr/local/imap
--with-iconv
--with-gd
--with-jpeg-dir
--with-zlib
--with-png-dir
--with-gif
--with-tiff
--with-freetype-dir=/usr
--with-dbm
--with-gdbm
--with-ldap
--with-xml
--with-dom
--with-language=korean
--with-charset=euc_kr
--with-ttf
--with-mssql=/usr/local/freetds
--enable-sockets
--enable-pcntl
--enable-mbstring
--enable-mbregex
--enable-mssql
--enable-ftp
--enable-sockets
--enable-track-vars
--enable-module=so
--enable-gd-native-ttf
--enable-ftp
--enable-sockets
--disable-debug
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--enable-track-vars
--enable-freetype-4bit-antialias-hack
--enable-calendar
--enable-sigchild
--enable-magic-quotes
--enable-trans-sid
--enable-inline-optimization
--enable-bcmath
--disable-cgi
--with-config-file-path=/usr/local/apache/conf
--enable-versioning
~

 

# sh ../conf-php.txt

 

흠.. 에러가 나네요...

jpeg 를 못찾는다는 에러가

 

지금 서버를 cent-os 4.3 으로 깔았는데 이게 좋은 이유중의 하나가 yum 이라는 유틸을 이용해서 업데이트가 간편하다는 점...

 

그래서

 

#yum list

#yum -y install libjpeg-devel.i386

 

그리고는 다시

#sh ../conf-php.txt

 

흠.. 다시 에러가

이번엔 png를 못찾는다고

 

그래서

#yum -y install libpng-devel.i386

 

그리고는 다시

#sh ../conf-php.txt

 

 

 

이번엔 에러가 나지 않고 구성이 끝났네요..

 

짜증이 물밀듯이 밀려온다. CFLAGS="-L/usr/local/mysql/lib/mysql -lmysqlclient" 를 선언해 주지 않으면 에러가 나는구만....

 

# make

# make install

 

# cp php.ini-recommended /usr/local/apache/conf/php.ini
# vi /usr/local/apache/conf/php.ini

* 1088라인을 다음과 같이 수정
register_globals = On
* 1093라인을 다음과 같이 수정
magic_quotes_gpc = On

 

mssql.datetimeconvert = Off

upload_max_filesize = 20M

 

 

 

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

 

AddType application/x-httpd-php .html .htm .php .ph .inc .sc
추가

 

# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# /etc/init.d/httpd start

 

14. hcode 설치

 

# tar xvfz hcode2.1-mailpatch3.tar.gz

# cd hcode2.1-mailpatch3

# make

# cp hcode /usr/bin

 

 

15. procmail 설정

 

# vi /home/phpmail/메일서버도메인/phpmail/.qmail

|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/메일서버도메인/phpmail/.procmailrc

 

# vi /home/phpmail/메일서버도메인/phpmail/.procmailrc

PATH=/bin:/usr/bin:/usr/bin
DEFAULT=/home/phpmail/메일서버도메인/phpmail/Maildir/
MAILDIR=/home/phpmail/메일서버도메인/phpmail/Maildir/
LOGFILE=/var/log/qmail/procmail
VERBOSE=no
SHELL=/bin/sh
###### 제목 디코딩 ######
:0 Efhw
*^(Subject|From|Cc):.*=?EUC-KR?(B|Q)?
|formail -c | hcode -dk -m
:0 Efhw
*^(Subject|From|Cc):.*=?ks_c_5601-1987?(B|Q)?
|formail -c | hcode -dk -m
#########################
:0
* ^Subject: .*(advert|광고|홍보|廣告|몰카)
"/phpmail/메일서버도메인/phpmail/Trash/cur"

 

 

# /var/qmail/bin/maildirmake /home/phpmail/메일서버도메인/phpmail/Trash

 

16. quota 설정

 

# cp qmail-quota /var/qmail/bin

# chmod 755 /var/qmail/bin/qmail-quota

 

# vi /home/phpmail/메일서버도메인/phpmail/.qmail

|/var/qmail/bin/qmail-quota
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/메일서버도메인/phpmail/.procmailrc

 

# echo 1024 > /home/phpmail/메일서버도메인/phpmail/.quota
# touch /var/log/qmail/procmail
# chown -R nobody:nobody /var/log/qmail/procmail

 

 

17. autorespond 설정

 

# tar xvfz autorespond-2.0.3.tar.tar

# cd autorespond-2.0.3

# make

# make install

 

# vi /home/phpmail/메일서버도메인/phpmail/.qmail

|/var/qmail/bin/qmail-quota
|/var/qmail/bin/qmail-autorespond 86400 5 /home/phpmail/메일도메인/phpmail/.autorespond /var/log/qmail/vaca 0 $
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/메일서버도메인/phpmail/.procmailrc

 

# mkdir -p /var/log/qmail/vaca
# chown -R nobody:nobody /var/log/qmail/vaca
# echo "test" > /phpmail/메일서버도메인/phpmail/.autorespond

 

18. phpmail 1.0.x 설정

 

# tar xvfz phpMail-1.0.1.tar.gz

# cd phpMail-1.0.1

 

테스트 중에 생성한 테이블 삭제

 

# /usr/local/mysql/bin/mysql -u phpmail -p phpmail

mysql> drop table mailuser;

mysql> exit

 

테이블 작성

# /usr/local/mysql/bin/mysql -u phpmail -p phpmail < phpmail-linux.sql

 

maildomn테이블에 도메인정보를 입력한다
mysql> insert into maildomn values ('메일서버도메인명', '회사명', '회사로고','관리자아이디', '관리자메일주소', '관리자전화번호', '관리자핸드폰번호', '도메인디스크위치', '도메인당 아이디갯수', '도메인기본제한용량', '등록일자', '사용여부');
sample> insert into maildomn values ('nsets.org', 'phpmail','', 'popori', 'popori@kldp.org', '02-2103-xxxx', '017-339-xxxx', '/phpmail/nsets.org', '20', 10240, '2003-04-28', 'Y');

 

첨부파일이 업로드 될 디렉토리 작성

# mkdir -p /home/phpmail/files

# chown -R nobody:nobody /home/phpmail/

 

 

 


진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

php를 쉘스크립트로 이용할 때 인자 처리

#!/usr/local/bin/php
$argc    //인자의 갯수

$argv    //인자 배열 0:파일 이름

 

?>

 

예:   shell>./test.php aaa bbbb

$argv[0]   test.php

$argv[1]   aaa

$argv[2]   bbb

 

php.ini에서 register_argc_argv = On로 설정되어 있어야

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크