리눅스 설치시에 웹서버를 패키지로 선택해서 설치할수도 있다...


아주 쉽게 간편하게 설치가 되지만... 여러모로 문제가 있다...

쉽게 이야기 해서 c++을 공부 안하고 .net부터 만지는 꼴이라고 할까???

기본에 충실해야 응용력이 살아난다...-_-

인터넷에 떠도는 메뉴얼로 고대로 따라해봤다...

# yum 설치를 위해 GPG-KEY 포함
rpm --import /usr/share/rhn/RPM-GPG-KEY-fedora

------------> 참고로 위에 키포함을 안하고 yum을 계속 사용하다보면 만드시 에러가 난다...-_-

# yum 업데이트
yum -y update

------------> yum은 정말 대단한 유틸이다... 쩝... 필자에 경우도 rpm만으로 레드햇9에 모든 패키지를 설치했으나 온갖 의존성 문제와 잡다한 오류들때문에 주름살만 늘어갔었다...

Yum은 Yellowdog Updater, Modified의 약자로 rpm기반의 시스템을 위한
자동 업데이터이자 패키지 설치/삭제도구이다.
Yum은 자동적으로 의존성을 처리해주며 rpm 패키지들을 안전하게 설치, 삭제 및
업데이트하기 위해 반드시 해야할 일들을 스스로 해결한다.

필자에 경우 커널업데이트를 위해 의존성있는 모든 패키지에 업그레이드가 무서워 포기했었는데 시간만 있다면
얼마든지 해낼것 같다..ㅋㅋㅋ

# 한글 설정
/etc/sysconfig/i18n

LANG="ko_KR.eucKR"
SUPPORTED="en_US.iso885915:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="iso15"

# 매뉴얼 설정 수정
vi /etc/man.config

수정
PAGER /usr/bin/less -isr
--------------------------> 위 두가지 한글 설정은 터미널이나 기타부분에서 한글깨짐현상을 고치기 위해서다
# 디렉토리 색상 수정
vi /etc/DIR_COLORS.xterm

수정
DIR 00;33

# 소스 컴파일을 위한 컴파일러 및 각종 모듈 yum 설치
yum -y install gcc cpp gcc-c++ compat-gcc-32-g77 flex libjpeg-devel libpng-devel libtiff-devel freetype-devel openldap-devel pam-devel sendmail-cf vsftpd telnet-server

# zlib 소스 설치
cd /usr/local/src
wget http://www.zlib.net/zlib-1.2.3.tar.bz2
tar xfj zlib-1.2.3.tar.bz2
cd zlib-1.2.3
make
make install

# freetype 2 설치
글짜를 그릴 때 쓰는 라이브러리 입니다.
wget http://ftp.superuser.co.kr/pub/etc/freetype-2.1.5.tar.gz
tar xvfz freetype-2.1.5.tar.gz
cd freetype-2.1.5
./configure
make
make install

# openssl 소스 설치
cd /usr/local/src
wget http://www.openssl.org/source/openssl-0.9.8a.tar.gz
tar xfz openssl-0.9.8a.tar.gz
cd openssl-0.9.8a
./config
make
make install

# curl 소스 설치
cd /usr/local/src
wget http://curl.haxx.se/download/curl-7.15.1.tar.bz2
tar xfj curl-7.15.1.tar.bz2
cd curl-7.15.1
. /configure --with-ssl
make
make install

# gd lib 설치
cd /usr/local/src
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
tar xfz gd-2.0.33.tar.gz
cd gd-2.0.33
./configure
make
make install

# webalizer 소스 설치
cd /usr/local/src
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tgz
tar xfz webalizer-2.01-10-src.tgz
cd webalizer-2.01-10
./configure --with-language=korean
make
make install

# mysql 4.1.x 설치
cd /usr/local/src
wget http://mysql.byungsoo.net/Downloads/MySQL-4.1/mysql-4.1.16.tar.gz
tar xfz mysql-4.1.16.tar.gz
cd mysql-4.1.16
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr
make
make install

/usr/local/mysql/bin/mysql_install_db
groupadd mysql
useradd -M -c MySQL_Server -d /usr/local/mysql -g mysql -s /bin/nologin mysql
chown root.mysql -R /usr/local/mysql
chown mysql.mysql -R /usr/local/mysql/data
cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local

# apache 1.3.x 설치
cd /usr/local/src
wget http://ftp.apache-kr.org/httpd/apache_1.3.34.tar.gz
tar xfz apache_1.3.34.tar.gz
cd apache_1.3.34
./configure --prefix=/usr/local/apache --enable-module=so
make
make install
echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local

