6월, 2019의 게시물 표시

단독망에서 Kitura 사용하는 방법

외부망이 연결되어 지지 않는 네트워크가 많다. 보통 보안이라는 이름으로 그렇게 구성되어 있다. 그렇다고 저장소(일단 Repository)를 연결해주지 않는다. 해당 업데이트 들은 CD 로 구워서 이동해야 한다. 그러면서 백신 검사는 한다고 한다. 리눅스 바이러스까지 잡는 V3 대단해요..ㅋㅋ 이런 상황에서 Kitura 를 운영하고 싶다면 먼저 걸리는게 있을 것이다. swift package update 를 하면 외부 저장소가 연결되지 않아 관련 모듈 설치가 안된다. 난 이런 경우 이렇게 해결한다. 일단 외부 연결이 되는 곳에서 해당 파일을 추가하고 업데이트를 한다. $ vi Package.swift .package(url: "https://gitbub.com/IBM-Swift/Kitura", from: "2.7.0") 추가한 다음에 하단에 타켓에 해당 내용을 추가해줘야 한다. 보통 이것을 빼먹어서 오류가 난다. .target(name: "app_name", dependencies: ["Kitura"]) 이제 패키지를 업데이트 한다. $ swift package update 뭐라 업데이트를 많이 한다. 관련 모듈까지 하기 때문이다. 이때 나오는 문구를 잘 적어 두어야 한다. 특히 각 모듈의 버전들..... 이것 때문에 설정이 아주 복잡해질 수 있다. 업데이트가 완료되면 $ cd .build $ cd repositories $ ls 방금 업데이트 한 관련 모듈이 이곳에 다 있다. 이 폴더를 통째로 복사하여 단독망으로 이동하면 된다. 나의 경우는 해당 모듈의 뒷부분은 전부 자르고 이동했다. $ mv Kitura--70115644 Kitura 단독망에서는 이렇게 사용했다. $ mkdir app_name $ cd app_name $ swift package init --type executable 폴더가 만들어지면 이곳에 re

swift Kitura 사용 중 CORS 설정 삽질기

서버용 Swift 웹 프레임 워크인 Kitura를 사용중이다. 이중 CORS 를 설정해야 하는 상황인데 일단 Kitura-CORS 라는 미들웨어가 있다. 이를 문서에 있는 대로 설정했으나.... 역시나 안된다. 다른 애들은 어떻게 되었다는 거지? Package.swift 에 해당 패키지를 추가하였다. .package(url: "https://github.com/IBM-Swift/Kitura-CORS.git", form: "2.1.1") 아래 target 에도 추가해야 한다. .target(name: "app_name", dependencies: ["KituraCORS"]) 이제 main.swift 에 임포트 부터 한다 import KituraCORS let options = Options(allowedOrigin: .all, methods: ["GET", "POST"], allowedHeaders: ["Content-Type"], maxAge: 5) let kors = CORS(options: options) let router = Router() router.all("/cors", middleware: cors) 컴파일을 하고 앱을 실행한 다음 웹서버를 테스트하면 오류가 난다. Access-Control-Allow-Origin 어쩌고 저쩌고...블라블라 설정이 잘못 되었는지 각종 설정을 다 바꾸어 보아도 되지 않는다. 이놈들은 되지도 않는 모듈을 왜 올려 놓은거야... 아님 최신 파일과 맞지 않는건가? 그리하여 CORS 에 대한 문서를 다시 처음부터 읽기 시작하였다. CORS란 Cross-Origin Resource Sharing 으로 클라이언트인 브라우저에서 막는다는 내용이며 응답 헤더에 Access-Control-Allow-Origin 에 들어 있는 URL