https://yuddomack.tistory.com/entry/1React-Native-%EC%84%A4%EC%B9%98%EC%99%80-%EC%8B%A4%ED%96%89hello-world?category=754156 (이하 링크 문서) - 이 링크에 너무 잘 정리되어 있어 따라하면서 배우는 중입니다. (글쓴이님. 감사합니다. :)


https://wix.github.io/react-native-navigation/#/docs/Installing (이하 공식 문서)


아래 내용은 다음과 같은 환경에서 진행된 내용입니다. 

OS 

 macOS Mojave 10.14.1

 Android Studio 

 3.3.1

 XCode 

 10.1

 nodejs 

 10.13.0

 react 

 16.6.3

 react-native

 0.58.6

 react-native-navigation

 2.13.1



일단 링크문서의 1~5 chapter까지는 좋은 가이드가 되니 꼭 참고하시기 바랍니다.


chapter 6에서는 react native navigation을 다루는데, 최신 버전에서 변경된 내용들이 있어 별도로 정리를 해둡니다.


react-native-navigation을 설치하고 나면 low severity vulnerabilities에 대한 경고를 출력하고 npm audit fix(npm v6)를 실행하라는 안내가 나올 수 있습니다.


이를 실행하면 react-native-navigation을 사용하기 위해 필요한 몇몇 module의 버전을 조정하는 작업이 진행됩니다.


Android/iOS 세팅은 공식문서의 내용 중 수동 링크를 기준으로 정리하며 부족한 샘플 코드를 추가하였습니다. 왜 수동 링크 작업을 해야 하는지는 링크 문서에 잘 나와 있으니 참고하시기 바랍니다.


[RNN iOS 세팅]


우선 링크 문서 6장 의 내용을 참고하여 xcode에 react native navigation을 추가합니다. 공식문서보다 이 링크가 좀 더 명확히 정리되어 있습니다.


AppDelegate.m을 수정할 때 아래와 같은 에러가 발생할 수 있습니다.


 React/RCTBundleURLProvider.h file not found

 Use of undeclared identifier 'rootView'


이와 관련된 해결책은 공식 문서에 있으며, XCode에서 프로젝트를 선택 후, 메뉴 Product >> Scheme 에서 react native navigation을 선택하면 사라집니다.


링크 문서에서는 공식 문서와는 달리 RCCManager.h를 사용하도록 코드가 되어 있는데, 이전 버전의 내용이니, 아래 내용을 참고하시면 됩니다.


** 중간에 여러 코드 및 세팅을 테스트를 위해 수정하면서 Systrace.setEnable  관련된 에러가 ios 에뮬레이터에서 발생. 검색해보니 방법없으니 다시 설치하라는 내용만 있어 프로젝트 삭제 후 다시 설치. -0-a


관련 코드들은 공식 문서의 내용으로 적용하면 됩니다. 


(( AppDelegate.m ))


#import "AppDelegate.h" #import <React/RCTBundleURLProvider.h> #import <React/RCTRootView.h> #import <ReactNativeNavigation/ReactNativeNavigation.h> @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; [ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions]; return YES; } @end


XCode를 위한 세팅은 이것으로 끝입니다.


[RNN Android 세팅]


** 간간히 이런 작업들을 할 때 느끼는 거지만 아래 링크 문서의 샘플 코드에서 rootProject.projectDir 처럼, 저런 정의된 값을 어디서 찾아야 하는지 난감할 때가 많다. 기존에 android studio를 많이 다뤄 보신 분들은 쉽게 알 수도 있을 듯 한데, 처음 볼 때는 뜬금없어서.. 특히 javascript 프로젝트 할 때는 predefined keyword가 아닌 것들이 (intelligence를 지원하지 않는 ide에서) class의 public 맴버처럼 접근하는걸 볼 때마다 이게 어디에 정의되어 있는지, 올바르게 사용된건지 확인하기가 만만치 않은 듯 합니다. 자꾸 하다보니 그러려니 하긴 하지만...


아래 네 개의 gradle 파일을 수정할 때는 공식 문서를 참고하고, 자신의 android studio 버전에 따라 문서의 내용과 다를 수 있으니, 그에 맞추어 수정해야 합니다.

(( android/settings.gradle ))

(( android/gradle/wrapper/gradle-wrapper.properties ))

(( android/build.gradle ))

(( android/app/build.gradle ))


아래 두 코드를 공식 문서를 참고하여 수정 합니다.


(( MainActivity.java ))

(( MainApplication.java ))


그 다음으로 React Navtive 의 버전을 타겟팅하는 설정이 android/app/build.gradle에 추가해야 합니다. 별도 항목으로 제외된 것을 보면 중요한 항목인 듯 하네요. package.json 파일을 확인하니 제가 사용하는 버전은 0.58.6인 상태입니다.


저는 missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57_5"로 설정을 추가 했습니다. 


공식 문서의 내용 1~8가지 따라하면서 주의할 점은 app/build.gradle의 dependencies를 추가할 때 특정 버전 대신 "${rootProject.ext.supportLibVersion}"을 설정하세요. 버전이 맞지 않아 빌드 실패 하는 경우가 종종 있었습니다. 