#freetype 소스설치후 적용하기위세 freetype 옵션추가
# php 소스 설치
cd /usr/local/src
wget http://kr.php.net/get/php-4.4.2.tar.bz2/from/this/mirror
tar xfj php-4.4.2.tar.bz2
cd php-4.4.2
./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/apache/conf --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-tiff-dir=/usr/local --with-freetype-dir=/usr/local --with-ttf --with-gd --with-openssl --with-gettext --with-kerberos --with-swf-dir=/usr/local --with-mod_charset --with-regex=php --with-curl --with-ldap --with-iconv --enable-gd-native-ttf --enable-ftp --enable-sockets --disable-debug --enable-calendar --enable-sigchild --enable-magic-quotes --enable-bcmath --enable-exif --enable-mbstring --enable-dbase --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-yp --with-jpeg-dir --with-freetype-dir
make
make install
cp php.ini-dist /usr/local/apache/conf/php.ini

-------------> 이쯤에서 에러가 났었는데 .so cannot restore segment prot after reloc: Permission denied

이런 에러가 난다면 현재 Selinux환경이 활성화 때문이다.

Selinux활성화 상태에서 apache를 구동하는 방법은 조금 복잡.

그냥 Selinux를 비활성화 시키고 재부팅하면 정상적으로 구동된다.

먼저, 콘솔상태라면..

/etc/sysconfig/selinux 파일을 열어서

SELINUX=enforcing 부분을 아래와 같이 변경.
SELINUX=disabled

이와같이 변경한 다음에 재시작.

disabled 대신에 Permissive 라고 입력해도 된다.
그럼 다른 설치를 계속...

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

수정
DirectoryIndex index.html index.htm index.php

수정 (public_html -> www)
UserDir www
#

# vi /usr/local/apache/conf/mime.types
두줄 추가 (확장자는 탭키로 띄운다)
application/x-httpd-php php ph inc
application/x-httpd-php-source phps

# php 파일 이외에 다른파일명으로 php해석할수있게 설정 ex) htm html
# vi /usr/local/apache/conf/httpd.conf
- .php 파일 및 html 파일에서 php 코드 실행되게 설정하려면
AddType application/x-httpd-php .php .phtml .php3 .html .htm
AddType application/x-httpd-php-source .phps

# vi /usr/local/apache/conf/php.ini
- 그림 파일 및 프래쉬 파일 로그 남기지 않게 설정
방문자 수가 많아지면 웹로그가 엄청 쌓이게 되고, 그 로그는 크기가 2G를 넘게 되면 웹페이지에 이상현상이 생깁니다. 그렇다고 로그를 안 남길 수는 없는 것이고, 이미지 파일들은 로그남기는 것에서 제외합니다.
CustomLog logs/access_log common 이렇게 되어 있는 것을 ..
SetEnvIfNoCase Request_URI (gif|png|jpg|css|js|bmp|jpeg|swf)$ IMAGE=1
CustomLog /usr/local/apache/logs/access_log common env=!IMAGE
이렇게 바꾸면^^; 쉽게 가능합니다.
- 업로드 용량 제한 풀기
기본적으로 업로드는 2M로 제한되어 있습니다. 만약 2M 이상으로 하면 여러 가지 설정들을 바꾸어 줘야 합니다. 업로드 되는 시간을 길 게 해 주어야 하고, 한번에 잡아먹을 메모리를 크게 해 주어야 합니다.
default_socket_timeout = 600
post_max_size = 20M
memory_limit = 20M
upload_max_filesize = 20M

- 업로드 용량 제한 풀기
# vi /usr/local/apache/conf/php.ini
기본적으로 업로드는 2M로 제한되어 있습니다. 만약 2M 이상으로 하면 여러 가지 설정들을 바꾸어 줘야 합니다. 업로드 되는 시간을 길 게 해 주어야 하고, 한번에 잡아먹을 메모리를 크게 해 주어야 합니다.
default_socket_timeout = 600
post_max_size = 20M
memory_limit = 20M
upload_max_filesize = 20M

- post, get , 쿠키 , 세션등의 변수를 일반변수로 (개인 서버용일경우 보안상 OFF 권장)
예 전에 php는 기본적으로 위 변수를 일반변수로 사용할 수 있었습니다. 하지만 보안에 취약 하기 때문에 php 설치시 기본적으로 일반변수로 사용못하게 설정합니다. 이렇게 되면 문제가 예전에 사용하던 짜여졌던 프로그램은 정상적으로 실행되지 않습니다. 보안보다는 호환성이 더 중요하죠^^;
register_globals=On 이렇게 설정합니다.

