Ubuntu16.04에 Swift4를 설치하고 Vapor에 Hello World를 설치하기 전에 #love_swift

Swift 동호회 캠프 2018/1/20-1/21 기사가 적혀 있습니다.#love_swift

작자 규격

  • 평소에는 Node입니다.저는 js
  • 를 쓰고 있습니다.
  • Swift는 약 1년 전 서버 Side Swift를 터치한 정도
  • 그래서 Swift를 썼다기보다는 환경 구축 복습이라고 적어 놓을게요.

    환경

  • Ubuntu 16.04
  • Swift 4.0.3
  • Vapor 2.4.0
  • 최신 버전 보기


    어떤 언어든 다 그렇지만 최신 버전이 궁금해요.
    2018년 1월 20일 현재 최신은 4.0.3인 것 같습니다.

    Ubuntu에 설치


    Ubuntu 버전 보기
    $ cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
    
    16.04.

    설치 도구


    참조 Ubuntu16.04에 Swift4를 설치하여 swift 패키지를 간단히 사용 설치
    $ sudo apt-get install clang libpython2.7 libxml2
    

    설치 스위치


    4.0.3은 DL
    $ wget https://swift.org/builds/swift-4.0.3-release/ubuntu1604/swift-4.0.3-RELEASE/swift-4.0.3-RELEASE-ubuntu16.04.tar.gz
    
    $ tar zxfv swift-4.0.3-RELEASE-ubuntu16.04.tar.gz
    
    $ sudo mv swift-4.0.3-RELEASE-ubuntu16.04 /usr/local/swift
    
    패스를 하다.
    확인
    $ swift --version
    Swift version 4.0.3 (swift-4.0.3-RELEASE)
    Target: x86_64-unknown-linux-gnu
    
    무사하다

    패키지 전환 오류

    $ swift package init --type executable
    /usr/local/swift/usr/bin/swift-package: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory
    
    Electron apps can't find libcurl.so.사 해결했습니다.
    $ sudo apt-get install curl libcurl3
    

    패키지 재변환


    myswift라는 폴더를 만들고 사용합니다.
    $ mkdir myswift
    $ cd myswift
    
    $ swift package init --type executable
    Creating executable package: myswift
    Creating Package.swift
    Creating README.md
    Creating .gitignore
    Creating Sources/
    Creating Sources/myswift/main.swift
    Creating Tests/
    
    이렇게 하면 헬로월드 프로젝트를 진행할 수 있다.
    구축해 보세요.
    $ swift build
    Compile Swift Module 'myswift' (1 sources)
    Linking ./.build/x86_64-unknown-linux/debug/myswift
    
    ./.build/x86_64-unknown-linux/debug/myswift의 실행 파일입니다.

    실행

    $ ./.build/x86_64-unknown-linux/debug/myswift
    Hello, world!
    
    나는 이곳을 막지 못했다.
    그럼

    Vapor에서 웹 서버 설정 시도


    비록 몇 개의 네트워크 프레임워크가 있지만 어쨌든 한번 사용해 보는 것 같다.
    $ mkdir webapp
    $ cd webapp
    $ swift package init --type executable
    
    참조Manual Quickstart 진행.
    편집Sources/webapp/main.swiftmain.swift
    
    import Vapor
    
    let drop = try Droplet()
    
    drop.get("hello") { req in
      return "Hello Vapor"
    }
    
    try drop.run()
    
    
    편집Package.swift.
    Package.swift
    // swift-tools-version:4.0
    // The swift-tools-version declares the minimum version of Swift required to build this package.
    
    import PackageDescription
    
    let package = Package(
        name: "webapp",
        dependencies: [
            // Dependencies declare other packages that this package depends on.
            .package(url: "https://github.com/vapor/vapor.git", from: "2.4.0"),
        ],
        targets: [
            // Targets are the basic building blocks of a package. A target can define a module or a test suite.
            // Targets can depend on other targets in this package, and on products in packages which this package depends on.
            .target(
                name: "webapp",
                dependencies: ["Vapor"]),
        ]
    )
    
    구축
    $ swift build
    
    시간이 오래 걸려요.
    Compile CHTTP http_parser.c
    Compile Swift Module 'libc' (1 sources)
    Compile Swift Module 'Debugging' (1 sources)
    Compile Swift Module 'Bits' (19 sources)
    Compile Swift Module 'PathIndexable' (2 sources)
    Compile Swift Module 'Core' (23 sources)
    Compile Swift Module 'Transport' (10 sources)
    Compile Swift Module 'Random' (6 sources)
    Compile Swift Module 'Node' (38 sources)
    Compile Swift Module 'Console' (36 sources)
    Compile Swift Module 'URI' (6 sources)
    Compile Swift Module 'Sockets' (22 sources)
    Compile Swift Module 'Crypto' (13 sources)
    Compile Swift Module 'BCrypt' (9 sources)
    Compile Swift Module 'Cache' (2 sources)
    Compile Swift Module 'Branches' (3 sources)
    Compile Swift Module 'JSON' (8 sources)
    Compile Swift Module 'TLS' (12 sources)
    Compile Swift Module 'SMTP' (21 sources)
    Compile Swift Module 'Configs' (13 sources)
    Compile Swift Module 'HTTP' (45 sources)
    Compile Swift Module 'WebSockets' (14 sources)
    Compile Swift Module 'Cookies' (11 sources)
    Compile Swift Module 'Multipart' (6 sources)
    Compile Swift Module 'Routing' (10 sources)
    Compile Swift Module 'Sessions' (7 sources)
    Compile Swift Module 'FormData' (4 sources)
    Compile Swift Module 'Vapor' (100 sources)
    Compile Swift Module 'webapp' (1 sources)
    Linking ./.build/x86_64-unknown-linux/debug/webapp
    
    WebSocket, Session, 이것저것 떨어졌네.
    순조롭게 건설되었다.집행
    $ ./.build/x86_64-unknown-linux/debug/webapp
    
    Could not load config files from: /home/n0bisuke/myswift/webapp/Config/
    Try using the configDir flag
    ex: .build/debug/Run --configDir=/absolute/path/to/configs
    The default hash should be replaced before using in production.
    The default cipher should be replaced before using in production.
    No command supplied, defaulting to serve...
    Starting server on 0.0.0.0:8080
    
    서버가 시작되었습니다.:8080/hello.

    네트워크 서버가 설정되었습니다.
    다시 해보고 싶은데 여기까지...

    좋은 웹페이지 즐겨찾기