일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- nohup
- perfect
- SWIFT
- appium
- sshpass
- 28015
- ubuntu
- create table
- centos
- nGrinder
- port forwarding
- mysql
- kitura
- PYTHON
- Jupyter
- insert
- ftp
- STF
- appium server
- ssh
- Jupyter Notebook
- Materials
- GoCD
- 실행권한
- STF_PortForwarding
- rethinkdb
- nmap
- postgresql
- openpyxl
- postgres
- Today
- Total
don't stop believing
CAS 서버 설치 (on CentOS) 본문
CAS 서버를 설치하겠습니다.
CAS 서버에 대한 간략한 설명은 아래와 같습니다.
Client Access Server (CAS)
The client access server (CAS) is a server role that handles all client connections to Exchange Server 2010 and Exchange 2013. The CAS supports all client connections to Exchange Server from Microsoft Outlook and Outlook Web App, as well as ActiveSync applications. The CAS also provides access to free/busy data in Exchange calendars.
The CAS is one of five server roles in Exchange Server 2007 and Exchange 2010, and one of two server roles in Exchange Server 2013. It must be installed in every Exchange Server organization and on every Active Directory (AD) site that has the Exchange mailbox server role installed. In Exchange 2007, Outlook client connections were handled by the mailbox server.
CAS 서버의 architecture는 아래 링크에서 확인할 수 있습니다.
https://apereo.github.io/cas/5.2.x/planning/Architecture.html
CAS 서버를 설치하기 전 아래 3가지가 설치되어 있어야 합니다.
- JDK 1.8 버전
- Git
- Maven 또는 Gradle
- Tomcat
JDK를 먼저 설치하겠습니다.
$ sudo yum -y install java-1.8.0-openjdk-devel
설치가 되었다면 java version을 확인해 봅니다.
$ java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Git도 설치해 줍니다.
$ sudo yum -y install git
CAS Source를 빌드하기 위해 Maven이나 Gradle을 설치합니다. 저는 둘 다 설치해 보겠습니다.
먼저 Maven입니다.
Maven 다운로드와 최빌 서번은 아래 링크에서 확인할 수 있습니다.
https://maven.apache.org/download.cgi
현재 3.5.4 버전이네요.
Maven home directory로 이동해 wget 명령으로 받아 보겠습니다.
$ cd /usr/local/src $ sudo wget http://www-us.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
다운받은 maven 파일의 압축을 풀고 mv 명령을 이용해 폴더명에 버전을 지워줍니다.
$ sudo tar -xf apache-maven-3.5.4-bin.tar.gz $ sudo mv apache-maven-3.5.4/ apache-maven/
이제 maven 설정파일을 만들고 PATH 등을 등록합니다.
$ cd /etc/profile.d/ $ sudo vim maven.sh
새로만든 maven.sh 파일에 아래 내용을 추가합니다.
# Apache Maven Environment Variables # MAVEN_HOME for Maven 1 - M2_HOME for Maven 2 export M2_HOME=/usr/local/src/apache-maven export PATH=${M2_HOME}/bin:${PATH}
만들어진 maven.sh 파일에 실행 권한을 주고 source 명령을 설정을 등록합니다.
$ sudo chmod +x maven.sh $ source /etc/profile.d/maven.sh
maven 설정이 다 되었다면 버전을 확인해 봅니다.
$ mvn --version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00) Maven home: /usr/local/src/apache-maven Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre Default locale: ko_KR, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.11.6.el7.x86_64", arch: "amd64", family: "unix"
이번에는 Gradle도 설치해 보겠습니다.
Gradle에 대한 정보는 아래 링크에서 확인할 수 있습니다. 현제 버전은 4.10.2 입니다.
user home directory로 이동 후 Gradle 바이너리 파일을 다운로드 받습니다.
$ cd ~ $ sudo wget https://services.gradle.org/distributions/gradle-4.10.2-bin.zip
/opt/gradle 폴더를 만들고 해당 폴더에 zip 파일의 압축을 풉니다.
$ sudo mkdir /opt/gradle $ sudo unzip -d /opt/gradle gradle-4.10.2-bin.zip
gradle 명령을 환경변수에 지정합니다.
$ sudo vim /etc/profile
아래와 같이 gragle 경로를 지정합니다. profile 파일 제일 아래줄에 아래와 같이 추가 합니다.
export GRADLE_USER_HOME=/opt/gradle/gradle-4.10.2/bin export PATH=$PATH:$GRADLE_USER_HOME
profile 파일을 저장하고 source로 설정을 등록합니다.
$ source /etc/profile
환경변수 등록이 되었다면 gradle 버전을 확인해 봅니다.
$ gradle -v ------------------------------------------------------------ Gradle 4.10.2 ------------------------------------------------------------ Build time: 2018-09-19 18:10:15 UTC Revision: b4d8d5d170bb4ba516e88d7fe5647e2323d791dd Kotlin DSL: 1.0-rc-6 Kotlin: 1.2.61 Groovy: 2.4.15 Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018 JVM: 1.8.0_181 (Oracle Corporation 25.181-b13) OS: Linux 3.10.0-862.11.6.el7.x86_64 amd64
이제 Tomcat을 설치할 차례입니다.
현재 9 버전까지 나왔는데 저는 8 버전으로 설치하겠습니다.
https://tomcat.apache.org/download-80.cgi
$ sudo wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz $ sudo tar xzf apache-tomcat-8.5.34.tar.gz $ sudo mv apache-tomcat-8.5.34 /usr/share/tomcat8
tomcat 환경변수도 추가해 줍니다.
$ sudo vim /etc/profile
profile 파일에 아래와 같이 설정을 추가합니다.
export CATALINA_HOME=/usr/share/tomcat8 export PATH=$PATH:$CATALINA_HOME/bin
profile 파일을 저장하고 source 명령으로 설정을 등록합니다.
설정이 잘 되었는지 CATALINA_HOME 변수도 확인해 봅니다.
$ source /etc/profile $ echo $CATALINA_HOME /usr/share/tomcat8
Tomcat을 실행하고 기본 페이지가 정상적으로 접속 되는지 확인해 봅시다.
$ sudo sh /usr/share/tomcat8/bin/startup.sh Using CATALINA_BASE: /usr/share/tomcat8 Using CATALINA_HOME: /usr/share/tomcat8 Using CATALINA_TMPDIR: /usr/share/tomcat8/temp Using JRE_HOME: / Using CLASSPATH: /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar Tomcat started.
설치된 서버의 ip와 tomcat 기본 포트인 8080으로 접속해 봅니다.
Tomcat을 손쉽게 Start, Stop 시키기 위해 서비스에 등록해 보겠습니다.
/etc/init.d 폴더 안에 tomcat8 파일을 만들고 스크립트를 추가해 줍니다.
$ sudo vim /etc/init.d/tomcat8
tomcat8 파일안에 들어갈 스크립트 입니다.
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat8 # chkconfig: 234 20 80 JAVA_HOME=$JAVA_HOME export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/share/tomcat8 case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0
파일 저장후 아래와 같이 권한을 변경합니다.
$ sudo chmod +x /etc/init.d/tomcat8 $ sudo chmod 755 /etc/init.d/tomcat8
CentOS가 재시작되면 자동으로 tomcat이 실해되도록 chkconfig에도 추가하고 확인도 해봅니다.
$ sudo chkconfig --add tomcat8 $ sudo chkconfig --list tomcat8
tomcat 로그도 권한 설정을 해 줍니다.
chown은 현재 계정으로 추가합니다. sudo chown -R <접속계정>:<접속계정> /usr/share/tomcat8/logs
$ sudo chown -R ngle:ngle /usr/share/tomcat8/logs $ sudo chmod -R u+rw /usr/share/tomcat8/logs
tomcat을 시작하기 전 JAVA_OPTS를 추가해 줍니다.
catalina.sh를 열고 아래와 같이 추가 합니다.
$ sudo vim /usr/share/tomcat8/bin/catalina.sh
catalina.sh 파일을 열고 주석이 끝나는 부분에 아래와 같이 JAVA_OPTS를 추가합니다.
JAVA_OPTS="-Xms600m -Xmx1024m -XX:MaxPermSize=200m"
이제 tomcat설치와 설정은 끝났고 service로 tomcat을 start또는 restart해 줍니다.
$ sudo service tomcat8 restart
tomcat 실행 확인은 아래 명령으로 확인할 수 있습니다.
$ ps -ef | grep java $ sudo tail -f /usr/share/tomcat8/logs/catalina.out
여기까지 CAS 서버를 설치하기 위한 준비를 마쳤습니다.
이제 드디어 CAS 서버입니다.
CAS 서버는 WAR Overlay method 방식을 통해 빌드/배포됩니다.
Overlay 방식은 CAS 전체 Codebase를 다운받아 컴파일/빌드하지 않고 수정(커스터마이즈)이 필요한 부분만 개발/적용하여 기본 베이스 코드를 덮어쓰도록 빌드하여 cas.war 파일을 만들어내는 방식입니다.
WAR Overlay가 가능한 Maven이나 Gradle 빌드 툴을 사용해 적용할 수 있습니다.
Gradle 빌드를 사용해 CAS를 설치해 보겠습니다.
github에서 gradle overlay template을 받아 빌드합니다.
$ cd ~ $ git clone https://github.com/apereo/cas-gradle-overlay-template.git $ cd cas-gradle-overlay-template
buildNeeded 옵션으로 build에 필요한 것들이 모두 있는지 확인해 봅니다.
$ $ sudo ./gradlew buildNeeded Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. See https://docs.gradle.org/4.8/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 8s 3 actionable tasks: 3 executed
다른 옵션들을 확인하려면 tasks로 확인할 수 있습니다.
$ sudo ./gradlew tasks
빌드를 하기 전에 config들을 설정해 줘야 합니다.
cas의 config 기본 경로는 /etc/cas/config 입니다.
아래와 같이 디렉토리를 만들어 줍니다.
$ sudo mkdir /etc/cas/config $ sudo mkdir /etc/cas/logs
cas의 log 기록은 log4j2를 사용할겁니다. 그래서 설정 파일인 log4j2.xml 파일을 아래와 같이 만들어 줍니다.
$ sudo vim /etc/cas/config/log4j2.xml
log4.2.xml 파일 안에는 아래 내용을 추가합니다. (내용이 길어 link로 대체합니다.)
https://github.com/apereo/cas/blob/master/webapp/resources/log4j2.xml
keytool을 이용해 ssl 인증서 파일도 만들어 줍니다.
아래와 같이 keytool을 이용해 만들어 줍니다. -keystore 값은 /etc/cas/thekeystore로 해줍니다.
sudo keytool -genkey -alias cas -keyalg RSA -validity 999 -keystore /etc/cas/thekeystore -ext san=dns:ngle.co.kr
기본 유저 정보는 아래와 같이 등록해서 만들었습니다.
$ sudo keytool -genkey -alias cas -keyalg RSA -validity 999 -keystore /etc/cas/thekeystore -ext san=dns:ngle.co.kr Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: Tongchun Kim What is the name of your organizational unit? [Unknown]: Platform What is the name of your organization? [Unknown]: nGle What is the name of your City or Locality? [Unknown]: Seongnam What is the name of your State or Province? [Unknown]: Gyeonggi What is the two-letter country code for this unit? [Unknown]: KR Is CN=Tongchun Kim, OU=Platform, O=nGle, L=Seongnam, ST=Gyeonggi, C=KR correct? [no]: yes Enter key password for(RETURN if same as keystore password): Re-enter new password: Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /etc/cas/thekeystore -destkeystore /etc/cas/thekeystore -deststoretype pkcs12".
cas properties 파일도 만들어 줍니다.
$ sudo vim /etc/cas/config/cas.properties
cas.properties 파일 안에는 아래와 같이 추가합니다.
SSL 설정은 앞서 생성한 thekeystore 경로와 비번으로 합니다.
server.port=8443 # Theme # cas.theme.paramName=theme cas.theme.defaultThemeName=cas-theme-default # SSL server.ssl.keyStore=/etc/cas/thekeystore server.ssl.keyStorePassword=ngle9999 server.ssl.keyPassword=ngle9999 server.ssl.enabled=true server.contextPath=/ # log4j2 setting logging.config=file:/etc/cas/log4j2.xml server.contextParameters.isLog4jAutoInitializationDisabled=true cas.tgc.crypto.encryption.key=ngle1PbwSbnHeinpkZ cas.tgc.crypto.signing.key=ngle_szxK-5_eJjs-aUj-64Mp cas.logout.followServiceRedirects=true # Control log levels via properties logging.level.org.apereo.cas=DEBUG # CAS Server cas.server.name=https://cas.ngle.co.kr:8443 cas.server.prefix=https://cas.ngle.co.kr:8443/cas # cas.host.name= # InMemory Ticket Registry # Enable the backing map to be cacheable cas.ticket.registry.inMemory.cache=true cas.ticket.registry.inMemory.loadFactor=1 cas.ticket.registry.inMemory.concurrency=20 cas.ticket.registry.inMemory.initialCapacity=1000 cas.ticket.registry.inMemory.crypto.signing.key= cas.ticket.registry.inMemory.crypto.signing.keySize=512 cas.ticket.registry.inMemory.crypto.encryption.key= cas.ticket.registry.inMemory.crypto.encryption.keySize=16 cas.ticket.registry.inMemory.crypto.alg=AES cas.ticket.registry.inMemory.crypto.enabled=false cas.ticket.tgt.maxTimeToLiveInSeconds=2592000 cas.ticket.tgt.timeToKillInSeconds=2592000 cas.adminPagesSecurity.ip=127\.0\.0\.1
이제 빌드를 합니다.
$ sudo ./gradlew build Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. See https://docs.gradle.org/4.8/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 5s 3 actionable tasks: 3 executed
cas는 자체 tomcat 서버를 가지고 있습니다. cas를 바로 실행할 수도 있습니다.
$ sudo ./gradlew run
저는 실행했는데 Ready에서 inMemory 쪽에서 15분동안 같은 메시지만 보였습니다. 결국 종료했습니다.
설정에 누락이 있는건지 이건 좀 확인이 필요해 보입니다.
2018-10-11 22:36:12,725 DEBUG [org.apereo.cas.authentication.PseudoPlatformTransactionManager] - <Creating new transaction with name [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner.clean]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; 'ticketTransactionManager'> 2018-10-11 22:36:12,734 DEBUG [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner] - <Attempting to acquire ticket cleanup lock.> 2018-10-11 22:36:12,734 DEBUG [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner] - <Acquired lock. Proceeding with cleanup.> 2018-10-11 22:36:12,737 INFO [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner] - <[0] expired tickets removed.> 2018-10-11 22:36:12,737 DEBUG [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner] - <Releasing ticket cleanup lock.> 2018-10-11 22:36:12,738 DEBUG [org.apereo.cas.ticket.registry.DefaultTicketRegistryCleaner] - <Finished ticket cleanup.> 2018-10-11 22:36:12,739 DEBUG [org.apereo.cas.authentication.PseudoPlatformTransactionManager] - <Initiating transaction commit> 2018-10-11 22:37:02,713 DEBUG [org.apereo.cas.services.AbstractServicesManager] - <Loading services from [org.apereo.cas.services.ChainingServiceRegistry@83df233]> 2018-10-11 22:37:02,715 INFO [org.apereo.cas.services.AbstractServicesManager] - <Loaded [0] service(s) from [InMemoryServiceRegistry].> 2018-10-11 22:38:02,715 DEBUG [org.apereo.cas.services.AbstractServicesManager] - <Loading services from [org.apereo.cas.services.ChainingServiceRegistry@83df233]> 2018-10-11 22:38:02,717 INFO [org.apereo.cas.services.AbstractServicesManager] - <Loaded [0] service(s) from [InMemoryServiceRegistry].>
이번에는 Tomcat에서 실행할 war파일을 생성합니다.
$ sudo ./gradlew war Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. See https://docs.gradle.org/4.8/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 5s 1 actionable task: 1 executed
war 파일은 cas/build/libs/cas.war에 성생됩니다.
생성된 war 파일을 tomcat의 webapps 폴더에 ROOT.war로 복사합니다.
그리고 tomcat을 다시 실행해 줍니다.
$ sudo cp cas/build/libs/cas.war $CATALINA_HOME/webapps/ROOT.war $ sudo service tomcat8 restart
이제 브라우저에서 8080포트의 login 경로로 접속합니다.
http://<서버 IP>:8080/login
기본 계정은 casuser, 비번은 Mellon 입니다.
'Tools > LDAP & CAS' 카테고리의 다른 글
OpenLDAP + phpLDAPAdmin 설치 (on Ubuntu) (1) | 2019.03.26 |
---|---|
LDAP Client 설치 (on CentOS) (2) | 2018.10.12 |
LDAP Server 설치 (on CentOS) (1) | 2018.10.12 |