perl Auth::Extensible 기본 경로 변경 시 로그인 경로 설정

perl dancer 로 만든 앱이 있다.

로그인 모듈로 Auth::Extensible을 사용 중.

http://domain.com/ 으로 접속하면 dancer로 접속하게 nginx에 리버스 프록시 설정을 함.

nginx + php-fpm + mariadb + uwsgi(perlbrew 앱)

php로 돌아가는 프로그램으로 moniwiki와 wordpress 까지 같이 있다 보니 nginx 설정이 마구 꼬이고, 그 와중에 wordpress는 플러그인이나 테마를 너무 많이 깔면 DB가 응답을 않는 사태가 자주 발생.

그렇게 사용하다 보니 웹 경로 ‘/’로 접속하면 uwsgi 웹 앱으로 가게 설정이 되어 있어 정적 파일(이미지, css, js, html)을 nginx에서도 보내려 하고 uwsgi에서도 보내려 하는 이상한 상태라, 웹 앱을 다른 경로로 보내기로 결정.

nginx와 웹 앱에서 사용하는 기본 경로를 다 바꾸고 나니 잘 동작함을 확인. 만족하고 있는 와중, 서비스를 이용하는 다른 친구들이 접속 안 된다고 항의.

난 잘 되는데? 하고 살펴보다 쿠키 삭제하고 로그인 시도하니 로그인 안됨. 살아있을 때는 정상 동작하지만, 새로 접속하는 사람은 로그인을  해야 하는데 로그인 경로가 ‘/변경된경로/login’이 아닌 ‘/login’ 으로 이동해서 발생하는 문제.

로그인 경로를 어떻게 설정하지? 이건 메인 프로그램에 경로 지정하는 것도 없던데?

문서를 살펴보니 아래와 같이 config.xml에 login_page를 설정해야 한다 하더라. (dancer 기준)

Auth::Extensible:
   login_page: ‘/webapp/login’
   user_home_page: ‘/webapp
   exit_page: ‘/webapp’

login_page : 로그인 명령을 내릴 때, 해당 명령이 실행될 경로(route).

user_home_page : 정확히 잘 모르겠음. 로그인 한 다음에 보일 경로인듯?

exit_page : 로그 아웃 한 다음 열릴 경로.

그런데 한국에 perl dancer 아는 사람 perl.kr 사람 말고 더 있긴 한가? …

DBD::mysql 루트권한 없이 설치하기

사용환경

DBI 모듈 설치하고, perl에서 mysql 사용하려고 보니 DBD::mysql 모듈도 설치해야 했다. root 권한이 있다면 별 문제 없지만 루트 권한이 없다면? –삽질해야 한다. 다른 더 나은 방법이 있으면 제보 주시기를.

 

리눅스 CentOS 6.3 64bit
Perl 환경 : perlbrew로 설치한 perl 5.16.1
mysql-server 패키지는 설치 되어있음.
mysql-devel (mysql 소스던가?) 패키지는 없음 -> 본인 계정에 압축 풀었음(/home/jellypo/mysql-devel/)

rpm 파일 압축푸는건 rpm2cpio RPM파일 | cpio -id

cpanm DBD::mysql 해서 설치 되면 얼마나 행복하겠습니까만은 오류가 발생합니다.

결과적으로 제가 한 것들.
1. mysql-devel 패키지를 압축 풀고
2. Makefile 파일 내용 수정(mysql-devel 경로 지정)
3. /usr/lib64/mysql 안의 파일을 mysql-devel/usr/lib64/mysql/ 밑으로 복사

# cd .cpanm/latest-build/DBD-mysql-4.022
# perl Makefile.PL
# vim Makefile

Makefile 파일 수정, LDDLFLAGS, LDFLAGS, INC, LD_RUN_PATH 등의 변수를<br />/usr/local/lib, /usr/local/include 등을 mysql-devel 소스 압축푼 곳으로 변경<br />

https://metacpan.org/module/DBD::mysql
# make
중략 (make 실행 결과)
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/DBD/mysql/mysql.so] 오류 1
mysql-devel 압축 푼 곳에 .so 파일이 몇 개 빠져서 이러는 모양. /usr/lib64/mysql/ 안의 파일을 ~/mysql-devel/usr/lib64/mysql 로 복사했음.
# make
# make install