최근 포토로그


Apache Bechmark tool : ab 사용하기 개발

아파치 설치 시, 기본으로 설치되는 ab를 이용하여 간단하게 웹 사이트 성능을 확인한다.

참고 URL : http://www.yolinux.com/TUTORIALS/WebServerBenchmarking.html


$ab -n 1000 -c 10 -g ab_webtest.txt http://localhost:8080/

$gnuplot
gnuplot> set terminal png
gnuplot> set output "ApacheBenchmarkResults.png"
gnuplot> set title "Benchmark from Server X"
gnuplot> set size 1,0.5
gnuplot> set key left top
gnuplot> set xlabel 'request'
gnuplot> set ylabel 'ms'
gnuplot> plot "ab_webtest.txt" using 10 with lines title 'Benchmark from Server X'
gnuplot> exit



윈도우 하위 폴더 파일 일괄 삭제하기 윈도우

윈도우에서 하위 폴더 파일을 일괄 삭제하려면 다음과 같이 한다.

1. cmd 창을 실행한다.

2. 해당 경로로 이동한 후 아래 명령어 실행
DEL /S/F/Q *.jpg

--> 현재 폴더의 하위 디렉토리에 있는 확장자 jpg 파일을 모두 삭제한다.

DEL의 옵션은 아래와 같다.

DEL [/P] [/F] [/S] [/Q] [/A[[:]특성]] 이름
ERASE [/P] [/F] [/S] [/Q] [/A[[:]특성]] 이름

  이름          하나 이상의 파일 또는 디렉터리를 지정합니다.
                와일드카드를 사용하면 여러 개의 파일을 삭제할 수 있습니다.
                디렉터리를 지정한 경우 해당 디렉터리 내의 모든 파일을 삭제할 수 있습니다.

  /P            각 파일을 삭제하기 전에 삭제를 확인하는 메시지를 표시합니다.
  /F            읽기 전용 파일을 삭제합니다.
  /S            지정된 파일을 모든 하위 디렉터리에서 삭제합니다.
  /Q            자동 모드에서는 글로벌 와일드카드에서 삭제할 것인지 묻는 메시지를 표시하지 않습니다.
  /A            특성을 기준으로 삭제할 파일을 지정합니다.
  특성          R  읽기 전용 파일              S  시스템 파일
                H  숨김 파일                   A  기록 파일
                I  콘텐츠가 인덱싱되지 않은 파일  L  재분석 지점
                -  부정을 뜻하는 접두사

명령 확장을 사용하면 DEL과 ERASE는 아래와 같이 바뀝니다.

/S 스위치의 의미가 바뀌어, 찾지 못하는 파일이 아니라 지워진 파일을 보여줍니다.



메모리 사용량에 따라 프로세스 정렬하기 유닉스

ps를 이용하여 메모리 사용량에 따라 정렬하여 프로세스를 볼 수 있다.

$ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 40
USER       PID  PPID   RSS    SZ    VSZ %MEM %CPU     TIME CMD
502      32077     1 405276 1288000 1307052 10.0 1.0 00:02:11 /home/serviceunus/jdk1.7.0_55/bin/java -Djava.util.logging.config.file=/home/serviceunus/apache-tomcat-7.0.39/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl -Djava.endorsed.dirs=/home/serviceunus/apache-tomcat-7.0.39/endorsed -classpath /home/serviceunus/apache-tomcat-7.0.39/bin/bootstrap.jar:/home/serviceunus/apache-tomcat-7.0.39/bin/tomcat-juli.jar -Dcatalina.base=/home/serviceunus/apache-tomcat-7.0.39 -Dcatalina.home=/home/serviceunus/apache-tomcat-7.0.39 -Djava.io.tmpdir=/home/serviceunus/apache-tomcat-7.0.39/temp org.apache.catalina.startup.Bootstrap start
502       9716     1 196732 1300380 1319432  4.8 5.6 01:20:56 /home/serviceunus/jdk1.7.0_55/bin/java -Djava.util.logging.config.file=/home/serviceunus/apache-tomcat-7.0.39-mobile/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/serviceunus/apache-tomcat-7.0.39-mobile/endorsed -classpath /home/serviceunus/apache-tomcat-7.0.39-mobile/bin/bootstrap.jar:/home/serviceunus/apache-tomcat-7.0.39-mobile/bin/tomcat-juli.jar -Dcatalina.base=/home/serviceunus/apache-tomcat-7.0.39-mobile -Dcatalina.home=/home/serviceunus/apache-tomcat-7.0.39-mobile -Djava.io.tmpdir=/home/serviceunus/apache-tomcat-7.0.39-mobile/temp org.apache.catalina.startup.Bootstrap start
root      1803     1 22516 20752  22524  0.5  0.0 00:00:00 iscsiuio
root      2704     1 10544  8312  26344  0.2  0.0 00:00:00 /usr/bin/python -tt /usr/sbin/yum-updatesd
root      1112     1  6728 13304  29220  0.1  0.0 00:00:08 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
68        1837     1  4100  2640   6284  0.1  0.0 00:00:26 hald
root      2208  1898  2908   616  10184  0.0  0.0 00:00:00 sshd: serviceunus [priv]
root      1372  1898  2900   616  10184  0.0  0.0 00:00:00 sshd: serviceunus [priv]
root      2558  1898  2900   616  10184  0.0  0.0 00:00:00 sshd: serviceunus [priv]
root     27536  1898  2900   616  10184  0.0  0.0 00:00:00 sshd: serviceunus [priv]


