Monthly Archives: November 2013

Warning: session_start(): open() failed: Permission denied

php 에서 세션을 사용하려고 할때 다음과 같은 에러가 출력될 때가 있습니다.

 

Warning: session_start(): open(/var/lib/php/session/..., O_RDWR) failed: Permission denied

원인은 서버의 session 디렉토리의 권한 문제입니다.  서버 콘솔에 접속해서 위 에러 메세지 상의 디렉토리 권한을 변경해 주면 해결됩니다.

 

chmod 777 /var/lib/php/session 

권한이 성공적으로 변경되었는지 확인해 봅니다.
 

ls /var/lib/php -al

session 디렉토리의 권한이 ‘drwxrwxrws’ 로 나타나면 성공입니다.
 

MongoDB -auth

몽고 DB를 인증모드로 실행하기 위해 -auth 파라미터를 썼더니 안되는군요. 몽고 DB가 업데이트 되면서 뭔가 조금씩 바뀐것 같습니다. 결과적으로 설치에만 4시간 이상의 삽질을…
결론부터 말씀드리면 mongod.conf 에서 auth = true로 해주면 간단하게 해결됩니다.

vi /etc/mongod.conf

 

파일을 여시게 되면 auth = true 부분이 주석처리가 되어있을 겁니다. 주석문을 해제해 주시고 저장.

service mongod restart

 

몽고 DB를 재시작 해주면 끝납니다.

CentOS에서 MongoDB 설치하기

0. 사전준비

CentOS 서버를 처음 세팅한 경우 몇가지 라이브러리가 설치되어 있지 않아 MongoDB 설치가 막히는 경우가 있습니다.  MongoDB를 설치하기 전에 필요한 라이브러리를 설치합니다.

  •  컴파일러 설치
yum install gcc gcc-c++ make autoconf automake

 

  • PHP 라이브러리
sudo yum install php-devel php5-cli php-pear

필요한 작업은 완료되었습니다. 이제 본격적으로 MongoDB를 세팅해 보겠습니다.

 

1. yum을 이용한 MongoDB 설치

  •  10gen.repo 파일을 추가합니다.
vi /etc/yum.repos.d/10gen.repo
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0

 

  •  mongoDB를 install 합니다.
yum install mongo-10gen mongo-10gen-server

 

  •  mongodb conf 파일 확인
vi /etc/mongod.conf

 

  •  설정파일에서 다음 내용을 확인합니다. 주석처리된 부분은 주석을 해제합니다.
logpath=/var/log/mongo/mongod.log
port=27017
dbpath=/var/lib/mongo

 

  •  DB데이터를 저장할 폴더의 권한을 설정합니다.
chown -R mongod:mongod /var/lib/mongo/

 

  •  MongoDB를 시작하고, 시작 서비스에 등록합니다.
/etc/init.d/mongod start
chkconfig --levels 235 mongod on

 

  •  MongoDB의 기본 포트인 27017번 포트를 방화벽에서 개방합니다.
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT

 

  •  iptables를 재시작해서 방화벽 설정을 적용합니다.
/etc/init.d/iptables restart

관리자 패널에서 추가적으로 포트를 개방해주어야 하는 경우도 있습니다. 이 경우 27017번과 28017포트를 모두 개방해 주셔야 합니다. 설치가 완료되었으면 정상적으로 설치가 되었는지 확인해 봅니다.

자신의 서버 IP : 27017 포트로 접속해서 다음 문장이 나오면 성공입니다.

You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number

이번에는 28017 포트로 접속합니다. DB의 상세정보가 출력됩니다. 이 정보는 아무나 보면 안되기 때문에 사용자 등록을 하고 비밀번호를 걸어줍시다. 다시 셸로 돌아가 몽고 콘솔을 실행하여 사용자 등록을 합니다.

mongo
use admin
db.addUser("admin", "비밀번호")
exit

참 쉽죠? 다시 28017로 접속해 보며 유저명과 비밀번호를 요구할 것입니다.

 

2. php Driver 설치
원래 실치 과정이 복잡합니다만 앞서 pecl를 설치해놨기 때문에 매우 간단하게 끝납니다.

sudo pecl install mongo

설치가 됩니다.

이제 마지막으로 php.ini을 여시고 아래 문장을 삽입합니다.

[mongo]
extension=mongo.so

아파치 서버를 재시작하고 phpinfo 를 확인했을 때 Mongo에 관한 부분이 있으면 성공입니다.

service httpd restart