swift技术文章收藏借鉴VaporVapor

在Ubuntu安装swift3.0并部署Vapor

2016-10-18  本文已影响2792人  若非长得丑怎会做逗比

Linux 安装 swift3.0

   // 首先更新下源
 sudo apt-get update
 // 安装wget
sudo apt-get install wget
// 安装完了如何使用 wget 下载 很简单 wget 下载链接
// 首先 新建一个文件
mkdir Swift3.0
// 进入文件夹
cd Swift3.0 
// 下载Swift3.0
wget https://swift.org/builds/development/ubuntu1404/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a-ubuntu14.04.tar.gz
// 下载签名
wget https://swift.org/builds/development/ubuntu1404/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a-ubuntu14.04.tar.gz.sig
QQ20161018-2.png

进入安装步骤 跟着 swift.org 的教程走

 sudo apt-get install clang libicu-dev
// 第一种
gpg --keyserver hkp://pool.sks-keyservers.net \\\\
      --recv-keys \\\\
      '7463 A81A 4B2E EA1B 551F  FBCF D441 C977 412B 37AD' \\\\
      '1BE1 E29A 084C B305 F397  D62A 9F59 7F4D 21A5 6D5F' \\\\
      'A3BA FD35 56A5 9079 C068  94BD 63BC 1CFE 91D3 06C6'

// 第二种
wget -q -O - https://swift.org/keys/all-keys.asc | \\\\
  gpg --import -
gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift

OR

// 这种是用下载的文件验证
gpg --verify swift-<VERSION>-<PLATFORM>.tar.gz.sig

// 会输出如下信息等等
...
gpg: Good signature from "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>"
tar xzf swift-<VERSION>-<PLATFORM>.tar.gz
cd ~ 
// .bashrc 是一个隐藏文件
vi .bashrc

// 在最底部配置swift3.0 的路径
# Swift
export PATH=~/Swift3.0/swift-3.0-RELEASE-ubuntu14.04/usr/bin:"${PATH}"
// 保存退出
QQ20161018-3.png

方便管理代码还需要安装下 git

sudo apt-get install git

安装toolbox vapor官方提供的一个终端工具

curl -sL toolbox.qutheory.io | bash

// 可能会报错 找不到 curl 命令 安装一下就好了
sudo apt-get install curl

// 安装curl再执行上面的命令 有点慢

// 安装完toolbox 输入 vapor 回车会有相应的提示
vapor new hello 在当前目录创建一个工程
vapor build 编译工程
vapor xcode 生成xcode项目
QQ20161018-4.png QQ20161018-5.png

SJWeatherServer 是一个对MobAPI天气数据的转发 以及在 vapor中使用MySQL

 // 在官网获取MySQL的APT仓库 如果报错 请执行 sudo apt-get install wget
 wget http://repo.mysql.com//mysql-apt-config_0.6.0-1_all.deb 
// 安装
 dpkg -i mysql-apt-config_0.6.0-1_all.deb 
// 回车后出现如下界面:选择最新版本5.7 // 选择5.7后,选择apply 
// 更新下apt-get update
 // 移除原先安装mysql 
apt-get remove mysql-server 
apt-get remove mysql-client 
apt-get autoremove 
// 安装新的 
sudo apt-get install mysql-server
// OK,5.7版本的mysql安装成功!
// 在安装下面的 不然可能会出现 MySQL头文件找不到
apt-get install libmysqlclient-dev 
/**常用命令:
 启动
 1、使用 service 启动:service mysql start 
 2、使用 mysqld 脚本启动:/etc/inint.d/mysql start 
 3、使用 safe_mysqld 启动:safe_mysql& 
停止 
1、使用 service 启动:service mysql stop 
2、使用 mysqld 脚本启动:/etc/inint.d/mysql stop 
3、mysqladmin shutdown
 重启 
1、使用 service 启动:service mysql restart 
2、使用 mysqld 脚本启动:/etc/inint.d/mysql restart 
// 添加账户 
grant all privileges on *.* to "username"@"hostname" identified by "passwd"; 
// 上面命令在5.7执行可能会报错 
// 解决: 先退出 MySQL 执行下面命令 
mysql_upgrade -u root -p 
// 重启MySQL 
service mysql restart 
*/
// 首先需要为项目添加MySQL 依赖 在Package.swift 中加入下面代码 然后执行 vapor build 会自动安装好依赖
.Package(url: "https://github.com/qutheory/mysql.git", majorVersion: 1, minor: 0)
class DBConfig {
    static let HOST = "118.178.90.225" // 数据地址 本地环境 则是 127.0.0.1
    static let USER = "king" // 数据库用户名
    static let PWD = "King" // 用户名密码
    static let DATABASE = "SJWeather" // 数据库 请先在你的数据库中创建 要使用的数据库
}
import MySQL

class DBManager {
    
    private static var instance: DBManager!
    private var databaseConnectionStatus = false
    @discardableResult
    static func share() -> DBManager {
        
        if instance == nil {
            instance = DBManager()
        }
        return instance
    }
    
    private var mysql: MySQL.Database!
    
    init() {
        setUp()
    }
    
    private func setUp() {
        
        do {
           // 3306 为数据端口
            mysql = try MySQL.Database(
                host: DBConfig.HOST,
                user: DBConfig.USER,
                password: DBConfig.PWD,
                database: DBConfig.DATABASE,
                port: 3306
            )
            print("MySQL connect success")
            databaseConnectionStatus = true
        } catch {
            print("MySQL connect failed")
            databaseConnectionStatus = false
        }
    }
import Vapor
import HTTP

let app = Droplet()

// 创建一个API组
app.group("/v1") { api in
    
    api.get("registered.json") { request in
        
        return try RequestHandler.handlerRegistered(request: request)
    }
    
    api.get("login.json") { request in
        
        return try RequestHandler.handlerLogin(request: request)
    }
    
    api.get("logout.json") { request in
        
        return try RequestHandler.handlerLogout(request: request)
    }
    
    api.get("citylist.json") { request in
        
        return try RequestHandler.handlerGetCityList(request: request)
    }
    
    api.get("query.json") { request in
        
        return try RequestHandler.handlerQuery(request: request)
    }
    
    api.get("type.json") { request in
        
        return try RequestHandler.handlerWeatherType(request: request)
    }
}

app.get("/") { request in
    // 直接返回一个html 页面
    return try app.view.make("README.html")
}

app.run()

在Ubuntu服务器部署运行

QQ20161018-6.png QQ20161018-8.png QQ20161018-9.png
上一篇 下一篇

猜你喜欢

热点阅读