주의 : 아파치 컴파일 할 때만 적용....(rpm 설치시에는 해당 안됨)
Linux/linux_log
- 아파치 컴파일 시 접속자 제한 수 조정 2010.10.06
- [아파치] .htaccess 파일로 특정 IP (대역) 막기 2010.10.06
- sendmail + dovecot 2010.10.06
- php옵션 추가 ex) sockets 2010.10.06
- ubuntu apm 설치 2010.10.06
- FreeBSD APM 설치 2010.10.06
- FreeBSD 네트워크 설정 2010.10.06
- bind 기본설치 2010.01.07
아파치 컴파일 시 접속자 제한 수 조정
주의 : 아파치 컴파일 할 때만 적용....(rpm 설치시에는 해당 안됨)
[아파치] .htaccess 파일로 특정 IP (대역) 막기
#vi .htaccess
SetEnvIfNoCase remote_addr 70.230.245.11 go_out
SetEnvIfNoCase remote_addr 66.249.67.11 go_out
Order Allow,Deny
Allow from all
Deny from env=go_out
대역 차단시에는 마지막 옥탯만 삭제
예 : SetEnvIfNoCase remote_addr 70.230.245. go_out
sendmail + dovecot
|
php옵션 추가 ex) sockets
php옵션 추가 --enable-sockets
소스컴피일시 옵션 추가.
/root/src/php-5.2.9/ext/sockets
phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-sockets=yes
make
vi /usr/local/lib/php.ini
[sockets]
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
extension=sockets.so
php extensions 로 enable-sockets 옵션추가완료
apachectl restart
ubuntu apm 설치
ubuntu apm 설치
sudo apt-get update
1. Apache
$sudo apt-get install apache2
2. mysql 인증 모듈
$sudo apt-get install libapache2-mod-auth-mysql
3. MySQL
$sudo apt-get install mysql-server mysql-client
설치가 완료되면 MySQL서버가 자동으로 시작
4. PHP5
$sudo apt-get install php5-common php5 libapache2-mod-php5
5. MySQL과 연동하기 위한 모듈
$sudo apt-get install php5-mysql
6.아파치 웹서버를 재시작
$sudo /etc/init.d/apache2 restart
7. MySQL서버 정상 작동 확인
$sudo netstat -tap | grep mysql
명령 후
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
면 정상 아니면 재시작
$sudo /etc/init.d/mysql restart
8. zend 설치
wget http://bace.pe.kr/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
tar xzf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp
chmod 644 ZendOptimizer.so
# 모듈 넣을곳을 알아본다.
php -i | grep extension_dir
extension_dir => /usr/lib/php5/20060613+lfs
cp ZendOptimizer.so
# php 에 모듈설정을 한다.
vi /etc/php5/conf.d/ZendOptimizer.ini
zend_extension=/usr/lib/php5/20060613+lfs/ZendOptimizer.so
zend_optimizer.optimization_level=15
zend_optimizer.enable_loader=1
zend_optimizer.disable_licensing=0
:wq
/var/www/info.php
로 phpinfo 확인
=================================================================================
APM 설정
1. 아파치
기본설정 파일은 /etc/apache2/apache2.conf
포트번호, 문서의루트, 모듈, 각종 로그파일, 가상 호스트 등을 설정
2. MySQL
관리자 암호 설정
sudo mysqladmin -u root password newrootsqlpassword
sudo mysqladmin -p -u root -h localohost password newrootpassword
MySQL 설정파일은 /etc/mysql/my.cnf
로그 파일, 포트 번호 등을 설정
Apache 로그 설정
단일 파일에 저장되는 아파치 웹로그를 날짜별로 분할
1. 다운로드 및 압축해제
다운로드
$ tar xvf cronolog-1.6.2.tar
2. 설치 경로 수정
$ cd cronolog-1.6.2
$ vi ./configure
ac_default_prefix=설치경로 (기본값은 /usr/local)
$ ./configure
$ make
$ make install
3. 아파치 설정
/etc/apache2/sites-available/사이트 설정 파일 의 CustomLog 값 변경
CustomLog "|/설치경로/sbin/cronolog /로그폴더/%Y%m%d_access.log" combined env=!nolog
가상 호스팅은 경우에는 로그폴더도 사이트별로 나누면 좋다.
예) /var/log/apache2/mr-dust.pe.kr/
CustomLog "|/설치경로/sbin/cronolog /var/log/apache2/mr-dust.pe.kr/%Y%m%d_access.log" combined env=!nolog
Mysql 설정
1. 초기 mysql root 패스워드 설정하기
mysql 서버에 패스워드 없이 로그인 하게되면 서버에 만들어진 데이터베이스나 테이블 기타 이곳에 저장된 자료가 외부인에게 노출될 수 있다. 따라서 이러한 보안을 목적으로 root 패스워드를 지정하면 mysql 서버를 안전하게 보호할 수 있다.
mysql> use mysql;
mysql> update user set password=password('123456') where user='root';
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> flush privileges; <--- 적용
flush privileges; 를 하지 않으면 mysql에서 빠져나와서 root 로그인이 안된다.
확인한다.
mysql> select host, user, password from user;
+----------------------------------------------------------------+
| Host user password |
+----------------------------------------------------------------+
| localhost root 2e01146f5c065853 |
| localhost.localdomain root 2e01146f5c065853 |
+----------------------------------------------------------------+
mysql> \q
Bye
------------------------------------------------------------------------------------
[주의]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
이때는 mysql 을 shutdown 하거나 reload 하면 된다.
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
하면 패스워드를 묻는데 이때 입력하면 설정한 mysql이 적용이된다.
# /usr/local/mysql/bin/mysqladmin -u root -p reload;
------------------------------------------------------------------------------------
2. root 패스워드를 분실한 경우(응급조치)
mysql 을 오랫동안 사용하지 않았을 경우에 간혹 root패스워드가 기억나질않아서 당황할 때가 있습니다. 시스템관리자라면 시스템의 root나 MySQL의 root의 암호를 잊어 버렸을 때를 대비해서 패스워드를 새로 설정하는 방법을 반드시 숙지하고 있어야 할 것입니다.
① 실행중인 msyql 종료
# ps -ef | grep mysqld
root 9567 1 0 Mar16 ? 00:00:00 sh ./mysqld_safe
root 9576 9567 0 Mar16 ? 00:00:00 /usr/local/mysql/libexec/mysqld
root 9578 9576 0 Mar16 ? 00:00:00 /usr/local/mysql/libexec/mysqld
root 9579 9578 0 Mar16 ? 00:00:00 /usr/local/mysql/libexec/mysqld
# killall mysqld
② grant-table 미사용모드로 mysql시작(권한 테이블을 사용하지 않는 옵션으로 데몬 실행)
# ./safe_mysqld --skip-grant-tables &
[1] 12084
# Starting mysqld daemon with databases from /usr/local/mysql/data
# ./mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.22.24
Type 'help' for help.
mysql>
※ mysqld_safe 명령어는 mysql 데몬을 실행시킨다.
③ update문으로 root사용자 패스워드 갱신
mysql> update user set password=password('123') where user = 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> \q
Bye
④ 실행중인 mysql 다시 종료(권한 테이블을 사용하지 않는 데몬을 종료)
# ps -ef | grep mysqld
root 12084 11558 0 20:10 pts/2 00:00:00 sh ./mysqld_safe --skip-grant-ta
root 12090 12084 0 20:10 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12092 12090 0 20:10 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12093 12092 0 20:10 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
#
# killall mysqld
mysqld daemon ended
[1]+ Done ./mysqld_safe --skip-grant-tables
#
⑤ Mysql 데몬 재 실행 후 갱신된 패스워드로 로그인
# ./safe_mysqld &
[1] 12102
# Starting mysqld daemon with databases from /usr/local/mysql/data
#
# ps -ef | grep mysql
root 12102 11558 0 20:13 pts/2 00:00:00 sh ./mysqld_safe
root 12108 12102 0 20:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12110 12108 0 20:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12111 12110 0 20:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
# mysql -u root -p
Enter Password: ***************
FreeBSD APM 설치
1. Mysql 설치
mysql 설치전 /etc/make.conf 1줄 추가
MASTER_SITE_OVERRIDE=ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
mysql 설치전 mysql 다른 패키지가 설치되어 있는지확인
pkg_info | grep mysql
mysql 패키지가 설치되어있다면 패키지 삭제후 설치해야 mysql 새로 설치한버젼이 정상적으로 설치가 됩니다
mysql 패키지 삭제
ex) mysql50-client 패지키 삭제
cd /usr/ports/databases/mysql50-client
make deinstall
cd /usr/ports/databases/mysql51-server
make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci WITH_XCHARESET=all install clean
체크박스 나타나면 OK 선택 후 진행
/usr/local/bin/mysql_install_db
cp /usr/local/share/mysql/my-huge.cnf /etc/my.cnf
vi /usr/local/etc/rc.d/mysql-server
NO 를 YES 로 수정
: ${mysql_enable="YES"}
chown -R mysql /var/db/mysql
/usr/local/bin/mysqld_safe -user=mysql &
rent-0729# cd /usr/local/bin/
rent-0729# rehash
vi /etc/rc.conf
mysql_enable="YES"
2. 아파치 설치
cd /usr/ports/www/apache22
make install clean
mysql 선택
proxy 선택
perl 옵션 창에서는 OK 누르고 진행
rehash
vi /etc/rc.conf 에 아래 내용 추가
apache22_enable="YES"
apachectl start
3. php 설치
cd /usr/ports/lang/php5-extensions/
make install clean
php 옵션
CALENDAR
CURL
FTP
GD
MBSTRING
MCRYPT
MHASH
MING
OPENSSL
PCNTL
MYSQL
MYSQLI
NCURSES
SOCKETS
SYSVSEM
SYSVSHM
WDDX
ZIP
ZLIB
아파치 체크
CURL 설정에서 OK 누르고 진행
체크박스 설정 화면 나타나면 웬만한거 다 OK 누르고 진행합니다
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
vi /usr/local/etc/apache22/httpd.conf 편집
DirectoryIndex index.html index.htm index.php index.php3
AddType application/x-httpd-php .php .htm .html .inc .ph
AddType application/x-httpd-php-source .phps
reboot
phpinfo() 확인
rent-0729# netstat -la
4. Zend Optimizer 설치
cd /usr/ports/devel/ZendOptimizer
make install clean
vi /usr/local/etc/php.ini
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613/ZendExtensionManager_TS.so"
[vsftpd]
# cd /usr/ports/ftp/vsftpd
# make install clean
# vi /usr/local/etc/vsftpd.conf
# vi /etc/inetd.conf ← ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd 한줄 추가합니다.
# vi /etc/rc.conf ← inetd_enable="YES" 한줄 추가합니다.
# /etc/rc.d/inetd start
reboot
===========================================================================================
호현님 버전
설치전 /etc/make.conf
MASTER_SITE_OVERRIDE=ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ 추가
1. Mysql 설치
# cd /usr/ports
# make search name=mysql-server
- 자신이 설치하고 싶은 버젼 선택 후 해당 디렉토리로 이동
# make install WITH_CHARSET=euckr WITH_XHARSET=all ## euckr 선택
# make install WITH_CHARSET=utf8 WITH_XHARSET=all ## utf-8 선택
# cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf
- 서비스 시작
# /usr/local/etc/rc.d/mysql-server forcestart
# /usr/local/bin/mysql -u root
- root 패스워드 설정(로컬에서만 로그인 가능하게)
mysql> set password for 'root'@'localhost' = password('패스워드');
mysql> grant all on *.* to root@localhost identified by '패스워드';
mysql> update mysql.user set password = password('패스워드') where user = 'root';
mysql> flush privileges;
2 apache2.2.X 설치
cd /usr/ports/www/apache22
make install clean
mysql , proxy 선택
Perl 옵션 창에서는 필요한거 선택후 진행
rehash
vi /etc/rc.conf 추가
mysql_enable="YES"
apache22_enable="YES"
# apachectl start
httpready 머시기 에러가 나면..
# kldload accf_http
명령으로 임시적으로 accf_http 모듈을 커널에 로딩해주면 될겁니다..
부팅시 자동으로 로딩하게 하고싶으면..
# vi /boot/loader.conf
accf_data_load="YES" # Wait for data accept filter
accf_http_load="YES" # Wait for full HTTP request accept filter
추가하거나..
# vi /boot/defaults/loader.conf
에 해당 부분에 가서.. NO 를 YES로 바꿔줍니다.
3. php5 설치, php5-extensions 설치
cd /usr/ports/lang/php5
# apache support 꼭 선택할것 apache2+php5 연동
make config -> apache support
make install clean
cd /usr/ports/lang/php5-extensions
# 필요한 라이브러리 선택
make config
make install clean
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
- /usr/local/etc/apache/httpd.conf에 아래 내용 추가
AddType application/x-httpd-php .php .php3 .phtml .htm .html
AddType application/s-httpd-php-source .phps
reboot
4. Zend 설치
PHP 5.3.2 Cli 버젼의 경우 http://files.directadmin.com/services/custombuild/ 여기서 ZendOptimizer-3.3.9-freebsd6.0-i386.tar.gz 받은후 직접설치
vi /usr/local/etc/php.ini
[Zend]
zend_optimizer.version=3.3.9
zend_extension=/usr/local/lib/ZendOptimizer.so
apachectl restart 시 phpinfo 에서 Zend가 안올라올경우 reboot 하면됩니다.
# PHP 5.2.3 의 버젼의 경우
cd /usr/ports/devel/ZendOptimizer
make install clean
vi /usr/local/etc/php.ini
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613/ZendExtensionManager_TS.so"
아래 명령어로 Zend Optimizer가 잘 적용되었는지 확인
# /usr/local/bin/php -v
- 만약 Failed loading /usr/local/lib/ZendOptimizer.so: Shared object "libm.so.4" not found, required by "ZendOptimizer.so" 에러가 난다면 아래와 같이 해결하면됩니다.
# cd /lib
# ln -s /lib/libm.so.5 /lib/libm.so.4
# ln -s /lib/libutil.so.7 /lib/libutil.so.5
# ln -s /lib/libcrypt.so.4 /lib/libcrypt.so.3
# ln -s /lib/libc.so.7 /lib/libc.so.6
# ports 이용해 아파치, PHP 재설치후 PHPINFO가 안보일경우 PHP를 재설치해줘야 합니다
참고 url = http://www.kr.freebsd.org/fom-serve/cache/43.html
재설치법 우선 설치된 패키지 정보확인
pkg_info
패키지를 지우기전 기존 폴더삭제
/usr/local/etc/apache22 /usr/local/etc/php 관련된 것 삭제
/usr/local/www/apache22 폴더삭제
삭제완료후 패키지 삭제
pkg_delete -x php5
pkg_delete -x apache-2.2.15_9
삭제후 ports 통해 재설치 하시면 됩니다.
FreeBSD 네트워크 설정
FreeBSD 네트워크 설정
네트웍 장비확인
ifconfig -l
vim /etc/rc.conf
network_interfaces="xx"
ifconfig_xx="inet 아이피 netmask 255.255.255.xxx media looBase TX/UTP mediaopt full-dupley"
hostname="호스트명"
defaultrouter="게이트웨이아이피"
vim /etc/resolv.conf확인
reboot
bind 기본설치
bind 설치
*** 자신의 도메인의 호스트명과 네임서버를 맞추어 놓는다 ***
1. yum install bind caching-nameserver
설정파일들 복사
cp /usr/share/doc/bind-9.x.x/sample/* /var/named/chroot/etc
2. named.caching-nameserver.conf 설정 수정
vi /etc/named.caching-nameserver.conf
수정 해당부분 주석처리 // 하고,
listen-on-v6 port 53 { any; };
query-source port 53;
allow-query { any; };
3. named.conf 설정 수정
vi /var/named/chroot/etc/named.conf
수정 해당부분 주석처리 // 하고,
match-clients { any; };
match-destinations { any; };
match-clients { any; };
match-destinations { any; };
그리고 보안 인증부분을 제외하고 세팅을 하겠다.
키부분 주석처리
//key ddns_key
//{
// algorithm hmac-md5;
// secret "use /usr/sbin/dns-keygen to generate TSIG keys";
//};
-----------------------------------------------------------------------------
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {
listen-on port 53 { any; };
//listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
// randomization
query-source port 53;
//query-source-v6 port 53;
allow-query { any; };
// Recursion query 제한(DNS cache Poinson 공격 예방)
allow-recursion { 127.0.0.1; 192.168.0.0/24; };
// 버전 정보 감춤
version "UNKNOWN";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
recursion yes;
include "/etc/named.rfc1912.zones";
};
4. zone 추가
나의 도메인은 ganji.pe.kr 이다.
존파일 추가 부분은 예전과 달리 /var/named/chroot/etc/named.rfc1912.zones 로 잡혀있다.
vi /var/named/chroot/etc/named.rfc1912.zones
정방향 영역 추가
zone "ganji.pe.kr" IN {
type master;
file "ganji.pe.kr.zone"; <= 존파일이름
allow-update { none; }; <= 동적 업데이트 허용안함
};
역방향 영역 추가 (역방향은 거의 세팅하지 않는다.)
zone "163.231.254.121.in-addrarpa" IN { <= IP역순 입력
type master;
file "ganji.pe.kr.rev"; <= 존파일이름
allow-update { none; }; <= 동적 업데이트 허용안함
};
5. zone file 설정
zone파일을 실 위치는 /var/named/chroot/var/named/ganji.pe.kr.zone 이다.
vi /var/named/chroot/var/named/ganji.pe.kr.zone
--------------------------------------------------------------------
$TTL 3600 <= TTL타임
@ IN SOA ns.ganji.pe.kr. root.ganji.pe.kr. ( <=도메인 마지막에 마침표 (.)을 찍는것을 주의한다.
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.ganji.pe.kr. <= 네임서버 호스트 (역시 마침표주의)
@ IN A 121.254.231.163 <= 나머지들은 호스트명 지정(소위 서브도메인,2차도메인)
ns IN A 121.254.231.163
www IN A 121.254.231.163
mail IN A 121.254.231.163
* 뛰우는 간격은 tab으로 한다.
* MX레코드 값이나 다른 설정은 다음에 설명.
---------------------------------------------------------------------
zone 파일 권한을 모두 named로 변경한다
chown named.named 존파일명
심볼릭 링크 한다.
/var/named 위치에서 존파일 실위치로 심볼릭 링크
ln -s /var/named/chroot/var/named/ganji.pe.kr.zone ganji.pe.kr.zone
6. 자신의 네임서버를 자신 IP로 설정을 한다.
vi /etc/resolv.conf
nameserver 자신IP
7. 방화벽에서 DNS포트인 53번을 TCP, UDP 다 열어준다.
8. named 시작
/etc/init.d/named start
=====================================================================================
참고 : http://planactor.tistory.com/150
dns key 등록
[root@localhost named]# /usr/sbin/dns-keygen
waGqYG3ruwzAr7CtEcOgFS8PvXm1CvYzbxS0mvYH6qYyt0vc1JsKncVdg89x
[root@localhost named]# cat /etc/rndc.key
key "rndckey" {
algorithm hmac-md5;
secret "waGqYG3ruwzAr7CtEcOgFS8PvXm1CvYzbxS0mvYH6qYyt0vc1JsKncVdg89x";
};