ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 💧Vapor💧 Heroku MySQL DB 사용하기
    Programing/Vapor 2020. 5. 11. 03:18

    안녕하세요, 5anniversary 입니다!!

     

    이번 시간에는 지난 시간에 이어서 heroku 서버에 MySQL DB를 만들어 사용하는 방법을 알아보는 시간을 가질 거예요.

     

    그렇다면 바로 heroku 대시보드로 들어가야겠죠??

    add-ons에서 저희가 사용할 서비스는

     

    JawsDB입니다.

    추가를 해주시고 난 이후에 

     

    터미널에 heroku config를 작성해주시면

     

    JAWSDB_URL: mysql://z2gsgk267lrbl4yf:j4rki5lrhxyu4gds@ijj1btjwrd3b7932.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/vclhtpt0ysupjjlf

    와 같은 환경변수로 설정된 DB정보를 받을 수 있습니다.

     

    JAWSDB_URL: mysql://<username>:<password>@<host>:<port>/<db_name>

    와 같이 표현이 되기 때문에 해당하는 DB정보를 config.swift에 작성을 해주시면 되겠죠??

     

    public func configure(_ config: inout Config,
                          _ env: inout Environment,
                          _ services: inout Services) throws {
    	
        ...code...
    
        var databases = DatabasesConfig()
        let hostname : String = "ijj1btjwrd3b7932.cbetxkdyhwsb.us-east-1.rds.amazonaws.com"
        let username : String = "z2gsgk267lrbl4yf"
        let password : String = "j4rki5lrhxyu4gds"
        let databaseName: String = "vclhtpt0ysupjjlf"
        let databaseConfig = MySQLDatabaseConfig(
          hostname: hostname,
          port: 3306,
          username: username,
          password: password,
          database: databaseName)
          
       
       ...code...
       
    }
    

     

    그런데 이렇게 작성하게 되면 DB정보가 전부 노출이 되니 서버의 환경변수에 저장해주도록 하면 좋습니다.

    heroku config:set DB_HOSTNAME=호스트이름
    heroku config:set DB_USERNAME=유저이름
    heroku config:set DB_PASSWORD=비밀번호
    heroku config:set DB_DBNAME=디비이름
    heroku config:set DB_PORT=포트번호
    

    해당 코드로 환경변수에 설정을

    public func configure(_ config: inout Config,
                          _ env: inout Environment,
                          _ services: inout Services) throws {
    	
    		...code...
            
    	var databases = DatabasesConfig()
        let hostname = Environment.get("DB_HOSTNAME") ?? "로컬"
        let username = Environment.get("DB_USERNAME") ?? "로컬 DB 유저이름"
        let password = Environment.get("DB_PASSWORD") ?? "로컬 DB 비밀번호"
        let databaseName = Environment.get("DB_DBNAME") ?? "로컬 DB DB이름"
        let databaseConfig = MySQLDatabaseConfig(
          hostname: hostname,
          port: 3306,
          username: username,
          password: password,
          database: databaseName)
    
    		...code...
            
    }

    config.swift에서 위와 같이 작성을 해주시면 로컬에서는 로컬의 디비를 사용,

     

    서버에 올리게 되면 서버 DB를 사용하는 환경을 가지게 됩니다.

     

    그리고 deploy를 해주시고

     

    이전 포스팅에서 작성되어있던 /users을 작성해 보시면

    출력은 되지 않지만 DB가 연결된 것을 확인할 수 있습니다.

     

    다음 시간부터는 지금까지 설정했던 개발환경을 가지고 활용해보는 시간을 가지도록 하겠습니다~!

    댓글

Designed by Tistory.