(https://github.com/wix/react-native-navigation/issues/3419 를 참고하세요.)







CentOS에 Elasticsearch를 설치해 보았다. 정리할 생각이 없었는데, 하다보니 중간에 막히는 것들이 처리하면서 정리 한번 해둬야겠단 생각이 들었다. 


일단 처음 설치할 때 주의할 점은 Elasticsearch는 root 계정으로 실행할 수 없다. (실행 가능하게 하는 옵션이 있던데, 최신 버전에서는 안되는 듯. 그리고 보안의 측면에서도 당연히 좋지 않아 추천하지 않는다.) 그러므로 전용 계정을 설정해서 설치, 실행하자.


설치 환경 및 각종 버전은 아래와 같다. 

CentOS  7.5.x

Elasticsearch 6.3.0 (https://www.elastic.co/downloads/elasticsearch)

plugin, Elastic-HQ (https://github.com/ElasticHQ/elasticsearch-HQ)



wget으로 다운로드 받아 설치한다. 별도 인스톨 과정은 없다. bin/elasticsearch 로 실행 가능.


wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz

tar xvzf elasticsearch-6.3.0.tar.gz


실행전에 한 가지 수정하고 진행하자.

config/elasticsearch.yml에서 http.host를 자신이 사용하고자 하는 ip로 수정한다. 예를들어 내 ip가 172.150.x.x 이며 config를 수정하지 않고 실행할 경우 로컬에서 localhost로 접속은 되지만, 다른 PC에서 172.150.x.x로 접속되지는 않는다.


처음이니 데몬 옵션 주지말고 elasticsearch로 실행해보라. -d로 실행하며 혹시 모를 에러가 보이지 않으니 주의가 필요하다. 잘 실행되었는지 일단 확인해보자.


root 권한으로 실행되지 않으니 주의!


cluster 설정을 한 후 root로 실행하면 root권한으로 실행되지 않는다는 메세지와 함께, logs 폴더 아래 몇몇 로그 파일이 생긴다. 이를 지우지 않고 다른 계정으로 실행하면 log 파일 접근 실패 에러가 뜨면서 실행되지 않는다. 해당 로그 파일들을 삭제 후 다시 시작할 것!


curl 172.150.x.x:9200 ( 혹은 config를 수정하지 않았다면 localhost:9200)  

아래와 같은 간단한 health 정보가 출력되면 정상이다. 





혹시 그래도 접속이 안된다면 iptables에 9200번 ACCEPT 처리를 해주자.


 firewall-cmd --zone=public --permanent --add-port=9200/tcp


이제 플러그인 Elastic-HQ를 설치해보자. 이를 설치하기 위해 python 3.4 이상의 버전이 필요하다. CentOS 7.5 버전에는 기본적으로 2.x 버전이 설치되어 있다. 3.4 이상의 버전을 추가로 설치한 후 아래로 진행하자. 


( http://docs.elastichq.org/installation.html 참고)


git clone https://github.com/ElasticHQ/elasticsearch-HQ.git


설치에 필요한 추가 라이브러리를 설치한다. elasticsearch-HQ 폴더로 가서 아래를 실행.

(pip가 없다면 "yum install python-pip"로 설치.)


pip install -r requirements.txt

아래와 같은 에러 발생.

python-socketio 2.0.0 has requirement python-engineio>=2.2.0, but you'll have python-engineio 2.0.2 which is incompatible.

바로 업그레이드 시킴
pip3.6 install --upgrade python-engineio
(pip도 link설정 수정 안했다면 pip버전 지정해서 설정해야 함.)

이제 아래와 같이 실행 가능해졌다.

python3 application.py &
위에서 따로 언급 안했지만 python 3.x 버전을 추가로 설치 후 python 링크를 python3.6으로 대체했다면 시스템에 여러 문제가 발생할 수 있다. 

리눅스 시스템, 특히 CentOS는 python2를 많이 사용하고 있기 때문이다. 그래서 가능하면 python3.6.x 버전을 python3으로만 단축해서 사용해야 한다. 

HQ의 접속 포트는 5000번이다. iptables에 추가 후 브라우져로 접속해보면 아래와 같은 화면을 볼 수 있다.




주소를 지정하면 다음 화면으로 넘어간다.

HQ는 백그라운드로 실행했으므로 종료 시킬 때는 kill로... 


공식 문서에 python manage.py runserver 이걸로 실행하라는 이야기 있는데 에러가 나고, 해결책은 관심없어서 안 찾아봤음. 게다가 root 로 실행해야 함. -0-a 해결 방법 아시는 분 계시면 댓글 부탁드립니다. (공손..)


이까지.. 


다음은 Kibana 설치와 샘플 올려서 그래프 보는 방법에 문제가 있으면 이어서 계속, 별 문제 없으면 스킵.  :)


큰 건 아니고 작은 허들이 있어서 기록해 둠.

다운로드는 아래와 같이. (kibana는 elasticsearch와 동일한 버전을 다운받아 설정해야 한다. 안그럼 시작 시 경고 등장함.)

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz
압축을 풀고 config 일부를 수정하자.

config/kibana.yml에서  아래 사항을 설정한다. 


server.host: "yourkibanaip"

elasticsearch.url: "http://yourip:9200"

xpack.security.enabled: false   <<- 이에 대한 경고가 뜬다. 일단 테스트 과정이니 넘어감.


elasticsearch.url을 현재까지는 멀티로 지정할 수 없다. 커뮤니티에서도 다들 stack 솔루션 중 kibana만 안된다고 성토 중. 
( 관련 링크 : https://github.com/elastic/kibana/issues/214)

host 주소를 정확히 입력해두고, elasticsearch 주소 설정, 시작할 때 관리자 비번 안물어보게 설정.


이제 실행!!


bin/kibana


그럼 아래와 같은 화면을 볼 수 있다.




이제 logstash와 실제 데이터를 연동해서 결과를 만들어 볼 차례.


그 과정에 또 허들이 생기면 이젠 다른 글에 이어 정리할 예정. 바이~~~!


[아래 문서를 같이 봐야 함.]


About max file descriptors



+ Recent posts