참고 : http://jmnote.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%82%AC%EC%9A%A9%EB%9F%89%EC%88%9C_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EB%B3%B4%EA%B8%B0


curl로 URL 확인하기 유닉스

방화벽 등의 이유로 브라우저 확인이 쉽지 않은 경우가 있는데,
curl을 이용하여 해당 서버의 URL이 정상인지 간단하게 확인할 수 있다.

* GET
$curl http://dochi575.egloos.com
이게 가장 기본인데, "-i" 옵션을 이용하면 조금 더(?) 나온다.

$curl -i http://dochi575.egloos.com

참고로, "-v" 옵션을 사용하면, request 시작부터 response 종료까지의 과정을 볼 수(?) 있다.


* POST
$curl -i -X POST -d "eventId=1000&seqNo=12345" http://dochi575.egloos.com


이외에 Header 설정, 파일업로드까지
쉽고 빠르게 서버 URL을 테스트해 볼 수 있다.



VirtualBox 해상도 설정(2) VirtualBox

- Host : Windows 7
- Guest : Windows XP

윈도우 XP를 guest로 설치했는데, 해상도가 자동으로 맞춰지지 않는다.
지난 번 CentOS 해상도 맞추는 포스팅과 비슷할 듯 하여 따라하니 되는구나...

    - 참조 : Guest가 CentOS인 경우, 해상도 맞추는 건 다른글 참조.

1. Guest 윈도우 메뉴에서
   장치 >> CD/DVD 장치 >> 가상 CD/DVD 디스크 파일 메뉴를 선택한 후, 
   팝업창에서 VBoxGuestAdditions.iso 파일을 선택한다.(이 파일은 Host에 있는 파일)

2. 가상 디스크 선택이 완료되면, Guest 내에 "D" 드라이브가 생성되는데,
"D" 드라이브를 더블클릭하면 아래의 팝업이 실행된다.(Next를 눌러 설치 진행)

3. 설치 경로를 묻는데, 그냥 계속 Next 선택한다.

4. 역시 Next 선택.
Direct3D가 필요한 경우는 체크박스 추가 선택.

5. "계속" 눌러서 설치한다.

6. 설치가 완료 후, Guest 윈도우를 재부팅해주면, 전체 화면 모드를 이용할 수 있다.


광화문역(5호선) 근처 밥집 밥집

여기저기 떠돌아다니다보니, 밥집 정리가 갑자기 하고 싶어졌다.
그래서, 오늘부터 하나씩 기억을 더듬으며...쩝쩝쩝

기준은 내 입맛에 평균 이상되는 밥집이므로, 딱히 기준은 없음.

* 대우프라자빌딩 지하
   - 할아버지 돈까스 : 약간 달달한 맛의 돈까스
   - 모박사부대찌개 : 라면 반개가 기본으로 올라가는 부대찌개
   - 소공동뚝배기 : 순두부 또는 직화구이
* 광화문 뚝감 : 뚝배기감자탕
* 세종빌딩 지하
   - 양푼 김치찌게 : 돼지고기, 스팸, 오뎅 등을 선택해서 넣을 수 있다.
   - 빵튀 : 돈까스+(냉면/떡볶이 중 택1), 짬뽕라면
   - 되는집 : 전골 - 라면사리 무한
* 우면동 : 갈비탕
* 변호사회관 빌딩 지하
   - 국시방 : 찐한 멸치 육수의 칼국수
   - 장수한방삼계탕 : 반계탕(특히, 약반계탕), 찜닭
* 종로빈대떡 : 술 한잔하기 좋음.
* 뽐모도로 : 스파게티
   - 뽐모도로는 제외함 
        --> 이유 : 매번 가보면 대기줄이 있는데, 엄청 맛있나 보다 기대가 컸는지 모르겠으나,
                       한번 가보고는 더이상 안감. 이건 함께 일하는 직원들도 모두 같은 생각임.
                       유명세 때문에 회전율이 높다보니 재료의 신선도는 인정하지만, 
                       줄을 서서 기다리면서 먹어야 할 정도의 맛도 아니고, 가격이 너무 비쌈.
                       희안한건 양이 너무 많아서 남자도 남길 정도...