# ZendOptimizer 설치
cd /usr/local/src
wget ftp://ftp.sir.co.kr/zendoptimizer/ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
tar xfz ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
cd ZendOptimizer-2.5.10a-linux-glibc21-i386
./install.sh

php.ini 경로
/usr/local/apache/conf

# mod_throttle 소스 설치
cd /usr/local/src
wget ftp://ftp.sir.co.kr/etc/mod_throttle-3.1.2.tgz
tar xfz mod_throttle-3.1.2.tgz
cd mod_throttle-3.1.2/
make install

#####################################################
##### 인스톨시 다음과 같은 에러시 다음과 같이 하세요. ############
##### make: *** [install] Error 127make: *** [install] Error 127 ############
####################################################
---> 해당 디렉토리에 Makefile 에 APXS 경로를 지정해준다.

------>경로 지정법

# vi Makefile

APXS=/usr/local/apache/bin/apxs
APACHECTL=/usr/local/apache/bin/apachectl

절대경로로 수정한 다음 저장 하고 다시 make install 실행

(참고 인스톨시 에러가 발생한다. 그리고 APM세팅 방식을 DSO방식으로 설치한다.
STATIC방식으로 설치해도 되지만, 그 부분은 다시 설정해야한다.)

* static방식으로 설치 했을 경우 ...
configure 시--add-module=$mod_throttle_source_PATH/mod_throttle.c 추가.

* 그럼 DSO방식으로 설치 했을 경우...
* 모듈을 만들어준다.
[root@abcd mod_throttle-3.1.2]# /usr/local/apache/bin/apxs -c mod_throttle.c(모듈을 만들어준다)
gcc -DLINUX=22 -DUSE_HSREGEX -fpic -DSHARED_CORE -DSHARED_MODULE
-I/usr/local/apache/include -c mod_throttle.c
gcc -shared -o mod_throttle.so mod_throttle.o

* 에러부분에 추가 해주면 된다.

