Apache 는 전세계 웹 서버로 가장 많이 쓰이는 HTTP 서버 입니다. Apache 는 최신 2.4 으로 넘어오면서 많은 변화를 겪었습니다. 이 문서는 리눅스 아파치 설치 하는 방법을 설명한 것입니다. 1. 개요 CentOS 7 배포판은 RHEL 7 을 재컴파일해서 만들어진 배포판 입니다. 이전 버전과 달리 서비스 데몬 관리로 Systemd 를 채용했고 기본 파일 시스템으로 XFS 를 채용하는등 많은 변화를 겪었습니다. CentOS 7 에 서버 프로그램을 설치하게 될 경우에 이 Systemd 와 결합을 시키는 것도 중요한 일로 떠올랐습니다. Systemd 는 단순하게 서비스 […]
Apache 웹 서버, Configtest 체크 만들기
Apache 웹 서버 시스템을 다루다보면 자주 접하게 되는 문제가 Apache 웹 서버의 재시작 문제입니다. 이것이 왜 문제가 되는가 하면, 재시작을 위해서는 Apache 웹 서버의 설정 파일들이 문제가 없는지에 대한 테스트가 선행되어야 하기 때문입니다. 다행스럽게도 Apache 는 설정 파일에 대한 적합성 테스트를 제공 합니다.
|
1 2 3 4 5 |
# Apache 웹 서버의 Configtest /usr/local/apache2/bin/httpd -t AH00112: Warning: DocumentRoot [/home/memolog/www] does not exist AH00112: Warning: DocumentRoot [/home/wpblog/www] does not exist Syntax OK |
만일 설정파일에 문제가 있다면 다음과 같이 됩니다.
|
1 2 3 4 5 6 7 8 |
# Apache 설정 파일에 문제가 있을때 출력 /usr/local/apache2/bin/httpd -t httpd: Syntax error on line 481 of /usr/local/apache2/conf/httpd.conf: Expected </IfModule> but saw </IfModul> # Apache 설정 파일에 문제가 있을때 출력2 /usr/local/apache2/bin/httpd -t AH00526: Syntax error on line 488 of /usr/local/apache2/conf/httpd.conf: Invalid command 'adlkjfl', perhaps misspelled or defined by a module not included in the server configuration |
Apache 웹 서버는 어떻게 설정 파일에 문법 체크를 하는 걸까? 1. server/main.c httpd 실행파일은 server/main.c 에서부터 만들어집니다. 이 파일에는 main() 함수가 존재하고 Switch 문으로 httpd 의 옵션들을 받도록 […]
CentOS 6 Xen 설치
CentOS 6을 사용하고 있다면 별다른 노력없이 Xen 가상화 서버를 구축할 수 있습니다. 현재(2014년 9월 19일) CentOS 의 최신 배포판은 6.5 입니다. 이 문서는 CentOS 6 Xen 설치에 관한 것 입니다. 1. Xen 패키지 저장소 활성화 Xen 가상화를 위해서 CentOS 6.5 에서는 Xen 가상화 패키지 설치를 쉽게할 수 있도록 저장소를 제공합니다. 이 저장소를 이용하기 위해서 다음과 같이 쉘 명령어를 입력해 줍니다.
|
1 2 |
# Xen 저장소 활성화를 위한 저장소 추가 yum install centos-release-xen |
2. xen 설치. 저장소를 활성화 했기 때문에 yum 으로 xen 을 설치할 수 있습니다.
|
1 2 |
# Xen 설치 yum install xen |
3. grub […]
CentOS 7 RabbitMQ 설치
RabbitMQ 는 AMQP(Advanced Message Queuing Protocol) 를 지원하는 메시징 큐 브로커 입니다. 큐(Queue) 자료구조의 동작방법 그대로 서버로서 역활을 하도록 만든 서버 입니다. CentOS 7 RabbitMQ 설치 방법을 설명 합니다. 1. EPEL 저장소 추가. RabbitMQ 는 Erlang 이라는 언어로 작성되었습니다. 따라서 이 패키지가 설치되어 있어야 하는데, CentOS 7 에서는 패키지로 제공하지 않습니다. 대신에 EPEL 저장소를 추가해서 사용 합니다.
|
1 2 3 4 |
# Epel 저장소 설치. yum install http://mirror.premi.st/epel/7/x86_64/e/epel-release-7-1.noarch.rpm # Erlang 을 설치 yum install erlang |
2. RabbitMQ 설치. 현재(2014년 9월 16일) RabbitMQ 서버의 최신 버전은 ‘3.3.5-1’ 입니다. 이를 설치 합니다.
|
1 2 3 4 5 6 7 8 |
# rpm 사인 키 추가. rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc # wget 을 이용해 최신의 rabbitmq 버전을 다운로드. wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server-3.3.5-1.noarch.rpm # yum 을 이용해서 rpm 패키지 설치. yum install rabbitmq-server-3.3.5-1.noarch.rpm |
3. Web Console 활성화. RabbitMQ 는 […]
Man 페이지 텍스트, PDF로 저장
Man 페이지 텍스트 파일로 저장.
|
1 |
man grep | col -b > grep.man |
Man 페이지 PDF 파일로 저장.
|
1 |
man -t grep | ps2pdf - > grep.pdf |
Man 페이지 HTML 파일로 저장. 먼저 패키지를 설치해야 합니다.
|
1 |
yum install man2html-core.x86_64 netpbm-progs.x86_64 psutils.x86_64 |
그리고 다음과 같이 해줍니다.
|
1 |
zcat /usr/share/man/man1/man.1.gz | groff -mandoc -Thtml > a.html |
Man Page 컬러로 보기
리눅스의 Man Page 는 컬러가 아닙니다. 흑백으로만 나옵니다. 중요한 내용에 컬러를 입히면 눈에 잘 들어올텐데, 이걸 가능하게 하는 방법입니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
]$ vim .bashrc man() { env \ LESS_TERMCAP_mb=$(printf "\e[1;31m") \ LESS_TERMCAP_md=$(printf "\e[1;31m") \ LESS_TERMCAP_me=$(printf "\e[0m") \ LESS_TERMCAP_se=$(printf "\e[0m") \ LESS_TERMCAP_so=$(printf "\e[1;44;33m") \ LESS_TERMCAP_ue=$(printf "\e[0m") \ LESS_TERMCAP_us=$(printf "\e[1;32m") \ man "$@" } |
‘source ~/.bashrc’ 를 해주면 바로 적용 됩니다. 그런데, xterm 을 사용하고 있다면 다음과 같이 .Xdefaults 에 다음과 같이 해줍니다.
|
1 2 3 4 |
*VT100.colorBDMode: true *VT100.colorBD: red *VT100.colorULMode: true *VT100.colorUL: cyan |
그리고 다음과 같이 적용을 해줍니다.
|
1 |
]$ xrdb -load ~/.Xdefaults |
출처: http://www.cyberciti.biz/faq/linux-unix-colored-man-pages-with-less-command/
Bash 패스워드 생성기.
쉘 스크립트에서 간단하게 패스워드를 생성할 수 있습니다.
|
1 2 3 4 5 6 7 8 |
]$ vim .bashrc genpasswd() { local l=$1 [ "$l" == "" ] && l=8 tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs } ]$ source .bashrc |
사용법은 다음과 같습니다.
|
1 |
genpasswd [자릿수] |
Python 3 설치
Python 3 설치. 현재 Python 2.x 버전이 2019년까지 수면을 연장했지만 이미 많은 모듈들이 2.x 버전에서 개발이 중단되거나 Python 3.x 를 지원하기 시작했다. 앞으로는 Python 2.x 를 개발하더라도 Python 3.x 와 호환을 고려해서 작성해야 한다. 1. Downloads and Unpack 다운로드는 Python 홈페이지에서 받는다.
|
1 2 3 |
wget https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz tar xvzf Python-3.4.1.tgz -C /usr/src |
2. Configure and Compile and Install
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
export LDFLAGS=-L/usr/lib64 export LINKCC="gcc" if pkg-config openssl ; then export CFLAGS="$CFLAGS `pkg-config --cflags openssl`" export LDFLAGS="$LDFLAGS `pkg-config --libs-only-L openssl`" fi export CHOST="x86_64-pc-linux-gnu" export CC=gcc ./configure --prefix=/usr/local/python3 --enable-shared --with-system-expat --with-signal-module --with-threads make make install |
3. 후속작업 설치한 후에 python3 을 실행하면 다음과 같이 실행이되지 않는다.
|
1 2 |
/usr/local/python3/bin/python3 /usr/local/python3/bin/python3: error while loading shared libraries: libpython3.4m.so.1.0: cannot open shared object file: No such file or directory |
공유라이브러리가 없기 때문에 나타나는 현상으로 다음과 같이 공유라이브러리를 인식시켜준다.
|
1 2 3 4 |
]# vim /etc/ld.so.conf.d/python3.conf /usr/local/python3/lib ldconfig |
KVM 의 Bridege 를 OpenvSwitch 로 바꾸기.
KVM은 리눅스 커널 기반의 가상화 시스템이다. KVM 을 이용하면 네트워크도 가상화를 해주는데, 이는 KVM 의 네트워크 가상화는 Bridege 네트워크를 이용하도록 되어 있다. 위 그림은 KVM 하이퍼바이저의 가상 네트워킹을 보여준다. 네트워크 가상화를 하이퍼바이저내에서 이루어지다보니 가상 시스템을 모아놓은 상태에서 전체 네트워킹을 설정하고 변경하기가 쉽지가 않게 된다. 가상 네트워킹을 관리하기 좀 더 쉽게 하이퍼바이저내에서 빼내서 가상 네트워킹을 가능하도록 한다면 어떨까. OpenvSwitch 가 이것을 가능하게 해준다. 1. 환경. CentOS 7 의 KVM 환경이다. OpenvSwitch 는 2.0 버전이며 이는 OpenStack IceHouse 패키지 저장소에 있는 것을 […]
Virtual networking in Linux.
이 포스트의 내용은 다음의 영문내용을 번역한 것 입니다. Virtual networking in Linux Virtual networking in Linux 플랫폼 가상화의 폭발적인 성장과 함께, 기업 생태계의 다른 부분이 가상화되고 있다는 건 놀라운 일이 아니다. 아주 최근에 영역은 가상 네트워킹(virtual networking) 이다. 플랫폼 가상화의 초기 구현은 가상 NIC 생성지만 오늘날에는 네트워크의 큰 부분들이 가상화되어지고 있는데, 서버의 VM 간에 통신을 지원하거나 서버간의 분산된 스위치같은 것들이다. 가상 네트워킹의 배경이되는, NIC 및 스위치 가상화에 초점을 맞춰, 아이디어를 설명한다. Computing today is undergoing something of a revival. 비록 […]