'팁&테크/Linux'에 해당되는 글 69건
- 2012.08.24 /usr/bin/bash^M: bad interpreter: No such file or directory 에러
- 2012.08.23 아파치 로그설정
- 2012.04.06 서비스 시작옵션 (메모)
- 2012.04.06 [메모] rsync 설정
- 2012.04.04 아파치 파일 캐시기능 설정
- 2012.03.28 rewrite 설정, 링크에 특정문자가 있을 경우 페이지 이동 룰
- 2012.03.26 ftp 연결을 디렉토리에 마운트 시키기
- 2012.03.02 sendmail + dovecot 메일 서버 구성
- 2012.02.29 리눅스 데몬 설명 및 불필요 데몬
- 2012.02.08 아파치, MySQL 서비스 등록
/usr/bin/bash^M: bad interpreter: No such file or directory 에러
윈도우와 유닉스계열의 new line character 문제 때문에 생기는데
vi -b 를 사용해서 파일을 열어보면 개행문자에 ^M 이라는 문자가 보인다.
이놈들을 다 지워주면 문제가 없슴
:1,$ s/^M//g 명령으로 ^M 을 전부 치환하면 된다.
다만 ^M 을 입력할때는 Ctrl + v + M 를 입력해야 한다.
추가로 ^[ 은 Ctrl + v + [ 입력
아파치 로그설정
# 특정 Agent 접근 거부
BrowserMatch "WebZIP" go_out
BrowserMatch "Teleport" go_out
BrowserMatch "GetRight" go_out
BrowserMatch "FlashGet" go_out
BrowserMatch "JetCar" go_out
BrowserMatch "Go!Zilla" go_out
BrowserMatch "NamoWebEditor" go_out
BrowserMatch "Namo" go_out
BrowserMatch "MSFrontPage" go_out
BrowserMatch "WebTrack-HTTPP" go_out
BrowserMatch "WebSymmetrix" go_out
# 로컬 호스트 접속일때 로그 남기지 않음
SetEnvIf Remote_Addr "^127.0.0.1$" not_log
# 이미지 파일 자바스크립트 파일등.. 남기지 않음.
SetEnvIfNoCase Request_URI ".(bmp|gif|jpg|jpeg|png|css|js|java)$" not_log
# 엔진 로봇 로그를 남기 않음
BrowserMatchNoCase "ru-robot" not_log a_robot
BrowserMatchNoCase "Slurp/si" not_log a_robot
BrowserMatchNoCase "Mercator" not_log a_robot
BrowserMatchNoCase "Gulliver" not_log a_robot
BrowserMatchNoCase "SyncIT/" not_log a_robot
BrowserMatchNoCase "FAST-WebCrawler" not_log a_robot
BrowserMatchNoCase "Lycos_Spider" not_log a_robot
BrowserMatchNoCase "^ia_archive" not_log a_robot
BrowserMatchNoCase "^tv" not_log a_robot
BrowserMatchNoCase "Scooter" not_log a_robot
BrowserMatchNoCase "ZyBorg/" not_log a_robot
BrowserMatchNoCase "KIT-Fireball" not_log a_robot
BrowserMatchNoCase "Googlebot/" not_log a_robot
BrowserMatchNoCase "DIIbot/" not_log a_robot
BrowserMatchNoCase "teoma_agent3" not_log a_robot
BrowserMatchNoCase "empas_robot" not_log a_robot
# 로그 남기기
CustomLog /usr/local/apache/logs/access_log combined env=!not_log
서비스 시작옵션 (메모)
아파치
apachectl
- start : 시작
- stop : 종료(강제종료)
- restart : 종료후 시작(강제종료)
- graceful : 재시작(사용중인 프로세스는 작업을 완료한뒤에 재시작, 강제종료 되지 않음) -> 추천
- graceful-stop : 종료(사용중인 프로세스 자업완료 후 종료, 강제종료 되지 않음) -> 추천
각각의 서비스 기본 옵션
ex) service named help
- start : 시작
- stop : 종료(강제종료)
- restart : 종료후 시작(강제종료)
- status : 실행상태(pid정보)
- condrestart : 조건부 재시작(중요 작업시 재시작 안함)
- reload : 설정파일 다시 로드 -> 추천
- configtest : config설정 테스트
[메모] rsync 설정
서버 설정 -------------------------------------------------------------------
[SYMBOL]
path = /var/named/
uid = root
gid = root
use chroot = no
read only = yes
hosts allow = 192.168.0.1/24
max connections = 4
timeout 600
path : 가져오거나 저장할 경로
uid / gid : sync시 사용할 아이디와 그룹아이디
use chroot : yes 일 경우 클라이언트에서 [SYMBOL] 경로만 쓸수 있음, no일 경우 [SYMBOL]뒤에 경로설정 가능
[가능] rsync -avz --delete --stats 서버아이피::SYMBOL /var/named/ --exclude=chroot/proc --exclude=chroot/etc
[불가] rsync -avz --delete --stats 서버아이피::SYMBOL/chroot /var/named/chroot --exclude=chroot/proc --exclude=chroot/etc
read only : 디렉토리의 쓰기 가능여부(클라이언트에서 서버로 전송시)
host allow : 접속가능한 클라이언트 아이피/접두어
max connections : 동시 접속 허용 갯수
timeout : 접속 타임아웃
클라이언트 설정 -------------------------------------------------------------------
rsync -avrz --delete --stats 서버아이피::SYMBOL/chroot /var/named/chroot --exclude=chroot/proc --exclude=chroot/etc
rsync -avrz --delete --stats 서버아이피::SYMBOL/chroot/aa.cfg /var/named/chroot/aa.cfg --exclude=chroot/proc --exclude=chroot/etc
-r recursive (하위 디렉토리까지 포함)
-a : 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v : 상세하게 보여움(목록)
-z : 전송시 압축을 함
-l : 심볼릭 링크 재생성
-p : 퍼미션 업데이트
-t : 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜)
-g : 그룹이름 변경
--delete : 서버에 없는 파일을 클라이언트에서도 삭제함
--exclude : 제외할 디렉토리, 파일명
--stats : 전송결과 표시
아파치 파일 캐시기능 설정
변경이 자주 이루어지지 않는 특정파일들은 브라우져 캐시에서 로드 되도록 하는 아파치 설정
캐싱을 원하는 파일형식의 mime 타입을 적어 주면 됨
#모듈 로드
LoadModule expires_module modules/mod_expires.so
#기능사용(자바스크립트, css, 이미지는 브라우져 캐시 사용)
ExpiresActive On
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
rewrite 설정, 링크에 특정문자가 있을 경우 페이지 이동 룰
RewriteEngine On
RewriteCond %{QUERY_STRING} aaaa [NC] ->쿼리스트링에 aaaa 문자가 있을 경우
RewriteRule (.*) http://주소 [R] -> 주소로 페이지 이동
ftp 연결을 디렉토리에 마운트 시키기
mount -t cifs //192.168.0.1/backup /mnt/backup -o username=jjjj,password=1234,iocharset=utf8,file_mode=0777,dir_mode=0777
머 이런식으로 하면 된다는데 해보지는 않았음.
편하기는 하겠지만 걸리는거는 항상 연결된 상태로 유지 하지는 않겠지?
sendmail + dovecot 메일 서버 구성
2. MTA 구성
/etc/mail/sendmail.mc 파일에서 아래 내용을 수정
#주석제거
#아래부분은 dnl 처리
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
3. cf 파일로 반영
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
만일 cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory 와 같은 오류가 발생하면
sendmail-cf 패키지를 설치해준다.
yum install sendmail-cf
4. 메일 사용 도메인 등록
/etc/mail/local-host-names 파일에 사용할 도메인 기재
5. 필요한 경우 virtusertable 에 계정별 메일주소 할당
/etc/mail/virtusertable 에 메일주소 + 계정 또는 포워딩 주소 할당
makemap hash virtusertable.db < virtusertable 실행
6.
sendmail 재시작
7. dovecot 설정
##mbox 관련
/etc/dovecot/conf.d/10-mail.conf 파일을 확인해보면 mail_location 부분이 주석처리 되어 있음
mail_location = mbox:~/mail:INBOX=/var/mail/%u
라고 하면 계정 밑에 mail 이라는 디렉토리가 필요하고, 받은 메일 내용은 /var/mail/사용자아이디에 저장된다는 내용
8. dovecot, saslauthd 재시작
9. AUTH적용 확인
telnet localhost 25
ehlo localhost
#결과중에 아래 내용이 있는지 확인
250-AUTH LOGIN PLAIN
10. 접속관련 설정
릴레이 및 수신관련 설정을 /etc/mail/access 파일로 한다.
아래와 같은 형태로 설정한다.
[태그:]도메인/아이피/메일주소 옵션
태그
- Connect: 주소 또는 도메인
- From : 송신자 주소
- To : 수신자 주소
옵션
- OK(모든 것을 허용(Relay)한다.)
- RELAY(관련메일의 수신/발신을 허용한다.)
- REJECT(관련메일의 수신/발신을 거부한다.)
- DISCARD (/etc/sendmail.cf에 지정된 $#discard mailer에 지정된 곳으로 메일을 폐기), 폐기하지만 아무런 오류메세지도 발생하지 않음(정상처리된 것처럼 인식)
- ??? message : ??? 는 3글자의 RFC821 에 정의된 리턴코드를 사용할 수 있고
message 는 오류메세지를 임의로 설정할 수 있다.
예) 500 오류메세지 입니다.
예) 특정아이피 릴레이 허용
Connect:127.0.0.1 RELAY
예) 특정메일주소 수신거부
TO:aaaa@aaa.com DISCARD #아무 오류메세지 뜨지 않음, 정상수신된것 처럼 인식
TO:aaaa@aaa.com REJECT # 수신오류 발생
# RFC 821 응답코드
211 System status, or system help reply
214 Help message
[Information on how to use the receiver or the meaning of a
particular non-standard command; this reply is useful only
to the human user]
220 <domain> Service ready
221 <domain> Service closing transmission channel
250 Requested mail action okay, completed
251 User not local; will forward to <forward-path>
354 Start mail input; end with <CRLF>.<CRLF>
421 <domain> Service not available,
closing transmission channel
[This may be a reply to any command if the service knows it
must shut down]
450 Requested mail action not taken: mailbox unavailable
[E.g., mailbox busy]
451 Requested action aborted: local error in processing
452 Requested action not taken: insufficient system storage
500 Syntax error, command unrecognized
[This may include errors such as command line too long]
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
550 Requested action not taken: mailbox unavailable
[E.g., mailbox not found, no access]
551 User not local; please try <forward-path>
552 Requested mail action aborted: exceeded storage allocation
553 Requested action not taken: mailbox name not allowed
[E.g., mailbox syntax incorrect]
554 Transaction failed
리눅스 데몬 설명 및 불필요 데몬
애
아파치, MySQL 서비스 등록
/MySQL설치디렉토리/share/mysql/mysql.server 을 서비스용 스크립트로 사용하면 됩니다.
/etc/rc.d/init.d/ 에 서비스에서 사용하는 모든 스크립트가 위치하므로 거기에 파일을 만들면 되니깐 아래와 같이 하면 됩니다.
1. cd /etc/rc.d/init.d -> 디렉토리 이동
2. ln -s /usr/local/mysql/support-files/mysql.server mysqld -> 소프트링크를 만들어 줍니다.(복사해도 됨)
3. chkconfig --add mysqld -> mysqld 를 서비스로 등록 합니다.
4. chkconfig --level 2345 mysqld -> 서비스 시작레벨을 3으로(이건 안해줘도 됩니다.), 실행레벨은 아래 참고
5. ntsysv -> 리눅스 부팅 시 시작되도록 설정 되있는지 확인
# 각 실행 레벨 설명
2. Apache 서비스 등록
/아파치설치디렉토리/bin/apachectl 을 서비스용 스크립트로 사용하면 됩니다.
다만 스크립트내에 환경설정 파일 위치등의 주석문을 추가해야 합니다.
1. 아래 주석을 자신의 경로에 맞게 수정후 apachectl 에 추가합니다.
2. cd /etc/rc.d/init.d -> 디렉토리 이동
3. ln -s /usr/local/apache/bin/apachectl httpd -> 소프트링크를 만들어 줍니다.(복사해도 됨)
4. chkconfig --add httpd -> mysqld 를 서비스로 등록 합니다.
5. chkconfig --level 2345 httpd -> 서비스 시작레벨을 3으로(이건 안해줘도 됩니다.), 실행레벨은 아래 참고
6. ntsysv -> 리눅스 부팅 시 시작되도록 설정 되있는지 확인