기본적으로 네트워크 부분이 eth0 등으로 부여되던 이름이 개별적인 이름으로 바뀌었음.
바뀌어도 너무 많이 바뀜.
1. ifconfig -> ip addr
ip 명령으로 바뀜. 물론 ifconfig 을 별도 설치할 수 있긴 함.
ifup / ifdown 은 그대로 존재하나, ip addr 을 통해 장치 이름 확인 후 그 장치 이름을 써야 함
2. 네트워크 설정 -> nmtui
이젠 기본으로 TUI 가 최소 설치에도 등장. 하지만 설치 방법은 매우 불편해짐.
3. service or chkconfig -> systemctl
service 가 존재하나 별도의 서비스들을 제어하려면 systemctl 로 해야함.
chkconfig 으로 등록하고 제어하던 시작 프로그램들 역시 systemctl 에서 제어함. 목록은 systemctl list-unit-files (기본값인 list-units 는 복잡함) 로 확인 가능.
4. iptables -> firewalld
기존에는 service stop iptables 로 서비스를 껐으나, 이젠 systemctl stop firewalled 로 끌 수 있음.
5. SELINUX
setenforce 로 SELINUX 을 제어하는 것은 동일. 하지만 설정 위치가 /etc/selinux 에서 /etc/selinux/config 으로 변경됨.
2015년 10월 15일 목요일
2015년 2월 9일 월요일
CentOS(RHEL 등) 에서 최신버전의 MySQL 설치
현재 가장 많이 사용하는 CentOS 6 에는 MySQL 5.1 이 기본 제공됩니다. 특성상 마이너 업그레이드가 진행되어도 MySQL 의 마이너 버전 업그레이드는 이루어지지 않습니다.
그럼, rpm 을 가져와서 설치하거나 소스 설치를 해야만 하는 걸까요?
그건 아닙니다. 친절하게도 yum repository 을 제공합니다.
아래 링크에서 각 메이저 버전에 맞는 repository rpm 을 제공합니다.
http://dev.mysql.com/downloads/repo/yum/
CentOS 6 (RHEL 6 등) 을 위한 파일은 아래와 같습니다.
http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
이를 설치하기 위해서는
yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
와 같이 바로 설치를 하면 됩니다. 이후 yum update 후 다시 mysql-server 을 설치하면 최신 버전의 MySQL 을 설치할 수 있습니다.
여담으로, MariaDB 대신에 MySQL 을 설치하는 이유는 MySQL Workbench 때문입니다. MariaDB 가 버전을 10.x 로 올려버리는 바람에 Workbench 에서 알 수 없는 버전이라고 하며 몇가지 기능을 사용할 수 없게 해버리기 때문입니다.
그럼, rpm 을 가져와서 설치하거나 소스 설치를 해야만 하는 걸까요?
그건 아닙니다. 친절하게도 yum repository 을 제공합니다.
아래 링크에서 각 메이저 버전에 맞는 repository rpm 을 제공합니다.
http://dev.mysql.com/downloads/repo/yum/
CentOS 6 (RHEL 6 등) 을 위한 파일은 아래와 같습니다.
http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
이를 설치하기 위해서는
yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
와 같이 바로 설치를 하면 됩니다. 이후 yum update 후 다시 mysql-server 을 설치하면 최신 버전의 MySQL 을 설치할 수 있습니다.
여담으로, MariaDB 대신에 MySQL 을 설치하는 이유는 MySQL Workbench 때문입니다. MariaDB 가 버전을 10.x 로 올려버리는 바람에 Workbench 에서 알 수 없는 버전이라고 하며 몇가지 기능을 사용할 수 없게 해버리기 때문입니다.
CentOS 에서 Locale, TimeZone 변경
Locale 변경
/etc/sysconfig/i18n 파일을 열어서 수정
TimeZone 변경
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
으로 타임존 설정을 복제하거나 심볼릭 링크
vi /etc/sysconfig/clock
에서
ZONE="Asia/Seoul"
UTC=False
로 변경
2014년 1월 6일 월요일
카카오팀의 MySQL 사용에 있어서 Linux Filesystem Cache 문제(메모리 먹는 하마2) 적용기
아래 내용을 적용해봤습니다.
http://kakaodbe.blogspot.kr/2013/09/mysql-linux-filesystem-cache-2.html
KT UCloudBiz 서비스를 이용중이고, CentOS 6.4 적용중입니다. 기본 서버 환경이기 때문에 몇 가지 프로그램과 라이브러리가 필요합니다.
$ yum install gcc perl-Inline perl-Parse-RecDescent
그리고 적용할 소스를 가져옵니다.
$ wget https://raw.github.com/yoshinorim/unmap_mysql_logs/master/unmap_mysql_logs
$ chmod +x unmap_mysql_logs
$ ./unmap_mysql_logs
unmap_mysql_logs 파일에 설정내용이 들어있으므로, 에러 발생 시 설정 내용을 변경해줘야 합니다.
예1)
readdir() attempted on invalid dirhandle DIR at ./unmap_mysql_logs line 36.
이 오류는 32 라인에서 $binlog_name 값을 shift 라고 정의하고 24 라인에서 디렉토리값을 추가로 지정해놔서 발생하는 오류입니다.
my @target_dirs = ( '/var/lib/mysql', '/var/lib/mysql/innodb_logs' );
...
my $binlog_name = shift;
...
위의 두 값을
my @target_dirs = ( '/var/lib/mysql' );
...
my $binlog_name = "logbin";
...
와 같이 변경해주면 됩니다. 저의 경우 my.cnf 에서 log-bin=galera 으로 설정해놓았기 때문에 아래 값은 logbin 이 아니라 galera 로 설정하였습니다.
http://kakaodbe.blogspot.kr/2013/09/mysql-linux-filesystem-cache-2.html
KT UCloudBiz 서비스를 이용중이고, CentOS 6.4 적용중입니다. 기본 서버 환경이기 때문에 몇 가지 프로그램과 라이브러리가 필요합니다.
$ yum install gcc perl-Inline perl-Parse-RecDescent
그리고 적용할 소스를 가져옵니다.
$ wget https://raw.github.com/yoshinorim/unmap_mysql_logs/master/unmap_mysql_logs
$ chmod +x unmap_mysql_logs
$ ./unmap_mysql_logs
unmap_mysql_logs 파일에 설정내용이 들어있으므로, 에러 발생 시 설정 내용을 변경해줘야 합니다.
예1)
readdir() attempted on invalid dirhandle DIR at ./unmap_mysql_logs line 36.
이 오류는 32 라인에서 $binlog_name 값을 shift 라고 정의하고 24 라인에서 디렉토리값을 추가로 지정해놔서 발생하는 오류입니다.
my @target_dirs = ( '/var/lib/mysql', '/var/lib/mysql/innodb_logs' );
...
my $binlog_name = shift;
...
위의 두 값을
my @target_dirs = ( '/var/lib/mysql' );
...
my $binlog_name = "logbin";
...
와 같이 변경해주면 됩니다. 저의 경우 my.cnf 에서 log-bin=galera 으로 설정해놓았기 때문에 아래 값은 logbin 이 아니라 galera 로 설정하였습니다.
2014년 1월 5일 일요일
Ubuntu 에 MariaDB 5.5 & Galera Cluster 설치
MariaDB 5.5 설치를 위한 사전 작업은 아래 링크를 참고합니다.
https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=Ubuntu&distro_release=saucy&version=5.5
https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/mariadb-5.5.33/repo/ubuntu saucy main'
한국 미러는 kaist 서버 밖에 존재하지 않는 것 같습니다. 매우 고마운 서버이긴 하나 좀 느리다는게 단점이라면 단점입니다.
$ sudo apt-get update
$ sudo apt-get install mariadb-galera-server
mariadb-galera-server 를 설치합니다. mariadb-galera-server 에 mariadb-server 가 포함되어 있는 형태인 것 같습니다. CentOS 처럼 각각 설치하는 방식이 아닙니다. 설치 도중 MariaDB 에서 사용할 root 패스워드를 물어봅니다. CentOS 와는 달리 설치 스크립트에서 mysql_install_db 를 실행해서 DB 도 만들어둡니다. 별도의 디스크에 datadir 을 만들꺼라면 복사를 하거나 새로 mysql_install_db 을 실행해야 합니다.
insert 성능 향상을 위해 TokuDB 을 사용합니다. 5.5.34 이상의 버젼이라면 이미 포함되어 있으므로 아래 링크와 같이 별도 설치를 할 필요는 없습니다. 단지, /etc/mysql/conf.d/tokudb.cnf 에 있는 주석만 해제해주면 됩니다.
https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/
Multi-Thread 에서의 성능향상을 위해 jemalloc 을 설치하고 적용합니다. 이미 Ubuntu 버젼의 MariaDB 5.5 는 jemalloc 을 적용해서 complie 되어 있다고 합니다.
$ sudo apt-get install libjemalloc1
$ sudo vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
mysql 을 재시작한 뒤 jemalloc 이 제대로 연동되었는지에 대한 확인은 아래와 같이 합니다.
$ sudo pmap `pidof mysqld` | grep jemalloc
https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist&distro=Ubuntu&distro_release=saucy&version=5.5
https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/mariadb-5.5.33/repo/ubuntu saucy main'
한국 미러는 kaist 서버 밖에 존재하지 않는 것 같습니다. 매우 고마운 서버이긴 하나 좀 느리다는게 단점이라면 단점입니다.
$ sudo apt-get update
$ sudo apt-get install mariadb-galera-server
mariadb-galera-server 를 설치합니다. mariadb-galera-server 에 mariadb-server 가 포함되어 있는 형태인 것 같습니다. CentOS 처럼 각각 설치하는 방식이 아닙니다. 설치 도중 MariaDB 에서 사용할 root 패스워드를 물어봅니다. CentOS 와는 달리 설치 스크립트에서 mysql_install_db 를 실행해서 DB 도 만들어둡니다. 별도의 디스크에 datadir 을 만들꺼라면 복사를 하거나 새로 mysql_install_db 을 실행해야 합니다.
insert 성능 향상을 위해 TokuDB 을 사용합니다. 5.5.34 이상의 버젼이라면 이미 포함되어 있으므로 아래 링크와 같이 별도 설치를 할 필요는 없습니다. 단지, /etc/mysql/conf.d/tokudb.cnf 에 있는 주석만 해제해주면 됩니다.
https://mariadb.com/kb/en/how-to-enable-tokudb-in-mariadb/
Multi-Thread 에서의 성능향상을 위해 jemalloc 을 설치하고 적용합니다. 이미 Ubuntu 버젼의 MariaDB 5.5 는 jemalloc 을 적용해서 complie 되어 있다고 합니다.
$ sudo apt-get install libjemalloc1
$ sudo vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
mysql 을 재시작한 뒤 jemalloc 이 제대로 연동되었는지에 대한 확인은 아래와 같이 합니다.
$ sudo pmap `pidof mysqld` | grep jemalloc
2014년 1월 4일 토요일
CentOS 6.4 에서 jemalloc 설치 및 MariaDB 5.5 적용
yum 으로 간단하게 jemalloc 설치합니다. EPEL 저장소에 존재하므로 EPEL 저장소 연결은 먼저 해두어야 합니ㅏㄷ.
# yum install jemalloc
pmap 으로 jemalloc 이 적용되었는지 확인할 수 있습니다.
# pmap `pidof mysqld` | grep jemalloc
설치만 한 상태라면 아무런 결과가 나오지 않아야 정상입니다..
mysqld 실행 스크립트를 수정하여 mysqld 에만 jemalloc 이 이용되도록 수정합니다.
# vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
# service mysql stop
# service mysql start --wsrep_cluster_address='gcomm://'
지금 MariaDB 5.5 에 Galera Cluster 을 연결해서 사용중인 서버이고, 메인 서버에 적용하는 것이라서 --wsrep_cluster_address 옵션을 이용해서 새로운 클러스터임을 알려줍니다. (필요없으면 지우고 실행)
pmap 으로 jemalloc 이 적용되었는지 다시 확인
# pmap `pidof mysqld` | grep jemalloc
뭔가 결과가 나와야 정상
# yum install jemalloc
pmap 으로 jemalloc 이 적용되었는지 확인할 수 있습니다.
# pmap `pidof mysqld` | grep jemalloc
설치만 한 상태라면 아무런 결과가 나오지 않아야 정상입니다..
mysqld 실행 스크립트를 수정하여 mysqld 에만 jemalloc 이 이용되도록 수정합니다.
# vi /usr/bin/mysqld_safe
19 라인 정도에 위치한
mysqld_ld_preload=
에 jemalloc 라이브러리를 연결해줍니다.
mysqld_ld_preload=/usr/lib64/libjemalloc.so.1
# service mysql stop
# service mysql start --wsrep_cluster_address='gcomm://'
지금 MariaDB 5.5 에 Galera Cluster 을 연결해서 사용중인 서버이고, 메인 서버에 적용하는 것이라서 --wsrep_cluster_address 옵션을 이용해서 새로운 클러스터임을 알려줍니다. (필요없으면 지우고 실행)
pmap 으로 jemalloc 이 적용되었는지 다시 확인
# pmap `pidof mysqld` | grep jemalloc
뭔가 결과가 나와야 정상
2013년 11월 5일 화요일
Ubuntu 기준 samba(smb) 설정
Ubuntu 13.10 설치된 머신에 samba 을 설치해서 Windows 와 파일을 쉽게 주고받을 수 있도록 하겠습니다.
apt-get 을 이용해서 설치를 진행합니다.
# sudo apt-get install samba
samba 와 관련된 프로그램들이 설치될 것입니다.
먼저 기본 설정파일을 백업합니다.
# sudo cp /etc/samba/smb.conf /etc/samba/smb.conf-dist
그리고 에디터로 수정합니다.
# sudo vi /etc/samba/smb.conf
아래 부분을 주석해제 해보도록 하겠습니다.
# security = user
...
(중략)
...
;[homes]
; comment = Home Directories
; browseable = no
...
; valid users = %S
smb.conf 파일은 주석으로 샵(#)과 세미콜론(;) 모두를 사용할 수 있네요.
samba 는 Linux 의 계정을 그대로 사용합니다. 하지만, 기존 계정의 패스워드를 그대로 사용하지 않고 별도로 관리합니다. 그래서 사용할 계정의 패스워드를 등록해야 합니다.
# smbpasswd - a (사용자계정)
입력 후 samba 연결할 비밀번호를 입력하면 네트워크 연결 시 사용자계정을 아이디로, 등록한 비밀번호를 비밀번호로 이용할 수 있습니다. Linux 계정과 별도로 관리되므로 보안상 좀 더 좋은 측면도 있습니다.
설정 파일을 저장하고 패스워드를 생성하였으면 samba 을 재시작해줍니다. samba 는 nmbd 와 smbd 을 이용하는데, /etc/init.d/samba 는 이 두 개의 daemon 을 끄고 켜주는 스크립트입니다.
# sudo service samba restart
이제 동일한 네트워크 대역에 있는 PC 에서 네트워크를 열어보면 머신의 이름이 보일 것입니다. 윈도우즈의 로그인 계정의 아이디와 패스워드가 Linux 계정과 동일하다면 별도의 로그인 없이 로그인 됩니다.
공유된 폴더는 Linux 의 사용자 계정 홈디렉토리(~/)입니다.
간혹 설정이 잘 적용이 안된다 싶으면 smbd 와 nmbd 을 직접 껏다 켜줍니다.
# sudo service smbd stop
# sudo service nmbd stop
# sudo service nmbd start
# sudo service smbd start
기본 설정으로 사용자 홈디렉토리를 공유하도록 설정했습니다. 이 때 주의할 점이 있는데, 윈도우즈에서 폴더를 접근할 때 계정 정보를 물어보는데, samba 는 이 계정이 로그인되면 해당 사용자 계정으로 새로운 Thread 을 만들어서 작업을 처리하기 때문에 각 사용자별로 하나의 공유 디렉토리를 바라보게 하려면 사용자의 기본 group 을 sambashare 로 변경한 뒤 group 에 모든 권한을 제공해야 합니다.
하지만, 현재 버젼에서는 group 권한을 별도로 지정해줄 수 없기 때문에 조금 귀찮은 일이 발생합니다. 여기에 대해서는 각자 고민해서 권한을 주어야 하겠습니다.
저의 경우 아래와 같이 공유 디렉토리를 만든 뒤, 해당 디렉토리를 제어할 그룹을 사용자 그룹에 지정해줬습니다. Plex Media Server 을 쓰는 관계로 plex 라는 그룹을 이용할 계획입니다.
Plex Media Server 을 설치하면서 plex 계정이 이미 생성된 상태이기 때문에 따로 계정 추가 작업은 진행하지 않습니다. 그래도 smbpasswd 로 samba 에서 사용할 비밀번호는 설정해줘야 합니다.
# smbpasswd -a plex
# usermod -g plex zepinos
# usermod -aG zepinos zepinos
-aG 옵션은 사용자에게 그룹을 추가(가입)하는 것입니다. plex 로 기본그룹을 옮기면서 기존의 그룹(사용자계정 생성시 기본적으로 사용자 아이디와 동일한 그룹이 생성되어 기본그룹으로 사용)에서 제거(해지)가 되는데, 기존의 프로그램 등에 영향을 미칠 수 있으므로 /etc/group 에 수동으로 추가시켜 주거나 위 옵션으로 groups 에는 다시 추가를 시켜주는게 좋습니다.
마지막으로 변경된 기본그룹을 확인해봅니다.
# id zepinos
uid=1000(zepinos) gid=114(plex) 그룹들=114(plex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),1000(zepinos),111(lpadmin),112(sambashare)
이제 /media/plex 디렉토리를 하나 만들어준 뒤 smb.conf 파일에 아래와 같이 기술합니다. 그리고 위에서 [homes] 의 주석해제한 부분을 모두 주석처리 합니다.
[plex]
comment = Plex Media Server
browseable = yes
path = /media/plex
read only = no
writable = yes
create mask = 0700
directory mask = 0700
valid users = plex
plex 계정만 접속할 수 있고, 기본 디렉토리는 /media/plex 입니다. smbd 와 nmbd 을 재시작한 뒤 plex 계정으로 로그인하면 공유 디렉토리를 이용할 수 있게 됩니다.
1. samba 설치
apt-get 을 이용해서 설치를 진행합니다.
# sudo apt-get install samba
samba 와 관련된 프로그램들이 설치될 것입니다.
2. 설정 파일 수정
먼저 기본 설정파일을 백업합니다.
# sudo cp /etc/samba/smb.conf /etc/samba/smb.conf-dist
그리고 에디터로 수정합니다.
# sudo vi /etc/samba/smb.conf
아래 부분을 주석해제 해보도록 하겠습니다.
# security = user
...
(중략)
...
;[homes]
; comment = Home Directories
; browseable = no
...
; valid users = %S
smb.conf 파일은 주석으로 샵(#)과 세미콜론(;) 모두를 사용할 수 있네요.
3. 패스워드 생성
samba 는 Linux 의 계정을 그대로 사용합니다. 하지만, 기존 계정의 패스워드를 그대로 사용하지 않고 별도로 관리합니다. 그래서 사용할 계정의 패스워드를 등록해야 합니다.
# smbpasswd - a (사용자계정)
입력 후 samba 연결할 비밀번호를 입력하면 네트워크 연결 시 사용자계정을 아이디로, 등록한 비밀번호를 비밀번호로 이용할 수 있습니다. Linux 계정과 별도로 관리되므로 보안상 좀 더 좋은 측면도 있습니다.
4. samba 서비스 시작
설정 파일을 저장하고 패스워드를 생성하였으면 samba 을 재시작해줍니다. samba 는 nmbd 와 smbd 을 이용하는데, /etc/init.d/samba 는 이 두 개의 daemon 을 끄고 켜주는 스크립트입니다.
# sudo service samba restart
이제 동일한 네트워크 대역에 있는 PC 에서 네트워크를 열어보면 머신의 이름이 보일 것입니다. 윈도우즈의 로그인 계정의 아이디와 패스워드가 Linux 계정과 동일하다면 별도의 로그인 없이 로그인 됩니다.
공유된 폴더는 Linux 의 사용자 계정 홈디렉토리(~/)입니다.
간혹 설정이 잘 적용이 안된다 싶으면 smbd 와 nmbd 을 직접 껏다 켜줍니다.
# sudo service smbd stop
# sudo service nmbd stop
# sudo service nmbd start
# sudo service smbd start
5. [homes] 사용시 주의점
기본 설정으로 사용자 홈디렉토리를 공유하도록 설정했습니다. 이 때 주의할 점이 있는데, 윈도우즈에서 폴더를 접근할 때 계정 정보를 물어보는데, samba 는 이 계정이 로그인되면 해당 사용자 계정으로 새로운 Thread 을 만들어서 작업을 처리하기 때문에 각 사용자별로 하나의 공유 디렉토리를 바라보게 하려면 사용자의 기본 group 을 sambashare 로 변경한 뒤 group 에 모든 권한을 제공해야 합니다.
하지만, 현재 버젼에서는 group 권한을 별도로 지정해줄 수 없기 때문에 조금 귀찮은 일이 발생합니다. 여기에 대해서는 각자 고민해서 권한을 주어야 하겠습니다.
저의 경우 아래와 같이 공유 디렉토리를 만든 뒤, 해당 디렉토리를 제어할 그룹을 사용자 그룹에 지정해줬습니다. Plex Media Server 을 쓰는 관계로 plex 라는 그룹을 이용할 계획입니다.
Plex Media Server 을 설치하면서 plex 계정이 이미 생성된 상태이기 때문에 따로 계정 추가 작업은 진행하지 않습니다. 그래도 smbpasswd 로 samba 에서 사용할 비밀번호는 설정해줘야 합니다.
# smbpasswd -a plex
# usermod -g plex zepinos
# usermod -aG zepinos zepinos
-aG 옵션은 사용자에게 그룹을 추가(가입)하는 것입니다. plex 로 기본그룹을 옮기면서 기존의 그룹(사용자계정 생성시 기본적으로 사용자 아이디와 동일한 그룹이 생성되어 기본그룹으로 사용)에서 제거(해지)가 되는데, 기존의 프로그램 등에 영향을 미칠 수 있으므로 /etc/group 에 수동으로 추가시켜 주거나 위 옵션으로 groups 에는 다시 추가를 시켜주는게 좋습니다.
마지막으로 변경된 기본그룹을 확인해봅니다.
# id zepinos
uid=1000(zepinos) gid=114(plex) 그룹들=114(plex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),1000(zepinos),111(lpadmin),112(sambashare)
이제 /media/plex 디렉토리를 하나 만들어준 뒤 smb.conf 파일에 아래와 같이 기술합니다. 그리고 위에서 [homes] 의 주석해제한 부분을 모두 주석처리 합니다.
[plex]
comment = Plex Media Server
browseable = yes
path = /media/plex
read only = no
writable = yes
create mask = 0700
directory mask = 0700
valid users = plex
plex 계정만 접속할 수 있고, 기본 디렉토리는 /media/plex 입니다. smbd 와 nmbd 을 재시작한 뒤 plex 계정으로 로그인하면 공유 디렉토리를 이용할 수 있게 됩니다.
2013년 11월 4일 월요일
ubuntu 기준 hdd 추가
ESXi 에 설치되어 있던 Linux 을 거하게 날려먹었습니다.. 물리HDD 을 변경하려고 작업하다가...크헉~!
새로 설치하고 있습니다만, 역시나 자주 쓰는 시스템이 아니고, X Window 을 설치하지 않았기 때문에 명령어를 기억하고 있지 못해서 더듬더듬 하고 있습니다. 이 기회에 기록을 남겨놔야겠네요.
# sudo fdisk -l
보통 마지막에 아래와 같은 문가가 뜨면 아직 파티셔닝 하지 않은 디스크가 존재한다는 의미(즉, 새 디스크일 가능성이 큼)이니 이 디스크를 작업해주면 됩니다. 여기서는 /dev/sdb 가 새 장치겠네요.
Disk /dev/sdb doesn't contain a valid partition table
리눅스에서 파티션을 생성하겠습니다.
$ sudo fdisk /dev/sdb
위 명령을 실행한 뒤 n > p > 1 > (Enter) > (Enter) 순으로 누릅니다. 이후 p 을 눌러서 내용을 확인합니다. 출력된 내용에 /dev/sdb1 이 보인다면 성공입니다.
w 을 눌러서 저장합니다.
최신 리눅스의 기본 파티션 타입인 ext4 로 작업하겠습니다. xfs 를 예전에 사용해봤으나 성능차이나 안정성 따윈...점차 귀찮아져서 생각 안하게 되네요.
# sudo mkfs.ext4 /dev/sdb1
조금 기다리시면 포맷이 완료됩니다.
생성된 디스크가 잘 붙는지 확인해봅니다.
$ sudo mount /dev/sdb1 /mnt
아무런 메세지 없이 잘 붙는다면 아래와 같은 명령어로 용량 확인을 해 봅니다.
$ df -h
물론 mount 명령으로 잘 연결됐는지 확인도 가능합니다.
$ mount
...
/dev/sdb1 on /mnt type ext4 (rw)
말줄임표(...)는 위에 나온 내용들이 길어서 넣은 것입니다. 마지막에 mount 한 것이 잘 보이네요.
umount 명령으로 다시 해제해줍니다. 단 mount 되어 있는 디렉토리에 존재할 경우 umount 명령이 제대로 실행되지 않으니, 루트(/) 경로로 이동한 뒤 umount 을 시도해보세요.
$ sudo umount /dev/sdb1
UUID 란 유니크(Unique)한 UID 을 의미합니다. 즉, 고유한 값을 의미하는 것인데, 요즘은 이 UUID 을 이용해서 mount 하는 추세입니다. 왜냐하면 장치 연결이 많이지면서 같은 장치명에 여러개의 장치가 번갈아가면서 잡히게 되면 골치아픈 일이 생기기 때문입니다.
아래 명령으로 추가한 장치의 UUID 가 무엇인지 확인해봅시다.
$ ls -l /dev/disk/by-uuid/
합계 0
lrwxrwxrwx 1 root root 10 11월 4 15:17 1416d714-a348-420d-88a4-d3643116999d -> ../../sda5
lrwxrwxrwx 1 root root 10 11월 4 15:17 866b5285-3103-4d49-a5de-0db96c4b46b4 -> ../../sda2
lrwxrwxrwx 1 root root 10 11월 4 15:32 a1fd40c6-e10a-4cf3-ac90-6ab2c97818c0 -> ../../sdb1
결과를 보니 a1fd40c6-e10a-4cf3-ac90-6ab2c97818c0 가 새롭게 추가된 디스크의 UUID 네요. 이를 기록해둡니다.
시스템 부팅 시 /etc/fstab 의 내용을 참고하여 mount 을 시도합니다. mount 명령과는 약간 문법이 다르니 주의하세요. 이미 /dev/sda1 (저의 경우 파티션 수동 설정을 하느라 /dev/sda2 로 잡혀있습니다) 의 정보가 기술되어 있으니 이를 복사하셔서 적당히 수정하셔도 됩니다. 저의 경우 아래와 같이 수정하였습니다.
$ sudo vi /etc/fstab
...
# /tmp was on /dev/sda2
UUID=a1fd40c6-e10a-4cf3-ac90-6ab2c97818c0 /mnt ext4 errors=remount-ro 0 1
위의 문장들을 참고하여 주석과 함께 내용을 추가하였습니다. /mnt 가 아닌 다른 위치에서 이용하시려면 /mnt 대신에 해당 경로를 작성하시면 됩니다. 이 때 해당경로는 이미 디렉토리로 생성이 되어 있어야 하며, 소유권 설정도 원하는 형태대로 설정해야 합니다.
재시작하거나 mount 명령으로 mount 을 확인해보세요.
$ sudo mount -a
이상입니다.
새로 설치하고 있습니다만, 역시나 자주 쓰는 시스템이 아니고, X Window 을 설치하지 않았기 때문에 명령어를 기억하고 있지 못해서 더듬더듬 하고 있습니다. 이 기회에 기록을 남겨놔야겠네요.
1. 디스크 추가 확인
# sudo fdisk -l
보통 마지막에 아래와 같은 문가가 뜨면 아직 파티셔닝 하지 않은 디스크가 존재한다는 의미(즉, 새 디스크일 가능성이 큼)이니 이 디스크를 작업해주면 됩니다. 여기서는 /dev/sdb 가 새 장치겠네요.
Disk /dev/sdb doesn't contain a valid partition table
2. 디스크 파티셔닝
리눅스에서 파티션을 생성하겠습니다.
$ sudo fdisk /dev/sdb
위 명령을 실행한 뒤 n > p > 1 > (Enter) > (Enter) 순으로 누릅니다. 이후 p 을 눌러서 내용을 확인합니다. 출력된 내용에 /dev/sdb1 이 보인다면 성공입니다.
w 을 눌러서 저장합니다.
3. 추가된 디스크 format
최신 리눅스의 기본 파티션 타입인 ext4 로 작업하겠습니다. xfs 를 예전에 사용해봤으나 성능차이나 안정성 따윈...점차 귀찮아져서 생각 안하게 되네요.
# sudo mkfs.ext4 /dev/sdb1
조금 기다리시면 포맷이 완료됩니다.
4. 마운트 테스트
생성된 디스크가 잘 붙는지 확인해봅니다.
$ sudo mount /dev/sdb1 /mnt
아무런 메세지 없이 잘 붙는다면 아래와 같은 명령어로 용량 확인을 해 봅니다.
$ df -h
물론 mount 명령으로 잘 연결됐는지 확인도 가능합니다.
$ mount
...
/dev/sdb1 on /mnt type ext4 (rw)
말줄임표(...)는 위에 나온 내용들이 길어서 넣은 것입니다. 마지막에 mount 한 것이 잘 보이네요.
umount 명령으로 다시 해제해줍니다. 단 mount 되어 있는 디렉토리에 존재할 경우 umount 명령이 제대로 실행되지 않으니, 루트(/) 경로로 이동한 뒤 umount 을 시도해보세요.
$ sudo umount /dev/sdb1
5. 추가된 디스크의 UUID 확인
UUID 란 유니크(Unique)한 UID 을 의미합니다. 즉, 고유한 값을 의미하는 것인데, 요즘은 이 UUID 을 이용해서 mount 하는 추세입니다. 왜냐하면 장치 연결이 많이지면서 같은 장치명에 여러개의 장치가 번갈아가면서 잡히게 되면 골치아픈 일이 생기기 때문입니다.
아래 명령으로 추가한 장치의 UUID 가 무엇인지 확인해봅시다.
$ ls -l /dev/disk/by-uuid/
합계 0
lrwxrwxrwx 1 root root 10 11월 4 15:17 1416d714-a348-420d-88a4-d3643116999d -> ../../sda5
lrwxrwxrwx 1 root root 10 11월 4 15:17 866b5285-3103-4d49-a5de-0db96c4b46b4 -> ../../sda2
lrwxrwxrwx 1 root root 10 11월 4 15:32 a1fd40c6-e10a-4cf3-ac90-6ab2c97818c0 -> ../../sdb1
결과를 보니 a1fd40c6-e10a-4cf3-ac90-6ab2c97818c0 가 새롭게 추가된 디스크의 UUID 네요. 이를 기록해둡니다.
6. /etc/fstab 에 추가하기
시스템 부팅 시 /etc/fstab 의 내용을 참고하여 mount 을 시도합니다. mount 명령과는 약간 문법이 다르니 주의하세요. 이미 /dev/sda1 (저의 경우 파티션 수동 설정을 하느라 /dev/sda2 로 잡혀있습니다) 의 정보가 기술되어 있으니 이를 복사하셔서 적당히 수정하셔도 됩니다. 저의 경우 아래와 같이 수정하였습니다.
$ sudo vi /etc/fstab
...
# /tmp was on /dev/sda2
UUID=a1fd40c6-e10a-4cf3-ac90-6ab2c97818c0 /mnt ext4 errors=remount-ro 0 1
위의 문장들을 참고하여 주석과 함께 내용을 추가하였습니다. /mnt 가 아닌 다른 위치에서 이용하시려면 /mnt 대신에 해당 경로를 작성하시면 됩니다. 이 때 해당경로는 이미 디렉토리로 생성이 되어 있어야 하며, 소유권 설정도 원하는 형태대로 설정해야 합니다.
재시작하거나 mount 명령으로 mount 을 확인해보세요.
$ sudo mount -a
이상입니다.
2013년 10월 28일 월요일
lftp 사용법
리눅스에서 command line 용 ftp client 로 현재 많이 쓰이고 있는 것은 ncftp 를 넘어선 lftp 일 것입니다. 많은 기능을 제공하고 있습니다.
lftp
단순히 lftp 을 실행해도 큰 문제는 없습니다.
lftp -u [사용자아이디] [서버주소]
사용자 아이디와 서버주소를 명시해서 바로 접속을 시도할 수 있습니다. FTP over TLS 등이 적용된 서버에는 접속하기 힘든데, -c 옵션이나 -e 옵션으로 명령을 추가해서 접속할 수 있습니다.
sudo lftp
일반 계정으로 접속할 수 없는 곳에서 파일을 보내거나 받을 때에는 미리 sudo 로 관리자 권한으로 실행해야 합니다.
FTP over TLS 로 구성된 서버에 접속하거나 Encoding 등을 수정으로 잡아줘야 할 경우 미리 설정을 할 수 있습니다.
set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ssl:verify-certificate no
FTP over TLS 로 접속할 때 사전 작업으로 위의 다섯가지 정도를 이용할 수 있습니다. CCC 을 이용한다면 ssl-protect-data 는 no 로 해도 되겠습니다.
아래와 같은 몇 가지 방법으로 접속이 가능합니다.
connect -u [사용자아이디] [서버주소]
위 방법으로 접속할 경우 비밀번호를 물어봅니다.
connect -u '[사용자아이디]:[비밀번호]' [서버주소]
위 방법과 같이 접속할 경우 비밀번호를 한꺼번에 입력해서 접속할 수 있습니다. 단, 히스토리에 비밀번호가 남아있게 되므로 보안상 매우 취약하므로 가급적 사용하지 않아야 하겠습니다. 그리고 아이디와 비밀번호 앞뒤로 따옴표를 이용함으로써 특수문자 등을 내용에 포함시킬 때 문제가 일어나지 않게 할 수 있습니다.
connect [서버주소]
login [사용자아이디]
위 방법으로 서버 접속과 로그인을 별개로 처리할 수도 있습니다.
이 외에도 많은 방법을 제공합니다.
ftp 에서는 두 개의 디렉토리가 존재합니다. 바로 로컬(Local)과 리모트(Remote)인데, 기본적으로 리모트가 기본입니다. 즉, 접속한 서버가 기준이라는 것이죠. 그래서 리눅스 명령어와 같은 형태로 이동을 하게 되면 리모트의 경로가 변경됩니다. 로컬의 경우 앞에 l 을 붙여주면 일반적으로 로컬 이동 명령이 됩니다.
그리고, lftp 는 Tab 키를 지원합니다. 경로가 애매하거나 할 때에는 언제나 Tab 키를 눌러서 자동완성을 할 수 있으니 적극 이용해보세요.
cd /tmp
pwd
ls
위와 같이 일반적인 ftp 명령어는 리모트의 정보를 처리합니다.
lcd /tmp
lpwd
위와 같이 l 이 앞에 붙어있는 ftp 명령어는 로컬의 정보를 처리합니다. ! 명령으로 잠시 쉘로 나가서 경로 이동을 한 뒤 exit 로 돌아오는 방법도 추천됩니다.
기타 명령어는 help 을 입력하면 볼 수 있습니다.
lftp 의 꽃이라고 할 수 있는 미러링 기능입니다. 정해진 대상을 그대로 복사할 때 사용할 수 있습니다. 기본적으로는 리모트의 자료를 로컬로 가져올 때 사용합니다. -R 옵션을 사용하면 로컬의 자료를 리모트로 전송할 수도 있습니다.
미러링이라고 해서 원본의 자료가 삭제되면 원격지의 자료도 삭제되거나 하지는 않습니다. ftp 의 경우 파일 대상으로만 복사를 하기 때문에 이 미러링의 기능으로 디렉토리 복사를 하기 위해 많이 사용합니다.
mirror [리모트복사대상물] [로컬위치]
mirror -R [로컬복사대상물] [원격지위치]
lftp 는 백그라운드 작업을 지원합니다.
ctrl+z 를 눌러 작업을 백그라운드로 이동시킬 수 있습니다.
jobs
명령으로 현재 백그라운드에 존재하는 작업을 조회할 수 있습니다.
wait
위의 명령으로 백그라운드 작업을 포그라운드로 가져올 수 있습니다.
1. 시작
lftp
단순히 lftp 을 실행해도 큰 문제는 없습니다.
lftp -u [사용자아이디] [서버주소]
사용자 아이디와 서버주소를 명시해서 바로 접속을 시도할 수 있습니다. FTP over TLS 등이 적용된 서버에는 접속하기 힘든데, -c 옵션이나 -e 옵션으로 명령을 추가해서 접속할 수 있습니다.
sudo lftp
일반 계정으로 접속할 수 없는 곳에서 파일을 보내거나 받을 때에는 미리 sudo 로 관리자 권한으로 실행해야 합니다.
2. 사전 작업
FTP over TLS 로 구성된 서버에 접속하거나 Encoding 등을 수정으로 잡아줘야 할 경우 미리 설정을 할 수 있습니다.
set ftp:ssl-auth TLS
set ftp:ssl-force true
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ssl:verify-certificate no
FTP over TLS 로 접속할 때 사전 작업으로 위의 다섯가지 정도를 이용할 수 있습니다. CCC 을 이용한다면 ssl-protect-data 는 no 로 해도 되겠습니다.
3. 접속
아래와 같은 몇 가지 방법으로 접속이 가능합니다.
connect -u [사용자아이디] [서버주소]
위 방법으로 접속할 경우 비밀번호를 물어봅니다.
connect -u '[사용자아이디]:[비밀번호]' [서버주소]
위 방법과 같이 접속할 경우 비밀번호를 한꺼번에 입력해서 접속할 수 있습니다. 단, 히스토리에 비밀번호가 남아있게 되므로 보안상 매우 취약하므로 가급적 사용하지 않아야 하겠습니다. 그리고 아이디와 비밀번호 앞뒤로 따옴표를 이용함으로써 특수문자 등을 내용에 포함시킬 때 문제가 일어나지 않게 할 수 있습니다.
connect [서버주소]
login [사용자아이디]
위 방법으로 서버 접속과 로그인을 별개로 처리할 수도 있습니다.
이 외에도 많은 방법을 제공합니다.
4. 디렉토리 이동
ftp 에서는 두 개의 디렉토리가 존재합니다. 바로 로컬(Local)과 리모트(Remote)인데, 기본적으로 리모트가 기본입니다. 즉, 접속한 서버가 기준이라는 것이죠. 그래서 리눅스 명령어와 같은 형태로 이동을 하게 되면 리모트의 경로가 변경됩니다. 로컬의 경우 앞에 l 을 붙여주면 일반적으로 로컬 이동 명령이 됩니다.
그리고, lftp 는 Tab 키를 지원합니다. 경로가 애매하거나 할 때에는 언제나 Tab 키를 눌러서 자동완성을 할 수 있으니 적극 이용해보세요.
cd /tmp
pwd
ls
위와 같이 일반적인 ftp 명령어는 리모트의 정보를 처리합니다.
lcd /tmp
lpwd
위와 같이 l 이 앞에 붙어있는 ftp 명령어는 로컬의 정보를 처리합니다. ! 명령으로 잠시 쉘로 나가서 경로 이동을 한 뒤 exit 로 돌아오는 방법도 추천됩니다.
기타 명령어는 help 을 입력하면 볼 수 있습니다.
5. 미러링
lftp 의 꽃이라고 할 수 있는 미러링 기능입니다. 정해진 대상을 그대로 복사할 때 사용할 수 있습니다. 기본적으로는 리모트의 자료를 로컬로 가져올 때 사용합니다. -R 옵션을 사용하면 로컬의 자료를 리모트로 전송할 수도 있습니다.
미러링이라고 해서 원본의 자료가 삭제되면 원격지의 자료도 삭제되거나 하지는 않습니다. ftp 의 경우 파일 대상으로만 복사를 하기 때문에 이 미러링의 기능으로 디렉토리 복사를 하기 위해 많이 사용합니다.
mirror [리모트복사대상물] [로컬위치]
mirror -R [로컬복사대상물] [원격지위치]
6. 백그라운드 작업
lftp 는 백그라운드 작업을 지원합니다.
ctrl+z 를 눌러 작업을 백그라운드로 이동시킬 수 있습니다.
jobs
명령으로 현재 백그라운드에 존재하는 작업을 조회할 수 있습니다.
wait
위의 명령으로 백그라운드 작업을 포그라운드로 가져올 수 있습니다.
2013년 10월 8일 화요일
spring-data-redis(with jedis) 을 이용한 Redis 삽질
1. CentOS 5.9 Final 에 Redis 설치
회사에서 하나 제공 받은 가상 서버에 CentOS 6.3 이 안깔려서 5.9 로 제공받았음.
기본 yum 저장소에는 Redis 가 존재하지 않아 EPEL 서드파티 저장소를 추가해서 설치(어쩌다 일본의 미러 저장소에서 받게 되었나 몰라...).
> sudo rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/5/i386/epel-release-5-4.noarch.rpm
> sudo yum install redis
2. 설정파일
/etc/redis.conf 에서 설정을 관리. 복수개의 Redis 서버를 띄워야 할 경우 설정파일을 복사해서 redis-server 을 통해 띄우는데, 일단 개발용으로 띄울 것이므로 간단한 설정만 변경
> sudo vi /etc/redis.conf
설정 중 아래 내용을 수정해보자
...
bind 127.0.0.1
...
# requirepass foobared
...
bind 는 접속 허용할 IP 정도 되겠고, requirepass 가 외부에서 접근할 때 인증용으로 사용할 비밀번호이다. spring-data-redis 에서 설정할 때 필요하므로 requirepass 는 잘 기억해야함.
3. 서버 실행
> sudo /etc/rc.d/init.d/redis start
4. Maven(pom.xml) 추가
이제 Eclipse 에서 Maven 프로젝트를 실행하고 아래와 같이 라이브러리를 추가.
<dependency>현재 상태에서는 버젼 선택에서 조심해야 함. 무턱대고 jedis 2.2.0 인 최신버젼 썼다간 spring-data-redis 에서 jedis 에서 빠진 class(redis.clients.jedis.BinaryTransaction)을 찾아 오류만 구경할 수 있음.
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0version>
</dependency>
5. Spring 설정
Spring 설정 파일에 설정을 추가함. spring-servlet.xml 을 애용하는 필자는 아래 내용을 추가.
<bean id="jedisConnectinFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="192.168.0.xx" />
<property name="port" value="6379" />
<property name="password" value="xxxx" />
<property name="usePool" value="true" />
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectinFactory" />
</bean>
6. Java 코딩
원하는 곳에 bean 을 주입하여 사용
...
@Autowired
private RedisTemplate<String, String> redisTemplate;
...
@Resource(name="redisTemplate")
private ValueOperations<String, String> valueOps;
public void append() {
...
valueOps.set("1111", "2222"); // Key/Value 형태 입력
....
}
ValueOperations 는 Key/Value 형태의 자료구조 형태이고, ListOperations, HashOperations, SetOperations, ZSetOperations 가 각각 List, Hash, Set, Sorted Set 형태를 지원한다. 각 자료구조 형태에 맞는 이름으로 method 을 제공하기 때문에 Redis 의 자료 구조에 맞는 값 설정 및 불러오기를 이용하자.
7. 주의
입력된 값을 확인하기 위해 keys 을 이용해서 모든 값을 불러올 수 있는데, 운영서버에서는 로그를 남기기 위한 용도로도 쓰면 안된다. flushdb 나 flushall 와 같은 전체 삭제도 운영에서 쓰면 안된다. 왜냐하면, 속도가 매우 느리다!!! 그냥 순차적으로 반복문을 돌면서 삭제를 하고, fork 을 한 상태에서(복사본을 만들어서) 작업을 하는 것이 아니기 때문에, 이 반복문이 끝나기 전까진 모든 작업이 대기 상태에 빠지게 된다.
2013년 2월 16일 토요일
ubuntu + proftpd 에 tls 적용기
1. 많은 한국어로 된 페이지에서 컴파일 기준으로 설명하고 있다. mod_tls 가 기본으로 들어있지 않다는 내용으로...하지만 ubuntu 12.04 LTS 을 사용하고 있는 현재 mod_tls 는 기본으로 포함되어 apt-get 으로 설치됩니다.
2. /etc/proftpd/proftpd.conf 파일이 기본적인 설정 파일인데, 에디터로 열어보면 상단에 다음과 같은 내용이 있습니다.
당연히 mod_tls 에 대한 설정도 있을 것입니다. 당연히 modules.conf 파일을 열어보면 mod_tls 에 대한 설정이 보입니다.
기본적으로 주석 처리 되어 있습니다. 가볍게 풀어줍시다. 그리고 다시 proftpd.conf 파일을 보면 아래와 같은 내용을 아래쪽에서 찾을 수 있습니다. 가볍게 tls 로 검색하면 더 쉽게 찾을 수 있겠습니다.
당연히 tls 에 대한 설정파일을 모아놓은 파일이니 주석을 해제한 뒤 해당 파일을 에디터로 열어봅시다.
현재 제가 사용하고 있는 옵션을 추려보면 다음과 같습니다.
간단하게 추려보면...TLSEngine 이야 당연히 TLS 을 사용하겠냐...하는 놈이고 TLSLog 는 로그파일 생성위치입니다. TLSProtocol 은 v1 와 v3 을 다 쓴다는 의미라는데...v2 는 버그가 있어서 안쓴다고 하니 저렇게 써줍시다(참고링크 http://www.proftpd.org/docs/directives/linked/config_ref_TLSProtocol.html).
TLSRSA... 로 시작하는 두 파일은 SSL 개인키와 공개키 파일 위치입니다. 리눅스에서 개인키와 공개키를 생성하는 설명은 차고 넘칩니다. 제가 걸고 넘어진 한글로 된 문서에도 차고 넘치게 나옵니다. 근데...전 startssl.com 에서 내 개인 도메인용으로 무료로 발급받았습니다. 이유는...그냥...-_-;;; 이 내용도 포스팅 하기는 해야하는데...귀찮아서...필요한 사람들은 역시나 차고 넘치는 한글 포스팅 자료들을 뒤져보시면...조금 헤멜 수는 있지만(왜냐하면 최근에 조금 개편을 했는지 내용이 살짝 다르더군요) 해내실 수 있으리라 봅니다. 어쨌든 파일 위치는 꼭 저기가 아니어도 됩니다만...chmod 400 으로 권한 잘 조정하시고 넣어두세요. 물론 파일 소유자는 root 로...
TLSOptions 나 TLSVerifyClient, TLSRenegotiate 는 설명 넘어갑니다. 해당 파일의 상단에 영어로 된 주석이 있는데 해석하시면 뜻을 아실 수 있을 겁니다. 혹은 proftpd.org 사이트에서 공식 문서를 읽으면 더욱 도움이 됩니다.
문제는 TLSRequired 입니다. 공식 문서의 경로는 http://www.proftpd.org/docs/directives/linked/config_ref_TLSRequired.html 입니다. 이 놈이 왜 문제냐면...그냥 Filezilla 등에서 쓸 때에는 어짜피 다 TLS 가 적용되서 명령어나 데이터가 왔다갔다 하기 때문에 on 으로 해두면 되지만, CCC(Clear Command Channel) 기능을 지원하는 FTP Client 로 접속할 경우 에러가 튀어나옵니다. 왜 그럴까요?
FTP 는 크게 2 개의 포트를 이용합니다. Command 와 Data 인데, 명령어가 왔다리갔다리 하는 포트와 실제 파일이 전송되는 포트를 별개도 씁니다. 대부분의 사용자가 FTP 는 21번 포트를 쓴다고 철썩같이 믿고 있으신데, 서버를 운영하면서 방화벽 좀 다뤄보셨다면 이게 잘못된 지식이라는걸 아실 겁니다. 21 번 포트는 바로 Active 모드에서(일반적인 설정에서) 명령어가 왔다리갔다리 하는 Command 채널(포트)이기 때문입니다. 실제 명령어가 왔다갔다 하다가, 데이터 관련 명령이 왔다갔다 하는 순간에 20 번(Data 채널이겠죠)이 막혀있어 제대로 동작을 안하는 경험들을 해보셨을 겁니다. 웃기는게, proftpd 을 포함하여 많은 FTP Daemon 들은 이 Data 포트를 변경할 수 없습니다. 클라이언트의 방화벽 문제를 해결해주기 위해서 Active Mode 대신 Passive Mode 을 지원하고, 21 번 대신 다른 포트로 변경도 가능하게 해주지만, 이 Data 는 변경이 안됩니다.
그럼 왜 이 Command 와 Data 포트에 대해서 장황하게 설명했을까요? 바로 TLSRequired 옵션에서 on 은 Command 와 Data 포트 모두 TLS 로 암호화해서 데이터가 왔다리갔다리 하는 것인데, CCC 는 위 영어에서 나오듯이 Command 만 암호화하는 옵션이기 때문에 클라이언트에서는 Data 을 주고 받을 때 서버 쪽에서 TLS 을 요구할 때 어버버...하다가 오류가 발생하기 때문입니다. 그래서 CCC 기능을 쓸 수 없습니다. 제가 지금까지 본 한글로 된 포스팅 중에는 이 옵션을 on 이나 off 말고는 적어둔 곳도, 저게 정확하게 뭔지 설명해주는 포스팅도 없더군요(http://free4u.wo.tc/weblog/blog/11148 의 포스팅에선 auth+data 을 써야한다는 내용이 있는데...아래 FileZilla 패치버젼을 만들어주신 분이신데, 제공하시는 FileZilla 로 데이터 업로드 등을 하면 오류 납니다). 공식문서 링크를 보시면 제가 잘못 이해한 것인지는 몰라도, CCC 을 이용하기 위해서는 TLSRequired 옵션을 auth 혹은 ctrl 로 둬야 합니다. 반드시 유의하시고...밑줄도 쫙 쳐드릴테니 잊지 마세요!!!
마지막으로...FileZilla 는 CCC 을 지원하지 않습니다. 상당수의 상용/무료 클라이언트에서 지원하는 이 기능을 지원하지 않는 이유가 궁금한데...아래 링크에 이를 지원하도록 수정해서 배포하는 분이 계십니다. 자랑스런 대한민국인이시죠. 이 분의 포스팅을 보면...FileZilla 개발자가(어린 나이에 FileZilla 을 개발해서 이 바닥에선 스타죠) CCC 기능이 보안상 문제가 있기 때문에 CCC 기능을 지원하지 않으려고 한다는 내용을 남기셨죠. 일단 전 그렇게 받아들였는데...장단점이 있겠습니다. 하지만 저 기능을 사용자의 선택으로 두어야 하고, FTP Daemon 관리자 역시 선택할 수 있도록 두어야 하는데 세계에서 가장 많이 쓰이는 FTP Client 에서 의도적으로 기능을 개발 안한다는 것은...안타까운 일입니다. 그래서...3.5 만원 정도 하는 FlashFXP 와 같은 성능좋은 FTP Client 을 구입하시거나, 무료 중에서 CCC 을 지원하는 CoreFTP 나 goFTP(이 놈은 UTF-8 지원 안하는 듯)을 쓰시거나, 아래 링크의 컴파일 된 FileZilla 을 쓰시던가 해야합니다. 아래 링크의 FileZilla 는 압축해놓은 것이기 때문에 설치할 필요 없이 아무대나 압축풀어 놓고, 필요할 때만 실행하시면 됩니다. 그럼 기존에 설치된 FileZilla 의 설정을 공유하기 때문에 쓰는데 큰 문제는 없을 것입니다.
http://free4u.wo.tc/weblog/blog/10285
위 포스팅을 잘 읽어보시면 각 댓글의 첫 라인의 작성시간 옆에 첨부가 붙어 있는 것이 있습니다. 그게 패치된 FileZilla 을 다운로드 받을 수 있는 링크이며, 이 패치된 FileZilla 로 실행했을 때 업데이트 창이 뜨면 업데이트를 하시면 안됩니다.
빨리 CCC 을 지원하는 FileZilla 가 되었으면 좋겠네요.
분명 처음엔 proftpd 에 대한 내용이었는데, FileZilla 에 대한 글로 변질되네요. 어쨌든 저렇게 설정을 해주고 proftpd 을 재실행 해주면 잘 동작할 것입니다. 단, 제가 이 글을 올리는 시점에서는 start 시 경고가 발생하는데 OpenSSL 버젼이 맞지 않는다는 내용입니다. 무시하셔도 크게 문제는 없을 것으로 보입니다. 이 경우 조금만 시간이 흐르면 proftpd 의 mod_tls 을 컴파일 할 때 사용하는 OpenSSL 버젼이 올라가든지 해서 버젼이 맞게되는 순간이 올테니까요.
이상 글을 마칩니다.
2. /etc/proftpd/proftpd.conf 파일이 기본적인 설정 파일인데, 에디터로 열어보면 상단에 다음과 같은 내용이 있습니다.
Include /etc/proftpd/modules.conf
당연히 mod_tls 에 대한 설정도 있을 것입니다. 당연히 modules.conf 파일을 열어보면 mod_tls 에 대한 설정이 보입니다.
#LoadModule mod_tls.c
기본적으로 주석 처리 되어 있습니다. 가볍게 풀어줍시다. 그리고 다시 proftpd.conf 파일을 보면 아래와 같은 내용을 아래쪽에서 찾을 수 있습니다. 가볍게 tls 로 검색하면 더 쉽게 찾을 수 있겠습니다.
#Include /etc/proftpd/tls.conf
당연히 tls 에 대한 설정파일을 모아놓은 파일이니 주석을 해제한 뒤 해당 파일을 에디터로 열어봅시다.
현재 제가 사용하고 있는 옵션을 추려보면 다음과 같습니다.
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSRSACertificateFile /etc/ssl/certs/ssl.crt
TLSRSACertificateKeyFile /etc/ssl/private/ssl.key
TLSOptions AllowClientRenegotiations
TLSVerifyClient off
TLSRequired ctrl
TLSRenegotiate required off
</IfModule>
간단하게 추려보면...TLSEngine 이야 당연히 TLS 을 사용하겠냐...하는 놈이고 TLSLog 는 로그파일 생성위치입니다. TLSProtocol 은 v1 와 v3 을 다 쓴다는 의미라는데...v2 는 버그가 있어서 안쓴다고 하니 저렇게 써줍시다(참고링크 http://www.proftpd.org/docs/directives/linked/config_ref_TLSProtocol.html).
TLSRSA... 로 시작하는 두 파일은 SSL 개인키와 공개키 파일 위치입니다. 리눅스에서 개인키와 공개키를 생성하는 설명은 차고 넘칩니다. 제가 걸고 넘어진 한글로 된 문서에도 차고 넘치게 나옵니다. 근데...전 startssl.com 에서 내 개인 도메인용으로 무료로 발급받았습니다. 이유는...그냥...-_-;;; 이 내용도 포스팅 하기는 해야하는데...귀찮아서...필요한 사람들은 역시나 차고 넘치는 한글 포스팅 자료들을 뒤져보시면...조금 헤멜 수는 있지만(왜냐하면 최근에 조금 개편을 했는지 내용이 살짝 다르더군요) 해내실 수 있으리라 봅니다. 어쨌든 파일 위치는 꼭 저기가 아니어도 됩니다만...chmod 400 으로 권한 잘 조정하시고 넣어두세요. 물론 파일 소유자는 root 로...
TLSOptions 나 TLSVerifyClient, TLSRenegotiate 는 설명 넘어갑니다. 해당 파일의 상단에 영어로 된 주석이 있는데 해석하시면 뜻을 아실 수 있을 겁니다. 혹은 proftpd.org 사이트에서 공식 문서를 읽으면 더욱 도움이 됩니다.
문제는 TLSRequired 입니다. 공식 문서의 경로는 http://www.proftpd.org/docs/directives/linked/config_ref_TLSRequired.html 입니다. 이 놈이 왜 문제냐면...그냥 Filezilla 등에서 쓸 때에는 어짜피 다 TLS 가 적용되서 명령어나 데이터가 왔다갔다 하기 때문에 on 으로 해두면 되지만, CCC(Clear Command Channel) 기능을 지원하는 FTP Client 로 접속할 경우 에러가 튀어나옵니다. 왜 그럴까요?
FTP 는 크게 2 개의 포트를 이용합니다. Command 와 Data 인데, 명령어가 왔다리갔다리 하는 포트와 실제 파일이 전송되는 포트를 별개도 씁니다. 대부분의 사용자가 FTP 는 21번 포트를 쓴다고 철썩같이 믿고 있으신데, 서버를 운영하면서 방화벽 좀 다뤄보셨다면 이게 잘못된 지식이라는걸 아실 겁니다. 21 번 포트는 바로 Active 모드에서(일반적인 설정에서) 명령어가 왔다리갔다리 하는 Command 채널(포트)이기 때문입니다. 실제 명령어가 왔다갔다 하다가, 데이터 관련 명령이 왔다갔다 하는 순간에 20 번(Data 채널이겠죠)이 막혀있어 제대로 동작을 안하는 경험들을 해보셨을 겁니다. 웃기는게, proftpd 을 포함하여 많은 FTP Daemon 들은 이 Data 포트를 변경할 수 없습니다. 클라이언트의 방화벽 문제를 해결해주기 위해서 Active Mode 대신 Passive Mode 을 지원하고, 21 번 대신 다른 포트로 변경도 가능하게 해주지만, 이 Data 는 변경이 안됩니다.
그럼 왜 이 Command 와 Data 포트에 대해서 장황하게 설명했을까요? 바로 TLSRequired 옵션에서 on 은 Command 와 Data 포트 모두 TLS 로 암호화해서 데이터가 왔다리갔다리 하는 것인데, CCC 는 위 영어에서 나오듯이 Command 만 암호화하는 옵션이기 때문에 클라이언트에서는 Data 을 주고 받을 때 서버 쪽에서 TLS 을 요구할 때 어버버...하다가 오류가 발생하기 때문입니다. 그래서 CCC 기능을 쓸 수 없습니다. 제가 지금까지 본 한글로 된 포스팅 중에는 이 옵션을 on 이나 off 말고는 적어둔 곳도, 저게 정확하게 뭔지 설명해주는 포스팅도 없더군요(http://free4u.wo.tc/weblog/blog/11148 의 포스팅에선 auth+data 을 써야한다는 내용이 있는데...아래 FileZilla 패치버젼을 만들어주신 분이신데, 제공하시는 FileZilla 로 데이터 업로드 등을 하면 오류 납니다). 공식문서 링크를 보시면 제가 잘못 이해한 것인지는 몰라도, CCC 을 이용하기 위해서는 TLSRequired 옵션을 auth 혹은 ctrl 로 둬야 합니다. 반드시 유의하시고...밑줄도 쫙 쳐드릴테니 잊지 마세요!!!
마지막으로...FileZilla 는 CCC 을 지원하지 않습니다. 상당수의 상용/무료 클라이언트에서 지원하는 이 기능을 지원하지 않는 이유가 궁금한데...아래 링크에 이를 지원하도록 수정해서 배포하는 분이 계십니다. 자랑스런 대한민국인이시죠. 이 분의 포스팅을 보면...FileZilla 개발자가(어린 나이에 FileZilla 을 개발해서 이 바닥에선 스타죠) CCC 기능이 보안상 문제가 있기 때문에 CCC 기능을 지원하지 않으려고 한다는 내용을 남기셨죠. 일단 전 그렇게 받아들였는데...장단점이 있겠습니다. 하지만 저 기능을 사용자의 선택으로 두어야 하고, FTP Daemon 관리자 역시 선택할 수 있도록 두어야 하는데 세계에서 가장 많이 쓰이는 FTP Client 에서 의도적으로 기능을 개발 안한다는 것은...안타까운 일입니다. 그래서...3.5 만원 정도 하는 FlashFXP 와 같은 성능좋은 FTP Client 을 구입하시거나, 무료 중에서 CCC 을 지원하는 CoreFTP 나 goFTP(이 놈은 UTF-8 지원 안하는 듯)을 쓰시거나, 아래 링크의 컴파일 된 FileZilla 을 쓰시던가 해야합니다. 아래 링크의 FileZilla 는 압축해놓은 것이기 때문에 설치할 필요 없이 아무대나 압축풀어 놓고, 필요할 때만 실행하시면 됩니다. 그럼 기존에 설치된 FileZilla 의 설정을 공유하기 때문에 쓰는데 큰 문제는 없을 것입니다.
http://free4u.wo.tc/weblog/blog/10285
위 포스팅을 잘 읽어보시면 각 댓글의 첫 라인의 작성시간 옆에 첨부가 붙어 있는 것이 있습니다. 그게 패치된 FileZilla 을 다운로드 받을 수 있는 링크이며, 이 패치된 FileZilla 로 실행했을 때 업데이트 창이 뜨면 업데이트를 하시면 안됩니다.
빨리 CCC 을 지원하는 FileZilla 가 되었으면 좋겠네요.
분명 처음엔 proftpd 에 대한 내용이었는데, FileZilla 에 대한 글로 변질되네요. 어쨌든 저렇게 설정을 해주고 proftpd 을 재실행 해주면 잘 동작할 것입니다. 단, 제가 이 글을 올리는 시점에서는 start 시 경고가 발생하는데 OpenSSL 버젼이 맞지 않는다는 내용입니다. 무시하셔도 크게 문제는 없을 것으로 보입니다. 이 경우 조금만 시간이 흐르면 proftpd 의 mod_tls 을 컴파일 할 때 사용하는 OpenSSL 버젼이 올라가든지 해서 버젼이 맞게되는 순간이 올테니까요.
이상 글을 마칩니다.
2012년 11월 1일 목요일
리눅스에서 파일 소유자, 권한 일괄 변경
외장 하드디스크 등에 저장한 자료, 특히 NTFS 타입 등으로 복사를 하면 소유자와 권한이 변경되는 경우가 존재한다. 이를 일괄적으로 변경하는 방법은 다음과 같다.
소유자를 user 로, 그룹을 group 으로 하고, 현재 디렉토리 이후를 모두 변경시키는 문장이 첫번째이다.
현재 디렉토리 이후의 모든 디렉토리를 755(rwxr-xr-x)로 바꾸고, 현재 디렉토리 이후의 모든 파일을 644(rw-r--r--)로 바꾸는 것이 두번째와 세번째이다. 755와 644는 각각 디렉토리와 파일의 기본값이기도 하다.
sudo chown -R user:group *
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
소유자를 user 로, 그룹을 group 으로 하고, 현재 디렉토리 이후를 모두 변경시키는 문장이 첫번째이다.
현재 디렉토리 이후의 모든 디렉토리를 755(rwxr-xr-x)로 바꾸고, 현재 디렉토리 이후의 모든 파일을 644(rw-r--r--)로 바꾸는 것이 두번째와 세번째이다. 755와 644는 각각 디렉토리와 파일의 기본값이기도 하다.
2012년 9월 12일 수요일
Redmine 1.4.x with Oracle Linux 6
Oracle Linux 에서 Redmine 1.4 stable 버젼 설치를 하는 방법입니다. 최대한 RPM 등을 이용합니다.
1. Public YUM 설치
오라클의 공개 yum 저장소인 public yum(http://public-yum.oracle.com)을 사용하도록 설정. 구입했을 경우 Unbreakable Linux Network 의 자원을 이용할 수 있으므로 무시할 수 있음.
Oracle DBMS 을 설치할 때 oracle-validated 라는 것을 public yum 을 통해 설치 가능하므로 알아두는 것이 이롭겠다.
아래 명령으로 저장소를 추가할 수 있고, Oracle Linux 에는 기본적으로 포함되어 있다.
2. 3rd Party 저장소 추가 (옵션)
기본 제공 YUM 저장소에는 충분한 패키지가 포함되어 있지 않다. 3rd Party YUM Repository 을 통해서 더 많은 패키지를 사용할 수 있다.
아래의 명령어로 저장소의 우선순위를 정해줄 수 있는 플러그인을 설치한다.
설치 후 저장소 설정 파일에 아래와 같은 형식으로 수치를 넣어서 우선순위를 정할 수 있다. N 대신에 숫자를 넣는데, 숫자가 클수록 후순위다. EPEL, repoforge 와 같은 3rd Party 저장소는 10 이상으로 하자.
3. Subversion, MySQL, ImageMagick, Ruby, Gem, Rake, Rails 설치
아래 명령으로 MySQL 와 gcc, Ruby, Ruby Gem, Rake 등 의존성 있는 패키지까지 함께 설치한다.
그 후 rails 와 ruby-mysql2 을 gem 으로 설치한다.
MySQL 은 항상 구동되어야 하므로 서비스에 등록하고 실행한다.
4. MySQL 사용자와 DB 생성
MySQL 설치 후 아무런 보안정책이 적용되지 않은 상태이다. root 사용자의 비밀번호를 지정하고, 원격접속 등을 막기 위해 아래 명령을 실행한다.
그 후 아래 명령으로 MySQL 클라이언트로 로컬 DBMS 에 접속한다.
접속 후아래 명령으로 MySQL 에 Redmine 을 위한 사용자와 DB 을 생성해준다.
모두 적용한 뒤 quit 명령으로 빠져나온다.
5. Redmine 1.4 최신버젼 다운로드
아래 명령으로 /usr/local/redmine-1.4/ 에 Subversion 을 이용해서 최신버젼을 가져온다.
그 후 /usr/local/redmine-1.4/config/ 으로 이동해서 database.yml.example 파일을 database.yml 로 복사한 뒤 production 부분을 수정해준다.
username 와 password 만 수정하면 될 것이다.
6. DB 초기화
아래 명령으로 DB 을 초기화한다. 마지막 기초 데이터 로딩 시 ko 을 입력하여 한국어 기반으로 설치한다.
7. 리눅스 디렉토리/파일 권한 변경
Redmine 설치 경로의 files/,log/, tmp/, public/plugin_assets/ 은 사용자를 root 에서 다른 사용자로 변경하고(redmine 사용자 혹은 apache httpd 사용자) 디렉토리 권한을 755 로 바꿔준다.
8. Ruby WEBrick 웹서버 테스트
아래 명령으로 Ruby 의 웹서버를 통해 실행한다. 3000 번 포트로 실행되며, 웹브라우져로 확인해본다. 기본 계정은 admin/admin 이다.
9. Apache HTTPD 연동
Apache HTTPD 와 연동하기 위해서는 Passenger 나 Mongrel(mongrel-cluster), Thin 로 연동해야 한다.
먼저 Apache HTTPD 설치를 위해 아래의 명령을 실행한다.
Passenger 는 연동이 단순하다. 아래 명령으로 설치한 뒤, 화면 상의 메시지에 따라 HTTPD 의 설정 파일에 내용을 추가한다.
Mongrel 은 Cluster 을 지원한다. 가장 파워풀한 설정이다. Mongrel 로 각각의 서버를 띄운 뒤 HTTPD 의 ProxyPass 을 이용해서 페이지를 띄우는 방식이다.
Thin 은 Ruby 서버를 띄워서 이를 연결하는 방식으로, Passenger 을 쓰는 것이 더 나아 보인다.
1. Public YUM 설치
오라클의 공개 yum 저장소인 public yum(http://public-yum.oracle.com)을 사용하도록 설정. 구입했을 경우 Unbreakable Linux Network 의 자원을 이용할 수 있으므로 무시할 수 있음.
Oracle DBMS 을 설치할 때 oracle-validated 라는 것을 public yum 을 통해 설치 가능하므로 알아두는 것이 이롭겠다.
아래 명령으로 저장소를 추가할 수 있고, Oracle Linux 에는 기본적으로 포함되어 있다.
cd /etc/yum.repos.d
wget http://public-yum.oracle.com/public-yum-ol6.repo
2. 3rd Party 저장소 추가 (옵션)
기본 제공 YUM 저장소에는 충분한 패키지가 포함되어 있지 않다. 3rd Party YUM Repository 을 통해서 더 많은 패키지를 사용할 수 있다.
아래의 명령어로 저장소의 우선순위를 정해줄 수 있는 플러그인을 설치한다.
yum install yum-plugin-priorities
설치 후 저장소 설정 파일에 아래와 같은 형식으로 수치를 넣어서 우선순위를 정할 수 있다. N 대신에 숫자를 넣는데, 숫자가 클수록 후순위다. EPEL, repoforge 와 같은 3rd Party 저장소는 10 이상으로 하자.
priority=N
3. Subversion, MySQL, ImageMagick, Ruby, Gem, Rake, Rails 설치
아래 명령으로 MySQL 와 gcc, Ruby, Ruby Gem, Rake 등 의존성 있는 패키지까지 함께 설치한다.
yum install subversion, mysql mysql-devel ImageMagick ImageMagick-devel ruby ruby-devel rubygems rubygem-rake gcc
그 후 rails 와 ruby-mysql2 을 gem 으로 설치한다.
gem install rails mysql2 bundler rmagick
MySQL 은 항상 구동되어야 하므로 서비스에 등록하고 실행한다.
chkconfig mysqld on
service mysqld start
4. MySQL 사용자와 DB 생성
MySQL 설치 후 아무런 보안정책이 적용되지 않은 상태이다. root 사용자의 비밀번호를 지정하고, 원격접속 등을 막기 위해 아래 명령을 실행한다.
/usr/bin/mysql_secure_installaion
그 후 아래 명령으로 MySQL 클라이언트로 로컬 DBMS 에 접속한다.
mysql -u root -p
접속 후아래 명령으로 MySQL 에 Redmine 을 위한 사용자와 DB 을 생성해준다.
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by '(비밀번호)';
grant all privileges on redmine.* to 'redmine'@'localhost';
모두 적용한 뒤 quit 명령으로 빠져나온다.
5. Redmine 1.4 최신버젼 다운로드
아래 명령으로 /usr/local/redmine-1.4/ 에 Subversion 을 이용해서 최신버젼을 가져온다.
cd /usr/local/; svn co http://redmine.rubyforge.org/svn/branches/1.4-stable redmine-1.4
그 후 /usr/local/redmine-1.4/config/ 으로 이동해서 database.yml.example 파일을 database.yml 로 복사한 뒤 production 부분을 수정해준다.
username 와 password 만 수정하면 될 것이다.
6. DB 초기화
아래 명령으로 DB 을 초기화한다. 마지막 기초 데이터 로딩 시 ko 을 입력하여 한국어 기반으로 설치한다.
bundle install --without development test postgresql sqlite
rake generate_session_store
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
7. 리눅스 디렉토리/파일 권한 변경
Redmine 설치 경로의 files/,log/, tmp/, public/plugin_assets/ 은 사용자를 root 에서 다른 사용자로 변경하고(redmine 사용자 혹은 apache httpd 사용자) 디렉토리 권한을 755 로 바꿔준다.
8. Ruby WEBrick 웹서버 테스트
아래 명령으로 Ruby 의 웹서버를 통해 실행한다. 3000 번 포트로 실행되며, 웹브라우져로 확인해본다. 기본 계정은 admin/admin 이다.
cd /usr/local/redmine-1.4/; ruby script/server webrick -e production
9. Apache HTTPD 연동
Apache HTTPD 와 연동하기 위해서는 Passenger 나 Mongrel(mongrel-cluster), Thin 로 연동해야 한다.
먼저 Apache HTTPD 설치를 위해 아래의 명령을 실행한다.
yum install httpd httpd-devel
Passenger 는 연동이 단순하다. 아래 명령으로 설치한 뒤, 화면 상의 메시지에 따라 HTTPD 의 설정 파일에 내용을 추가한다.
gem install passenger
passenger-install-apache2-module
Mongrel 은 Cluster 을 지원한다. 가장 파워풀한 설정이다. Mongrel 로 각각의 서버를 띄운 뒤 HTTPD 의 ProxyPass 을 이용해서 페이지를 띄우는 방식이다.
Thin 은 Ruby 서버를 띄워서 이를 연결하는 방식으로, Passenger 을 쓰는 것이 더 나아 보인다.
2012년 8월 12일 일요일
JBoss 7.1.1 Final 설치중
Ubuntu Linux 에 설치중...
1. 압축 풀기
2. bin/init.d/ 에 기존에 있는 쉘 무시하고 새로운 쉘 만들기
3. jboss 사용자 추가(2에서 사용)
4. standard/configuration/standalone.xml 에서 설정 변경
4-1. <connector> 에 AJP/1.3 추가
4-2.
1. 압축 풀기
2. bin/init.d/ 에 기존에 있는 쉘 무시하고 새로운 쉘 만들기
3. jboss 사용자 추가(2에서 사용)
4. standard/configuration/standalone.xml 에서 설정 변경
4-1. <connector> 에 AJP/1.3 추가
4-2.
2012년 4월 5일 목요일
ubuntu server 설치 후 X 가 필요하다면?
각각의 패키지를 선택하여 설치도 가능하겠지만...
한 방에 설치하려면 다음 명령으로 기본구성된 패키지를 설치해버리자.
한 방에 설치하려면 다음 명령으로 기본구성된 패키지를 설치해버리자.
sudo apt-get install ubuntu-desktop
피드 구독하기:
글 (Atom)