[root@abcd mod_throttle-3.1.2]# /usr/local/apache/bin/apxs -i -a -n 'throttle' mod_throttle.so
[activating module `throttle' in /usr/local/apache/conf/httpd.conf]
cp mod_throttle.so /usr/local/apache/libexec/mod_throttle.so
chmod 755 /usr/local/apache/libexec/mod_throttle.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new

##############################################
vi /usr/local/apache/conf/httpd.conf
ThrottlePolicy Volume 500M 1d
SetHandler throttle-status

SetHandler throttle-me

SetHandler throttle-me

ServerAdmin root@xxx.com
ServerName xxx.com
DocumentRoot /home/xxx
# 하루 500M
ThrottlePolicy Volume 500M 1d
# 하루 천번
ThrottlePolicy Request 1000 1d
# quota 설정

1. fstab 옵션추가 (usrquota,grpquota) :
vi /etc/fstab
/home 에 usrquota 추가
default,usrquota

2. remount (umount , mount) :
mount -o remount /home

3. 데이터베이스 파일생성(quota.user , quota.group) :
touch /home/quota.user
chmod 600 /home/quota.user
quotacheck -av
convertquota -u /home

4. 사용자마다 적용수치 기록 :
edquota 계정
repquota -a

5. 활성화 :
quotaon /home

# qpopper 4.0.8 소스 설치
cd /usr/local/src
wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.8.tar.gz
tar xvfz qpopper4.0.8.tar.gz
cd qpopper4.0.8
./configure --enable-specialauth --enable-servermode --enable-shy
make
cp popper/popper /usr/sbin/popper

vi /etc/xinetd.d/pop3

service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/popper
log_on_success += HOST DURATION
log_on_failure += HOST
}

# /etc/rc.d/init.d/xinetd restart

# sendmail 수정 및 실행
vi /etc/mail/sendmail.mc

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

# 계정당 용량 설정
vi /etc/sendmail.cf
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
M=20495360, <-- 이 부분만 추가 : byte 단위 (예:20메가)
T=DNS/RFC822/X-Unix,
A=procmail -t -Y -a $h -d $u

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
#/etc/rc.d/init.d/sendmail restart
#/etc/rc.d/init.d/saslauthd restart

# 기본 서비스

ntsysv 실행

auditd
crond
iptables
kudzu
named
network
pop3
saslauthd (보내는 메일서버 패스워드 인증?)
sendmail
sshd
syslog
telnet
vsftpd
xinetd

# 그룹사용자 추가
groupadd webhost

# path 추가

vi /etc/profile

pathmunge /usr/X11R6/bin after
pathmunge /usr/local/mysql/bin after
pathmunge /usr/local/apache/bin after

# vsftpd 설정 변경

vi /etc/vsftpd/vsftpd.conf

주석제거
xferlog_file=/var/log/vsftpd.log

# 재시작

sync
reboot

***이제 설치가 다 되었으면 웹브라우저에 localhost를 입력하면 아파치 테스트 페이지가 나온다...

php테스트는 다 알겠지만...-_-

phpinfo();
?>

내용에 페이지를 하나 작성해서 띄어보면 끝~~~~

APM설치 도움 : PHPSCHOOL

다음은 삼바를 설치해보자~!

계속됩니다...

http://dspride.cafe24.com
신고

레드햇은 수백만 명의 전 세계 유저들에게 오픈소스 기반의 노트북을 보급하는 것은 비독점적 애플리케이션과 개발에 대한 중요성을 깨닫게 하는데 도움을 줄 것이라고 말한다.

오픈소스 소프트웨어 회사인 레드햇은 100달러짜리 노트북 보급 프로젝트가 오픈소스 데스크톱 운영체제에 대한 관심을 이끌어 낼 수 있다고 생각한다.

레드햇의 부사장인 마이크 에반스는 ZDNet과의 인터뷰에서 비록 오픈소스 데스크톱 운영체제가 그 프로젝트의 주요 목표는 아니지만, 값싼 오픈소스 기반 유비쿼터스 노트북은 오픈소스 데스크톱 기술에 대한 관심을 이끌어 낼 수 있을 것이라고 말했다.

그는 "이 프로젝트의 주된 동기는 아니지만 리눅스 데스크톱 기술 개발에 활력을 줄 것"이라고 말했다.

또한 에반스는 레드햇은 리눅스를 데스크톱으로 이용하기 위한 실질적이고 혁신적인 접근을 해왔으며, 리눅스 도입은 갑자기 확 바뀐다기보다는 점진적으로 이뤄질 것이라고 말했다.

모든 어린이들에게 노트북을 보급하자는 계획(OLPC)으로 알려져 있는 이 100달러짜리 노트북 프로젝트는 2005년 1월 세계 경제 포럼(World Economic Foum)에서 발표됐다. 원래 MIT 미디어랩(Media Lab)의 연구 프로젝트였던 이 프로젝트는 세계의 많은 국가들, 특히 개발 도상국의 학생들에게 싼 가격으로 노트북을 보급하려는 목표를 가지고 있다.

이 노트북의 최종 사양은 지난 11월 최초로 발표됐다.

페도라 축소판 올려 115달러가 적정선
레드햇은 MIT 미디어랩의 소장이자 공동 설립자인 니콜라스 네그로폰테가 오픈소스 공동체에 이 프로젝트 계획에 관심을 기울여 달라고 요청한 2005년 4월부터 이 프로젝트에 참여하고 있고, 지난 월요일에 프로젝트의 참가를 공식 발표했다.

레드햇의 사장인 매튜 줄릭은 "오픈소스 기술이 세상을 바꿀 수 있다고 믿지만 오픈소스 기술은 여전히 초기 단계이다. 오픈소스 기술을 우리가 하는 모든 작업에 적용하는 것이 원칙이다. 스폰서 관계를 넘어, 이 프로젝트에 대한 전문적이고 광범위한 지원을 위해 기술, 다른 전략적 자원을 OLPC에 투입해왔다"고 말했다.

에반스에 따르면, OLPC 운영 체제는 레드햇의 리눅스 배포판인 페도라(Fedora)의 축소 버전을 기반으로 할 것이라고 한다.

프로젝트의 시작 단계부터 이 노트북의 가격이 결국 정확히 얼마가 될 것인가 하는 문제가 계속 제기돼 왔다. 원래 100달러(56파운드)로 발표됐지만, 최근 네그로폰테는 115달러 정도가 좀 더 현실적인 가격이라고 인정했다.

이 프로젝트의 우선 목표는 2006년 말이나 2007년 초까지 제품 출하를 위한 시제품을 제작하는 것이지만, 제조사들은 500만대에서 1500만대 정도의 주문이 들어오고 미리 대금이 입금돼야만 생산을 시작할 것으로 보인다.

지난해 말, 남부 탄자니아의 음투와라 지역에서 교육 자선 단체에서 일하고 있는 팀 바니는 ZDNet과의 인터뷰에서 이 프로젝트의 성공 여부는 프로젝트가 어디에서 진행되느냐에 달려 있는 것 같다고 말했다.

사용자 교육, 업데이트, 기타 기술과의 통합도 협의
바니는 "후원은 물론 이런 걸 어떻게 쓸지 교육을 담당해줄 현장에서 발로 뛸 사람이 실제로 필요하다. 아프리카에서는 이런 문제가 신속히 해결될 방법이 없다. 나는 읽고 쓰기를 제대로 배워본 적이 없는 아이들에게 컴퓨터가 무슨 이득이 있을지 고심하고 있다. 이 아이들은 컴퓨터를 사용할만한 적당한 소양을 갖고 있지 못하기 때문"이라고 말했다.

레드햇은 지역의 협조를 이끌어 내고 학생들 스스로가 기호에 맞춰 확장할 수 있도록 해줌에 따라 오픈소스 소프트웨어 플랫폼을 사용하는 것이 이 프로젝트의 성공을 위해 필수적이라고 주장하고 있다.

비록 레드햇이 주로 OLPC 머신용 운영체제 개발에 초점을 두어 얘기하고 있지만, 시간이 지남에 따라 오픈소스 공동체 역시 사용자 교육과 지원, 업데이트 제공, 자격증, 다른 기술들과의 통합에 참여하도록 할 예정이다.

이 프로젝트의 후원자들은 각 노트북에 브로드밴드 무선 장비를 장착하려고 생각하고 있다. 이 장비를 통해 애드혹(ad hoc) 성격을 지닌 로컬 네트워크를 구성해 메시 네트워크(Mesh Network:각 노트북이 근처의 노트북들과 통신할 수 있도록 하는 네트워크)를 가능하도록 할 계획이다. 또한 대용량 데이터를 저장하는 것을 제외한 대부분의 팻(fat) 클라이언트가 할 수 있는 모든 것을 처리할 수 있도록 할 예정이다.

니콜라스 네그로폰테는 올 6월 테네시주 네쉬빌에서 열리는 레드햇 서밋(Red Hat Summit)에서 OLPC에 대한 생각과 레드햇의 역할에 대해 논의할 예정이다.@

신고

KDE를 보면 비활성일 때도 투명하게 되는 장면이 있던데, 따라해보고 싶어서 찾아봤다.

투명하게 그리는 건 compositor.c의 paint_screen이 담당하던데, 지금은 이동중이거나 크기를 바꿀 때만 적용되는 거라서 조건이 grab_window이며, grab_op이 resize나 move일 경우에 투명하게 그리도록 되어 있다.

내가 하고 싶은 건 이를 테면 포커스가 있는 창만 안 투명하고 나머지는 다 투명한 거다. 포커스가 있는 창을 어떻게 구분할까 했는데 실제로 그리는 동작이 while 루프를 통해 이루어지고 있었다. compositor_windows라는 연결 목록을 뒤에서부터 훑어서 뒤에서부터 창을 그려오는 식이었다. 그러면 앞에 있어야 될 창이 나중에 그려지면서 뒤에 있어야 될 창을 덮어쓴다는 거겠지. 그래서 tmp라는 그 포인터와 원래 목록의 최초를 가리킬 것으로 생각되는 compositor_windows를 비교하도록 했다. 실패.

이건 아닌가 해서 찾아보니 meat-display 개체에 focus_window라는 속성이 있다. 메타시티 내부에서 마지막으로 포커스 처리를 했던 것으로 내가 원하는 목적에 딱 맞았다.

focus_window가 아닐 경우에는 투명하게 그리도록 조건을 바꿨다. 근데 포커스가 바뀐 즉시 투명이 적용되질 않아서 보니 paint_screen이 실행되는 게 애초에 do_repair가 호출되어야 하고, 그 조건은 damage가 발생하는 거였다. 찾아보니까 meta_compositor_damage_window라는 함수가 있어서 window.c에서 FocusOut 이벤트일 때 focus_window를 초기화하기 전에 불러줬다.

일단 기능은 되는데, 포커스가 바뀔 때 이벤트를 한 번 돌고, paint_screen 자체도 창 전체를 다시 그리기 때문에 한 박자 느리다.

가장 좋은 건 딴 거 없이 그 창만 딱 다시 그릴 수 있는 건데 그건 어떻게 할지 아직 모르겠다. window.c 영역에서 쓸 수 있는 함수로 send_configure_notify나 meta_window_move_resize_now 같은 걸 써보긴 했는데 아무래도 직접 그 영역만 딱 그리지는 않는지 아무 결과도 안 나온다.



더 고려해야 될 점이 있는데, 지금은 조건을 너무 단순하게 줘서, 패널도 투명하게 된다. 특수한 창은 비껴가도록 해야 한다.

transset-df를 응용한 어떤 스크립트 설명을 보니까 정확히 내가 원하는 거 같더라. 나중에 살펴봐야지.
신고

+ Recent posts