/etc/vimrc 파일에 아래 내용추가시 모든 계정에 컬러가 적용됨
syntax on
colorscheme desert
아래는 어디에 쓰는 경우인지 모르겠음...
~/.profile에
export TERMINFO=/usr/lib/terminfo
export TERM=xterm
아래는 어디에 쓰는 경우인지 모르겠음...
~/.profile에
export TERMINFO=/usr/lib/terminfo
export TERM=xterm
<a href="/down.php?>">[리스트 다운로드]</a>
===============down.php========================
<?
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=Excel.xls");
header("Content-Description: PHP4 Generated Data");
$sql = "쿼리문입력'";
$stmt = mysql_query($sql, $connect);
$num = mysql_num_rows($stmt);
?>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<table border="1" cellpadding="1" cellspacing="0">
<tr>
<td><b>NO</b></td>
<td><b>제목</b></td>
<td><b>작성자</b></td>
<td><b>날짜</b></td>
<td><b>조회수</b></td>
</tr>
<?
for($i = 0; $i < $num; $i++)
{
$res = mysql_fetch_array($stmt);
$j++;
echo "<tr><td>$j</td><td>$res[subject]</td><td>$res[name]</td><td>$res[date]</td><td>$res[hit]</td></tr>";
}
flush();
usleep(1);
?>
</table>
제목 : 64bit APM설치 DSO방식 linux APM install 기술문서
주식회사웹호스트 http://www.webhost.co.kr
본 문서는 Linux CentOS 5.2 Final 에 최적화되었습니다.
본 문서는 여러번의 테스트를 거쳐서 완성한 웹호스트에서 제공하는 문서입니다.
1. 리눅스 패키지 필수설치문서
- 리눅스시스템이 64bit 인지 먼저확인방법
uname -a
이 명령에서
Linux localhost.localdomain 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 11:57:43 EST 2008 x86_64 x86_64 x86_64 GNU/Linux
이런형식으로 x86_64 가 나오면 시스템은 64bit 환경이다.
- 필수 rpm설치 (for 64bit 를 위하여)
yum -y install freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel openssl flex gcc gcc-c++
위 명령은 root에서 수행할것. 기존에 있다면 알아서 걸러줌
- yum install 이 안됩니다. 왜그런가요?
vi /etc/resolv.conf 확인할 것
nameserver 168.126.63.1
로 수정하거나, 입력해서 네임서버질의가 정상적으로 되는지 확인할것
2. mysql 설치하기
우선 APM관련 rpm은 모두 삭제하라
rpm -e dovecot
rpm -e mysql
rpm -e php-common
rpm -e php-ldap
rpm -e php-cli
rpm -e php
rpm -e php-cli
rpm -e php-common
rpm -e httpd-manual
rpm -e system-config-httpd
rpm -e httpd
rpm -e mod_ssl
rpm -e mod_python
rpm -e webalizer
rpm -e mod_ssl
rpm -e httpd
rpm -e mod_perl
rpm -e httpd
vi install.sh <--아래내용입력
중요사항) 줄의 끝에 일일이 역슬래시문자를 반드시 붙이셔야 합니다.
제로보드게시물에 역슬래시를 표기하지 못하므로 보이지 않습니다.
./configure --prefix=/usr/local/mysql \
--localstatedir=/home/MySQL/DATA \
--sysconfdir=/etc --disable-shared \
--with-mysqld-user=mysql \
--with-charset=euckr \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--without-docs --without-bench \
--without-isam \
--with-extra-charsets=all \
--with-innodb \
--without-debug
[참고사항] utf8 경우, --with-charset=utf8 \
mysql 4.1.x 대 설치시는 --with-charset=euckr \
저장하고 빠진후
chmod 700 install.sh
./install.sh
make && make install
========================================
참고) 에러유형 libmysqlclient.so.15 생성안될때 (에러날때만 참고할것)
- ls libmysql/.libs 해서 libmysqlclient.so.15 있는지 확인 (make까지만 해본후 리스트확인)
- 설치후 mysql 입력시 위 so.15 에러날때 어떻게 해야하나?
* 아래와 같이 --disable-shared옵션을 제거한 후에 설치한다.
./configure --prefix=/usr/local/mysql \
--localstatedir=/home/MySQL/DATA \
--sysconfdir=/etc \
--with-mysqld-user=mysql \
--with-charset=euc_kr
/etc/ld.so.conf 에 내용추가
/usr/lib/mysql <--추가
ldconfig
=========================================
make && make install
mkdir -p /home/MySQL/DATA
/usr/local/mysql/bin/mysql_install_db
useradd -M -o -r -d /home/MySQL/DATA -s /sbin/nologin -c "MySQL Server" -u 27 mysql >/dev/null 2>&1
install -m 644 ./include/my_config.h /usr/local/mysql/include/mysql
mkdir -p /var/run/mysqld
chmod 0755 /var/run/mysqld
chown mysql:mysql /var/run/mysqld
rm -f /usr/local/mysql/share/mysql/mysql-*.spec
rm -f /usr/local/mysql/share/mysql/mysql-log-ratate
strip /usr/local/mysql/libexec/mysqld
ldd /usr/local/mysql/libexec/mysqld
chown -R mysql.mysql /home/MySQL/DATA
cp ./support-files/my-huge.cnf /etc/my.cnf
cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --level 3 mysqld on
chkconfig --list (체크하세요. 부팅시 자동으로 올라오게 함)
/etc/profile 수정(패스설정)
-------
# /etc/profile
# mysql config
PATH="$PATH:/usr/local/mysql/bin"
---------
내용삽입
path는 로그아웃한 후 다시 로그인하면 반영됨.
/etc/rc.d/init.d/mysqld start
끝
3. 중요 패키지설치
(1) zlib 소스설치하기
http://www.zlib.net/
wget http://www.zlib.net/zlib-1.2.3.tar.gz
cd zlib-1.2.3
기존 rpm 그대로 둘것 (삭제하면 안됨)
./configure -s --prefix=/usr/local/zlib-1.2.3
make libdir=/usr/lib64
make test
make libdir=/usr/lib64 install
vi /etc/ld.so.conf
---
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/local/lib
---
내용수정
ldconfig
==================================================
error) /usr/local/lib/libz.a 에러
mv /usr/local/lib/libz.a /usr/local/lib/_libz.a 로 rename 후
make clean / config-make-로 다시 진행
==================================================
(2) libpng 설치
png 포맷을 다루기 위한 라이브러리입니다.
http://ftp.superuser.co.kr/pub/etc/libpng-1.2.10.tar.bz2
bzip2 -d libpng-1.2.10.tar.bz2
tar xvfp libpng-1.2.10.tar
[root@localhost local]# cd libpng-1.2.10
기존 rpm들은 그대로 둘것 (삭제하면 안됨)
[root@localhost libpng-1.2.5]# cp scripts/makefile.linux makefile
[root@localhost libpng-1.2.5]# make test && make install
[root@localhost libpng-1.2.5]# cd ..
(3) freetype 2 설치
글짜를 그릴 때 쓰는 라이브러리 입니다.
wget http://ftp.superuser.co.kr/pub/etc/freetype-2.2.1.tar.bz2
bzip2 -d freetype-2.2.1.tar.bz2
tar xvfp freetype-2.2.1.tar
[root@localhost local]# cd freetype-2.2.1
./configure --prefix=/usr/local/freetype-2.2.1 && make && make install
------------------------------
에러가 남 : 참고용
error) ft2build.h' hasn't been included yet!
vi /usr/include/freetype2/freetype/freetype.h
상단
#error "`ft2build.h' hasn't been included yet!"
#error "Please always use macros to include FreeType header files."
#error "Example:"
#error " #include <ft2build.h>"
#error " #include FT_FREETYPE_H"
이 줄 삭제처리후에 다시 수행
-------------------------------
(4) libjpeg 설치
jpg 포맷을 다루는 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz
[root@localhost local]# tar xvfz jpegsrc.v6b.tar.gz
[root@localhost local]# cd jpeg-6b
rpm -qa|grep libjpeg
[root@localhost jpeg-6b]# ./configure --enable-shared --enable-static --prefix=/usr/local/jpeg-6b
[root@localhost jpeg-6b]# make && make test
[root@localhost jpeg-6b]# make install <-- 에러발생할 것임
mkdir -p /usr/local/jpeg-6b/bin
mkdir -p /usr/local/jpeg-6b/include
mkdir -p /usr/local/jpeg-6b/lib
mkdir -p /usr/local/jpeg-6b/man/man1
등등... 없다는 폴더는 만들어줄것
[root@localhost jpeg-6b]# make install
[root@localhost jpeg-6b]# cd ..
위 설치법에서 특별한 것은 중간에 /usr/local/man/man1이라는 디렉토리를 생성합니다. 이유는 make install 하면 /usr/local/man/man1 디렉토리가 없다고 멘 페이지가 설치가 되지 않는다는 에러가 납니다.
(5) gd 설치
그래픽 라이브러리 입니다.
wget http://ftp.superuser.co.kr/pub/etc/gd-2.0.33.tar.gz
[root@localhost local]# tar xvzfp gd-2.0.33.tar.gz
[root@localhost local]# cd gd-2.0.33
[root@localhost gd-2.0.33]# ./configure --prefix=/usr/local/gd-2.0.33 --with-jpeg=/usr/local/jpeg-6b/ --with-freetype=/usr/local/freetype-2.2.1/
[root@localhost gd-2.0.33]# make && make install
4. 아파치의 설치
wget http://ftp.kaist.ac.kr/Apache/httpd/apache_1.3.41.tar.gz
64bit 에서는 -fPIC 옵션을 반드시 줘야 shared object 가 64bit로 된다.
검사법 : file /usr/local/apache/libexec/mod_env.so - 64bit x86-64표시되는지 확인할것
tar xvfzp apache_1.3.41.tar.gz
cd apache_1.3.41
export CFLAGS="${CFLAGS} -fPIC -DHARD_SERVER_LIMIT=1024 -DDEFAULT_SERVER_LIMIT=1024"
./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max
make && make install
아파치의 설치스크립트 복사완료
cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
참고사항) 모듈추가하기
기본으로 설치되는 모듈들
-rw-r--r-- 1 root root 7587 Jul 21 08:56 httpd.exp
-rwxr-xr-x 1 root root 5543 Jul 21 08:56 libhttpd.ep
-rwxr-xr-x 1 root root 357628 Jul 21 08:56 libhttpd.so
-rwxr-xr-x 1 root root 9814 Jul 21 08:56 mod_access.so
-rwxr-xr-x 1 root root 8164 Jul 21 08:56 mod_actions.so
-rwxr-xr-x 1 root root 10776 Jul 21 08:56 mod_alias.so
-rwxr-xr-x 1 root root 6099 Jul 21 08:56 mod_asis.so
-rwxr-xr-x 1 root root 11160 Jul 21 08:56 mod_auth.so
-rwxr-xr-x 1 root root 28787 Jul 21 08:56 mod_autoindex.so
-rwxr-xr-x 1 root root 14864 Jul 21 08:56 mod_cgi.so
-rwxr-xr-x 1 root root 7401 Jul 21 08:56 mod_dir.so
-rwxr-xr-x 1 root root 7212 Jul 21 08:56 mod_env.so
-rwxr-xr-x 1 root root 16484 Jul 21 08:56 mod_imap.so
-rwxr-xr-x 1 root root 36685 Jul 21 08:56 mod_include.so
-rwxr-xr-x 1 root root 16988 Jul 21 08:56 mod_log_config.so
-rwxr-xr-x 1 root root 15126 Jul 21 08:56 mod_mime.so
-rwxr-xr-x 1 root root 28782 Jul 21 08:56 mod_negotiation.so
-rwxr-xr-x 1 root root 9746 Jul 21 08:56 mod_setenvif.so
-rwxr-xr-x 1 root root 17913 Jul 21 08:56 mod_status.so
-rwxr-xr-x 1 root root 8426 Jul 21 08:56 mod_userdir.so
총 20개
추가해줘야 하는것들
1. libphp4.so : php4
2. mod_bandwidth.c
3. mod_gzip.c
4. mod_headers.c
5. mod_rewrite.c
6. mod_throttle.c
7. mod_url.c
이상 7개
설치하기
1. libphp4.so : 이 것은 php4가 설치되면 아래에서 자동설치됨
2. mod_bandwidth.c를 구해서 설치한다. (웹호스트 자료실에 있습니다)
3. mod_gzip.c (웹호스트자료실에 있습니다)
4. mod_headers.c (웹호스트 자료실에 있습니다)
5. mod_rewrite.c : src/modules/standard/ 폴더에 있습니다.(아파치소스폴더)
6. mod_throttle.c : 웹호스트자료실에 있습니다
7. mod_url.c : 웹호스트자료실에 있습니다.
------------------------------------------------------
- 아파치소스밑에 모듈들이 있다. 확장자 *.c 참조할것
- 2개는 별도로 구할것 mod_throttle.c 와 mod_bandwidth.c 는 yahoo.com에서 구할수 있다.
- 모듈 추가하는 법 (DSO방식에서)
/usr/local/apache/bin/apxs -i -a -c ./mod_bandwidth.c
참고) apache DSO vs static 방식의 차이점을 이해할것 - 되도록 DSO로 설치권장~
--------------------------------------------------------
5. php4 의 설치 (php4 설치방식 동일합니다)
php 컴파일을위한 모듈경로 변경 (64bit용)
cd /usr/lib
mv libjpeg.so libjpeg.so__
ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
mv libexpat.so libexpat.so__
ln -s /usr/lib64/libexpat.so /usr/lib/libexpat.so
mv /usr/local/lib/libz.a /usr/local/lib/libz.a__
ln /usr/lib64/libz.a /usr/local/lib/libz.a
mv /usr/lib/libssl.a /usr/lib/libssl.a__
ln /usr/lib64/libssl.a /usr/lib/libssl.a
wget http://ftp.superuser.co.kr/pub/php/php-4.4.4.tar.gz
tar xvzfp php-4.4.4.tar.gz
cd php-4.4.4
첫번째방법은 gd까지 모두 포함해서 설치하는 것이다.
관련 패키지를 아래 apm문서를 보고 모두 설치하라. gd, zlib, jpeg등등...
주의 : zlib-1.2.3 일때~
install.sh 라는 파일을 하나 만든다.
vi install.sh
./configure --prefix=/usr/local/php \
--libdir=/usr/lib64 \
--with-apxs=/usr/local/apache/bin/apxs \
--with-exec-dir=/usr/local/apache/bin \
--with-config-file-path=/usr/local/php/lib \
--with-mysql=/usr/local/mysql \
--with-zlib \
--with-gd \
--with-gd-dir=/usr/local/gd-2.0.33 \
--with-jpeg-dir=/usr/local/jpeg-6b \
--with-png \
--with-freetype-dir=/usr/local/freetype-2.2.1 \
--with-openssl \
--with-mod_charset \
--with-language=korean \
--with-charset=euc_kr \
--with-gdbm \
--with-ldap \
--with-xml \
--with-regex=php \
--with-iconv \
--with-gettext \
--enable-module=so \
--enable-memory-limit \
--enable-track-vars \
--enable-ftp \
--enable-sockets \
--enable-trans-sid \
--enable-magic-quotes \
--enable-sysvsem \
--enable-sysvshm \
--enable-mailparse \
--enable-sigchild \
--enable-calender \
--enable-inline-optimization \
--disable-debug \
--enable-mbstring
저장하고 빠진후
chmod 700 install.sh
./install.sh
utf8로 설치시 --with-charset=utf8 \ 수정할것
두번째는 이 중 간략하게만 설치하는 방법이다.
make && make install
cp php.ini-dist /usr/local/apache/conf/php.ini
[ zend의 설치 ]
zend.com 에서 64bit 용 tar.gz을 다운로드한다.
- 상단 download 클릭
- 가입하고 다운할것
tar xvzfp ZeodOptimizer-3.3.2....tar.gz
cd ZendOptimizer-3.3.2....
./install.sh - 진행에 따라 php.ini 를 복사한 /usr/local/apache/conf 입력해줄것
나머진 Next 엔터로 진행
이제
chkconfig --level 3 httpd on
하면 에러가 발생한다. 이것을 해결하기 위해서
vi /etc/rc.d/init.d/httpd
제일 하단에 아래 3줄을 삽입하고 저장하자.
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 90 90
# description: A very fast and reliable WebServer engine.
다시
chkconfig --level 3 httpd on
OK
이상 64bit APM 설치문서 끝.
작성 : (주)웹호스트 http://www.webhost.co.kr
작성 : 2009-02-09
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_srvr.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
이런 오류가 발생할 경우.. 64bit 에서 configure 에 추가해야 할 사항이 있다.
위의 경우 64bit OS 에서 mod-ssl 을 지원 하기 위해 compile 을 할때 나타나며
해결 방법은 다음과 같다.
./config -fPIC && make && make install
www.openssl.or.kr 에서는 -fPIC 옵션에 대해 다음과 같이 설명한다.
./config -fPIC로 해야지만, DSO판 작성시에 필요한 PIC(Postion Independent Code) 옵션을 지정해 configure 한다.
아래의 예제 소스를 응용하시면 제작이 가능합니다.
레이어를 보였다 안보였다 하는 방법 입니다.
▶ 소스
아래의 --------- 사이의 파란 글씨의 내용이 소스입니다..
------------------------------------------------------------
<style type="text/css">
<!--
A:link {font-family: 굴림체; font-size:9pt; text-decoration: none;}
A:visited {font-family: 굴림체; font-size:9pt; text-decoration: none;}
A:hover {font-family: 굴림체; font-size:9pt;text-decoration:overline underline;}
-->
</style>
<script language="JavaScript">
<!--
function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
}
//-->
</script>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr><td height="25">
<A href="문서1의 주소" onmouseover="MM_showHideLayers('menu1','','show','menu2','','hide')">메뉴1</A>
<A href="문서5의 주소" onmouseover="MM_showHideLayers('menu1','','hide','menu2','','show')">메뉴2</A>
</td></tr>
</table>
<div id="menu1" style="position:
<A href="문서1의 주소">문서1</a>
<A href="문서2의 주소">문서2</a>
<A href="문서3의 주소">문서3</a>
<A href="문서4의 주소">문서4</a>
</div>
<div id="menu2" style="position:
<A href="문서5의 주소">문서5</a>
<A href="문서6의 주소">문서6</a>
</div>
------------------------------------------------------------
▶ 소스 설명
1.
<style ~~> 부터 </style> 태그까지는 링크된 글씨폰트, 글씨크기, 밑줄, 윗줄 등에 대한 스타일 지정입니다.
2.
<table ~~> 부터 </table> 태그까지는 메뉴로 사용하는 레이어와 테이블을 이용한 부메뉴 부르기입니다.
참고) 레이어?
HTML 문서에서 레이어(Layer)란 화면 어디든 사용자가 나타나는 위치를 지정할 수 있는 문단을 말합니다. 레이어는 화면에서 안보이게 숨기거나 나타낼 수 있으며 크기도 지정할 수 있습니다.
3.
<script ~~> 부터 </script> 태그까지는 상위 메뉴를 눌렀을 때 상위 메뉴의 아래에 가로로 부메뉴 나타나게 하는 자바스크립트입니다.
4.
<A href="문서1" onmouseover="MM_showHideLayers('menu1','','show','menu2','','hide')">메뉴1</A>
주메뉴의 부메뉴를 부르는 명령입니다.
menu1이라는 부메뉴(<div> ~ </div> 태그로 만든 레이어의 내용들)를 보여주고(show) id가 "menu2"인 부메뉴 레이어는
감추라는(hide) 명령입니다.
주메뉴에 마우스를 올렸을 때 부메뉴로 나타내고 싶은 레이어를 MM_showHideLayers()에서 '레이어 ID','','show'처럼
지정을 하고 다른 부메뉴 레이어들은 화면에 안보이게 '레이어 ID','','hide'로 숨겨줍니다.
만약 주메뉴와 부메뉴가 각각 3개이고 각 부메뉴 레이어의 id가 menu1, menu2, menu3이라면 마우스가 주메뉴나
부메뉴 중 어느 곳에 위치해 있다가 다른 주메뉴를 선택할 때 항상 선택한 주메뉴의 부메뉴만이 화면에 나타나야 합니다.
안그러면 레이어들이 화면에 겹쳐서 잘 안보일 수 있기 때문입니다.
이런 경우에는 MM_showHideLayers()에서 '레이어 ID','','hide','레이어 ID','','hide'처럼
다른 부메뉴 레이어들은 모두 숨깁니다.(hide)
그런 후 '레이어 ID','','show'로 화면에 나타낼 부메뉴 레이어를 show를 해줍니다. show와 hide 하는 것은
어느 것을 먼저 하느냐는 상관없습니다.
예)
onmouseover="MM_showHideLayers('menu1','','show','menu2','','hide','menu3','','hide')" 이것과 onmouseover="MM_showHideLayers('menu2','','hide'.'menu3','','hide','menu1','','show')" 이것처럼 show 되는 부메뉴를 먼저 써줘두 되고 hide 되는 부메뉴를 먼저 써주든 상관 없습니다. 단, '레이어 ID', '', 'show 또는 hide' 라는 형식은 지켜야 합니다. |
<script language="JavaScript">
function hiddn_layer(layer_name)
{
if (layer_name == '') return;
eval(layer_name+".style.display='none'")
}
function show_layer(layer_name)
{
if (layer_name == '') return;
eval(layer_name+".style.display='block'")
}
</script>
<a href='#' OnClick="show_layer('layer01'); hiddn_layer('layer02');">메뉴1</a> <a href='#' OnClick="hiddn_layer('layer01');show_layer('layer02');">메뉴2</a>
<div id="layer01" style='display:none;'>1 부메뉴1 | 1 부메뉴2 | 1 부메뉴3 | 1 부메뉴4</div>
<div id="layer02" style='display:none;'>2 부메뉴1 | 2 부메뉴2 | 2 부메뉴3 | 2 부메뉴</div>