1. 개요
이전에 scoold를 로컬에서 실행하고 paraio.com과 연결에서 서비스를 구축해 보았다. scoold와 para를 로컬 환경에서 연동하여 서비스를 구축해 보자.
2. para 실행
다음은 para 애플리케이션을 실행하기 위한 환경설정 파일이다.
"개발 환경(development)"으로 하였고 포트 8080으로 설정했다. MySQL을 접속하기 위한 연결정보를 입력했다.
para-application.conf
para.env = "development"
para.port = 8080
para.dao = "SqlDAO"
para.sql.driver = "com.mysql.cj.jdbc.Driver"
para.sql.url = "mysql://localhost:3306/para"
para.sql.user = "root"
para.sql.password = "1234"
para를 실행하기 편하게 하기 위해 para.cmd를 만들었다.
@echo off
more para-application.conf
java -jar -Dconfig.file=./para-application.conf -Dloader.path=lib para-jar-1.46.0.jar
para 실행
3. App을 추가
npm으로 para-cli (para 명령 도구)을 설치하고 "para-cli setup"을 수행합니다.
> npm install -g para-cli
> para-cli setup
그리고 "myapp"이라는 앱을 하나 추가합니다.
> para-cli new-app "myapp" --name "My App"
C:\Users\OneWay\AppData\Roaming\para-cli-nodejs\Config\config.json
{
"accessKey": "app:para",
"secretKey": "mGmUFva+vmDYMMYIXC4dHGZHOp+5FwIaNKS15ZxpXVk1i8q+yZWZIA==",
"endpoint": "http://localhost:8080",
"jwt": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE ...(생략)... 357KvZmM"
}
새로 생성된 "app:myapp" json
{
"id": "app:myapp",
"timestamp": 1656063628926,
"type": "app",
"appid": "para",
"updated": 1656063721692,
"name": "My App",
"votes": 0,
"version": 0,
"stored": true,
"indexed": true,
"cached": true,
"sharingIndex": false,
"sharingTable": false,
"secret": "fEJsNS2cVokjS4jpIS1IDONQgwJfa/yKdApsn1RJpHasiEZLUWPfIg==",
"readOnly": false,
"datatypes": { "profiles": "profile" },
"validationConstraints": {},
"resourcePermissions": {},
"active": true,
"tokenValiditySec": 86400,
"settings": {
"gp_app_id": "",
"gp_secret": "",
"fb_app_id": "",
"fb_secret": "",
"gh_app_id": "",
"gh_secret": "",
"in_app_id": "",
"in_secret": "",
"tw_app_id": "",
"tw_secret": "",
"ms_app_id": "",
"ms_secret": "",
"sl_app_id": "",
"sl_secret": "",
"az_app_id": "",
"az_secret": "",
"ms_tenant_id": "common",
"oa2_app_id": "",
"oa2_secret": "",
"security.oauth.token_url": "",
"security.oauth.profile_url": "",
"security.oauth.scope": "openid email profile",
"security.oauth.accept_header": "",
"security.oauth.download_avatars": false,
"security.oauth.token_delegation_enabled": false,
"oa2second_app_id": "",
"oa2second_secret": "",
"security.oauthsecond.token_url": "",
"security.oauthsecond.profile_url": "",
"security.oauthsecond.scope": "openid email profile",
"security.oauthsecond.accept_header": "",
"security.oauthsecond.download_avatars": false,
"security.oauthsecond.token_delegation_enabled": false,
"oa2third_app_id": "",
"oa2third_secret": "",
"security.oauththird.token_url": "",
"security.oauththird.profile_url": "",
"security.oauththird.scope": "openid email profile",
"security.oauththird.accept_header": "",
"security.oauththird.download_avatars": false,
"security.oauththird.token_delegation_enabled": false,
"security.ldap.server_url": "",
"security.ldap.base_dn": "",
"security.ldap.bind_dn": "",
"security.ldap.bind_pass": "",
"security.ldap.user_search_base": "",
"security.ldap.user_search_filter": "(cn={0})",
"security.ldap.user_dn_pattern": "uid={0}",
"security.ldap.password_attribute": "userPassword",
"security.ldap.username_as_name": false,
"security.ldap.active_directory_domain": "",
"security.ldap.mods_group_node": "",
"security.ldap.admins_group_node": "",
"security.saml.sp.entityid": "",
"security.saml.sp.assertion_consumer_service.url": "",
"security.saml.sp.nameidformat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
"security.saml.sp.x509cert": "",
"security.saml.sp.privatekey": "",
"security.saml.idp.entityid": "",
"security.saml.idp.single_sign_on_service.url": "",
"security.saml.idp.x509cert": "",
"security.saml.idp.metadata_url": "",
"security.saml.security.authnrequest_signed": false,
"security.saml.security.want_messages_signed": false,
"security.saml.security.want_assertions_signed": false,
"security.saml.security.want_assertions_encrypted": false,
"security.saml.security.want_nameid_encrypted": false,
"security.saml.security.sign_metadata": false,
"security.saml.security.want_xml_validation": true,
"security.saml.security.signature_algorithm": "",
"security.saml.attributes.id": "UserID",
"security.saml.attributes.picture": "Picture",
"security.saml.attributes.email": "EmailAddress",
"security.saml.attributes.name": "GivenName",
"security.saml.attributes.firstname": "FirstName",
"security.saml.attributes.lastname": "LastName",
"security.saml.domain": "paraio.com",
"app_secret_key": "",
"security.allow_unverified_emails": true,
"security.one_session_per_user": true,
"session_timeout": 86400,
"signin_success": "http://localhost:8000/signin/success?jwt=id",
"signin_failure": "http://localhost:8000/signin?code=3&error=true"
}
}
4. scoold를 연동
다음은 scoold 애플리케이션을 실행하기 위한 환경설정 파일이다.
"myapp"의 access_key와 secret_key 그리고 para_endpoint를 설정하였다.
scoold-application.conf
scoold.env = "development"
scoold.app_name = "Scoold"
scoold.host_url = "http://localhost:8000"
scoold.port = 8000
scoold.para_access_key = "app:myapp"
scoold.para_secret_key = "fEJsNS2cVokjS4jpIS1IDONQgwJfa/yKdApsn1RJpHasiEZLUWPfIg=="
scoold.para_endpoint = "http://localhost:8080"
... (중략) ...
scoold를 실행하기 편하게 하기 위해 scoold.cmd를 만들었다.
@echo off
more scoold-application.conf
java -jar -Dconfig.file=./scoold-application.conf scoold-1.49.7.jar
scoold 실행
브라우저에서 scoold를 접속한다. 그리고 간단한 질문도 등록해 본다.
5. Para Web Console
Para Web Console은 Para 백엔드를 관리하기 위한 웹 관리 콘솔이다.
아래의 Github에서 Para Web Console을 내려받는다.
> git clone https://github.com/Erudika/para-admin-ui.git
para-admin 폴더에서 다음의 명령을 실행한다.
> python -m http.server 9000
브라우저에서 http://localhost:9000/를 입력하면 hello 페이지가 보인다. access_key와 secret_key을 입력하면 연결이 된다.
웹에서 "app:myapp"에서 관리하고 있는 객체들을 바로 확인할 수 있다.
'■ Project ■ > 파일럿 프로젝트' 카테고리의 다른 글
[파일럿 프로젝트] scoold(프론트)와 para(백앤드)를 연동해보자. (0) | 2023.02.11 |
---|---|
[파일럿 프로젝트] 지식을 효율적으로 공유하는 scoold 오픈소스 (0) | 2023.02.11 |
[파일럿 프로젝트] 클라우드를 위한 범용 백엔드 프레임워크 - Para (0) | 2023.02.11 |
댓글