방화벽 : DNS query 유닉스

네트워크 정책 상, 모든 outbound call이 막혀있어서,
DNS query도 실행이 안되었는데,
아래 정책을 방화벽에 반영해주면 된다..

      - 참고 URL : http://infraking.tistory.com/163

* 필요한 정책 추가 (IN/OUT)

(1) DNS 서버 운영시
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT  -m comment --comment "ACCEPT IN  - DNS SERVER"
# iptables -A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT  -m comment --comment "ACCEPT IN  - DNS SERVER"

(2) DNS QUERY
# iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT -m comment --comment "ACCEPT OUT - DNS QUERY"
# iptables -A OUTPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT -m comment --comment "ACCEPT OUT - DNS QUERY"

(3) 외부 웹서버 접근
# iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -m comment --comment "ACCEPT OUT - WWW"

(4) 내부에 서버 운영시
# iptables -A INPUT  -m state --state NEW -m tcp -p tcp --dport 포트 -j ACCEPT -m comment --comment "주석"

(5) 외부에 서버 접근시
# iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 포트 -j ACCEPT -m comment --comment "주석"



dig (domain information groper) 유닉스

nslookup 대신에 dig (domain information groper)로 대체된다고 한다.
이걸 이제야 안건지...쩝


VirtualBox 디스크 사이즈 수정하기 VirtualBox

VirtualBox가 실행중이면, 종료시킨다.

디스크 사이즈를 늘리기 위해 DOS창에서 아래의 명령을 실행한다.
"C:\Program Files\Oracle\VirtualBox\VBoxManage" modifyhd Windows7.vdi --resize 30720

숫자는 MB 단위로 입력한다.
정상적으로 수행이 되면, 다시 VirtualBox를 시작한다.

제어판>시스템및보안>관리도구>하드디스크 파티션 만들기 및 포맷

위 창에서 보면, 새로 확장한 사이즈의 디스크가 미할당되어 있는 보일텐데,
"볼륨확장"을 통해 사이즈를 확장시키면 된다.



apache permission denied(13) 개발

아파치 포트가 1024보다 크고, root 권한으로 실행하는데,
아래와 같은 오류가 발생하면서 아파치 서버가 실행되지 않는 경우가 있다.

$ service httpd start
Starting httpd: 
(13)Permission denied: make_sock: could not bind to address [::]:8000
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:8000
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

이 경우 SELinux(Security-Enhanced Linux) 정책으로 인한 문제이므로, 아래와 같이 확인한다.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

$ setenforce 0

$ service httpd start
Starting httpd: 
                                                           [  OK  ]

$ setenforce 1

이 방식으로는 restart를 하게 되면 동일한 오류가 또 발생하기 때문에,
setenforce를 아예 꺼버리거나 아니면 semanage를 이용하여 SELinux 설정을 변경한다.

semanage가 없으면 설치한다.

yum list policycoreutils-python

설치 완료되면, 
http 포트로 지정되어 있는 설정 정보를 확인한다.

# semanage port -l | grep http
http_cache_port_t              tcp      3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

사용하려는 포트가 지정된 포트인지 확인한다.
# semanage port -m -t http_port_t -p tcp 8000
/usr/sbin/semanage: tcp/800에 대한 포트가 지정되지 않았습니다

포트가 지정되어 있지 않으면, 해당 포트를 추가한다.
# semanage port -a -t http_port_t -p tcp 8000

정상적으로 등록되었는지 확인한다.
semanage port -l | grep http
http_cache_port_t              tcp      3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      8000, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

아파치 restart를 다시 실행한다.
# service httpd restart
httpd 를 정지 중:                                          [  OK  ]
httpd (을)를 시작 중:                                      [  OK  ]


위와 같이 정상적으로 실행된 상태에서,
php 페이지 호출하는 403 fobidden이 발생하고, 아래와 같은 오류가 발생하는 경우는...

[error] (13)Permission denied: access to /wordpress/wp-admin/install.php

$ getsebool -a | grep httpd
allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> on
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_manage_ipa --> off
httpd_read_user_content --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off

빨간색 표시된 넘들을 on으로 설정해 준다.

$ setsebool -P httpd_can_network_connect_db on
$ setsebool -P httpd_enable_homedirs on

httpd_can_network_connect_db는 http 호출시 db 접속을 허용하는 것이고,
httpd_enable_homedirs은 http 호출시 home dir 접근을 허용한다.

httpd를 재시작해준다.
$ service httpd restart




1 2 3 4 5 6 7 8 9