Thứ tư, 10/02/2016 | 00:00 GMT+7

Cách chạy ứng dụng Meteor an toàn với Sandstorm trên Ubuntu 14.04

Meteor là một khuôn khổ cho JavaScript cho phép các nhà phát triển web viết mã JavaScript một lần và sử dụng lại nó cả phía client và phía server . Một hướng dẫn khác mô tả cách triển khai ứng dụng Meteor bằng Nginx và Upstart , nhưng hướng dẫn này bao gồm một cách tiếp cận khác để triển khai ứng dụng Meteor: tạo và chạy gói Sandstorm.

Được viết với sự cộng tác của Sandstorm

Sandstorm là một nền tảng open-souce cho các server cá nhân, nghĩa là nó được dùng để cài đặt nhiều ứng dụng khác nhau trên một server với giao diện rất dễ sử dụng. Một hướng dẫn trước đây đã chỉ racách cài đặt Sandstorm để chạy các ứng dụng như WordPress và MediaWiki; hướng dẫn này trình bày cách chạy một ứng dụng tùy chỉnh, giống như một ứng dụng bạn đã tự viết.

Trong Sandstorm, cài đặt một ứng dụng cho phép bạn tạo tài liệu mới bằng ứng dụng đó. Mỗi tài liệu là một version đang chạy riêng biệt của ứng dụng và mã cấp nguồn cho mỗi tài liệu (mà Sandstorm gọi là hạt ) là riêng tư theo mặc định. Đây là ý nghĩa mà Sandstorm giúp bạn dễ dàng chạy các ứng dụng Meteor một cách an toàn; Sandstorm xử lý kiểm soát truy cập. Trong hướng dẫn này, bạn sẽ thấy cách cài đặt ứng dụng và sau đó tạo nhiều version ứng dụng.

Có nhiều trường hợp sử dụng để tạo ứng dụng Sandstorm. Trường hợp sử dụng đầu tiên là sử dụng cho cá nhân hoặc công ty. Điều này nghĩa là đóng gói một ứng dụng và triển khai nó trên server Sandstorm của bạn hoặc công ty của bạn và sử dụng quyền kiểm soát truy cập và sandbox của Sandstorm. Một trường hợp sử dụng khác là tạo ứng dụng Sandstorm để xuất bản nó cho user Sandstorm khác. Ví dụ: điều này có thể được xuất bản trên apps.sandstorm.io , nhưng bạn cũng có thể tự phân phối nó. User sẽ biết rằng nhà phát triển ứng dụng không thể đọc dữ liệu của họ. Hướng dẫn này áp dụng cho cả hai trường hợp.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

  • Một máy tính local , sẽ được sử dụng để xây dựng gói Sandstorm. Máy tính này cần:

    • Là một máy 64-bit với ít nhất 1GB RAM. Hướng dẫn này có hướng dẫn cho Ubuntu 14.04 và Mac OS X.
    • Đã cài đặt Git, sẽ được sử dụng để download vagrant-spk và ứng dụng mẫu của ta . Bạn có thể cài đặt Git theo hướng dẫn Git này cho Ubuntu 14.04 hoặc hướng dẫn cài đặt Git Mac cho OS X.
    • Đã cài đặt Vagrant, bạn có thể thực hiện việc này từ trang cài đặt của Vagrant . Vagrant được sử dụng để tạo một máy ảo trong đó Sandstorm chạy ở chế độ phát triển.
    • Đã cài đặt một số phần mềm ảo hóa, như VirtualBox .
  • Một Ubuntu 14.04 Server với Sandstorm được cài đặt để kiểm tra gói của bạn, bạn có thể thực hiện điều này theo hướng dẫn trước này.

  • Tùy chọn, một ứng dụng mà bạn muốn đóng gói, được viết bằng khung Meteor. Hướng dẫn này hiển thị các bước sử dụng ứng dụng danh sách việc cần làm mẫu do Meteor cung cấp nếu bạn không có ứng dụng khác muốn sử dụng.

Bước 1 - Download Ứng dụng mẫu và vagrant-spk

Trong bước này, ta sẽ download ứng dụng Meteor mà ta sẽ tạo một gói Sandstorm và cả công cụ đóng gói của Sandstorm, vagrant-spk .

Đầu tiên, hãy tạo và chuyển vào một folder mới có tên là projects , để tránh folder chính của bạn bị lộn xộn với các file mới.

  • mkdir ~/projects
  • cd ~/projects

Ứng dụng mẫu mà ta sẽ sử dụng trong hướng dẫn này là simple-todos , một ứng dụng được cung cấp bởi Meteor. Tuy nhiên, bạn cũng có thể bỏ qua điều này nếu muốn sử dụng ứng dụng Meteor của riêng mình.

Download ứng dụng này bằng cách sao chép nó từ Meteor's GitHub.

  • git clone https://github.com/meteor/simple-todos.git

Tiếp theo, ta sẽ cài đặt vagrant-spk (là công cụ đóng gói của Sandstorm) từ GitHub của Sandstorm.

  • git clone git://github.com/sandstorm-io/vagrant-spk

Di chuyển vào folder vagrant-spk .

cd vagrant-spk 

Cuối cùng, tạo một softlink đến binary trong /usr/local/bin để làm cho lệnh vagrant-spk khả dụng.

  • sudo ln -s $PWD/vagrant-spk /usr/local/bin

Sau khi cài đặt, bạn có thể kiểm tra xem vagrant-spk được cài đặt chưa bằng lệnh:

  • vagrant-spk --help

Bạn sẽ thấy một thông báo như:

Output
usage: vagrant-spk [-h] [--work-directory WORK_DIRECTORY] {destroy,dev,global-status,halt,init,pack,publish,setupvm,ssh,up} [command_specific_args [command_specific_args ...]] . . .

Bước 2 - Chạy máy ảo Sandstorm

Trong phần này, ta sẽ tạo gói Sandstorm thực tế. Bắt đầu bằng cách chuyển vào folder ứng dụng trên máy local của bạn.

  • cd ~/projects/simple-todos

Sau đó, cài đặt máy ảo sẽ sử dụng để xây dựng gói.

  • vagrant-spk setupvm meteor

Bạn sẽ thấy kết quả tương tự như sau:

Output
Initializing .sandstorm directory in /home/sammy/projects/simple-todos/.sandstorm Creating /home/sammy/.sandstorm to hold developer keys. Creating /home/sammy/.sandstorm/caches to hold sandstorm installer caches.

Tiếp theo, khởi động máy ảo.

  • vagrant-spk up

Lệnh này sẽ mất một chút thời gian để thực thi.

Bước 3 - Tạo định nghĩa gói

Trong phần này, ta sẽ thực sự đóng gói ứng dụng Meteor.

Đầu tiên, tạo định nghĩa gói mà Sandstorm sẽ sử dụng.

  • vagrant-spk init

Lệnh này sẽ tạo một file có tên là sandstorm-pkdef.capnp trong folder .sandstorm . Ta cần thực hiện một số thay đổi đối với file này.

Kết nối với Vagrant VM.

  • vagrant-spk ssh

Sau đó, mở /opt/app/.sandstorm/sandstorm-pkdef.capnp bằng nano hoặc editor yêu thích của bạn.

  • nano /opt/app/.sandstorm/sandstorm-pkgdef.capnp

Tìm phần sau:

Original ~/.sandstorm/sandstorm-pkgdef.capnp
. . . # This manifest is included in your app package to tell Sandstorm # about your app. appTitle = (defaultText = "Example App"), appVersion = 0, # Increment this for every release. . . .

Thay đổi giá trị trong dòng appTitle thành “Todo”.

Modified ~/.sandstorm/sandstorm-pkgdef.capnp
. . . # This manifest is included in your app package to tell Sandstorm # about your app. appTitle = (defaultText = "Todo"), appVersion = 0, # Increment this for every release. . . .

Sau đó, lưu file .

Bước 4 - Thêm đăng nhập Sandstorm vào ứng dụng

Hiện tại, ứng dụng Todos có xác thực riêng biệt với Sandstorm. Tuy nhiên, ta muốn đăng nhập bằng ứng dụng Todos khi ta đăng nhập vào Sandstorm, vì vậy ta cần thêm một gói riêng cho ứng dụng Meteor.

Trong khi vẫn kết nối với VM, hãy chuyển sang folder gói chính.

  • cd /opt/app

Tiếp theo, ta sẽ thêm gói kenton:accounts-sandstorm vào ứng dụng Meteor, sẽ hiển thị account Sandstorm hiện tại cho ứng dụng Meteor.

  • meteor add kenton:accounts-sandstorm

Đến đây bạn có thể thoát khỏi kết nối với Vagrant VM.

  • exit

Trong trường hợp của ứng dụng Todo này, trang vẫn chứa các node đăng nhập và đăng xuất, không cần thiết. Tiếp theo, ta sẽ xóa chúng.

Mở file simple-todos.html trong folder project/simple-todos bằng editor yêu thích của bạn.

  • nano simple-todos.html

Tìm phần sau và xóa dòng loginButtons , được đánh dấu màu đỏ bên dưới. Sau đó, lưu file .

simple-todos.html
. . . Hide Completed Tasks </label> {{> loginButtons}} {{#if currentUser}} . . .

Tiếp theo, mở file simple-todos.js .

  • nano simple-todos.js

Giống như trước đây, hãy xóa các dòng sau được đánh dấu màu đỏ, sau đó lưu file . Đảm bảo không xóa dấu ngoặc nhọn cuối cùng.

simple-todos.js
. . . "click .toggle-private": function () { Meteor.call("setPrivate", this._id, ! this.private); } }); Accounts.ui.config({ passwordSignupFields: "USERNAME_ONLY" }); } . . .

Như vậy, ứng dụng sử dụng account Sandstorm thay vì account Meteor.

Bước 5 - Kiểm tra ứng dụng đang phát triển

vagrant-spk có một lệnh dev làm cho máy ảo Sandstorm chạy ở chế độ phát triển, làm cho gói của bạn có . Vì vậy, hãy chạy lệnh từ folder ứng dụng của bạn (trong trường hợp này là simple-todos ).

  • vagrant-spk dev

Khi khởi tạo xong, nó sẽ in ra thông báo sau:

Output
App is now available from Sandstorm server. Ctrl+C to disconnect.

Điều này nghĩa là bây giờ bạn có thể truy cập Sandstorm tại http://local.sandstorm.io:6080/ . Đến đây bạn có thể đăng nhập bằng cách nhấn vào Tài khoản nhà phát triển .

Màn hình đăng nhập

Sau đó nhấp vào Alice (quản trị) . Thao tác này sẽ đăng nhập bạn bằng account quản trị, cho phép bạn tạo các version mới. Bạn có thể để các giá trị mặc định cho trang Xác nhận profile của bạn và nhấn nút Tiếp tục màu tím mà không cần thay đổi gì.

Tiếp theo, nhấp vào ứng dụng Todo, sau đó nhấp vào Tạo version mới .

Phiên bản mới

Bước 6 - Tạo và tải lên SPK

Bước cuối cùng trong việc tạo gói Sandstorm là tạo file SPK chứa ứng dụng, bản sao của Meteor và bất kỳ phụ thuộc nào khác cho ứng dụng. Bước này hoàn toàn tự động bằng công cụ meteor-spk .

Đầu tiên, dừng server phát triển của bạn bằng cách nhấn CTRL+C Sau đó, đóng gói ứng dụng.

  • vagrant-spk pack todo.spk

Điều này tạo ra một file SPK trong folder hiện tại của bạn.

Ngoài ra, trong trường hợp của ta , file SPK có dung lượng khoảng 11 MB. Các ứng dụng Sandstorm thường có dung lượng ít MB mặc dù chúng chứa ứng dụng và tất cả các phần phụ thuộc, bao gồm bất kỳ phần phụ thuộc hệ điều hành nào.

Khi phát triển xong một ứng dụng, bạn cần tắt máy ảo trước khi tạo ứng dụng thứ hai. Do đó, hãy thực hiện lệnh sau:

vagrant-spk halt 

Nếu bạn muốn tiếp tục phát triển vì bất kỳ lý do gì, bạn chỉ cần chạy vagrant-spk up .

Bước 7 - Tạo danh sách Todo

Trong phần này, ta sẽ cài đặt gói trên server Sandstorm trên Server và tạo một version mới của ứng dụng.

Đăng nhập vào Sandstorm trên Server và bạn sẽ thấy nút Tải lên ứng dụng trên màn hình chính của bạn . Nhấp vào nút đó và chọn file SPK qua trình duyệt web mà bạn đã tạo ở bước 6.

Tải lên ứng dụng Sandstorm

Thao tác này sẽ tạo một mục mới trong màn hình chính Sandstorm có nhãn Todo . Cài đặt ứng dụng trong Sandstorm cung cấp cho bạn khả năng tạo các version (hoặc tài liệu) mới. Do đó, hãy nhấp vào mục Todo . Thao tác này sẽ đưa bạn đến màn hình sau:

Màn hình ứng dụng Todo

Nhấp vào Tạo version mới . Điều này sẽ đưa bạn đến một version Todo mới, được cung cấp bởi một version duy nhất của ứng dụng danh sách Todo.

Những việc cần làm

Mỗi trường hợp được gọi là một hạt trong Bão cát. Phiên bản ứng dụng này là duy nhất cho user Sandstorm của bạn. Nếu bạn cố gắng mở URL trong cửa sổ duyệt web riêng tư trong trình duyệt web của bạn , bạn sẽ gặp lỗi Forbidden . Bạn có thể sử dụng nút Chia sẻ màu xanh lam ở thanh trên cùng của Bão cát để tạo liên kết chia sẻ, nếu bạn muốn người khác có quyền truy cập vào danh sách Todo.

Bạn có thể rời khỏi danh sách việc cần làm này bằng cách nhấp vào biểu tượng Sandstorm ở trên cùng bên trái. Sau khi làm xong, bạn sẽ thấy mình có thể tạo một danh sách Todo khác. Mọi dữ liệu bạn nhập vào một version danh sách Todo hoàn toàn độc lập với những dữ liệu khác.

Kết luận

Ta đã thấy cách lấy một codebase được viết bằng Meteor và đóng gói nó cho Sandstorm. Nó dựa vào Sandstorm để kiểm soát truy cập và có thể dễ dàng chia sẻ với người khác. Để tìm hiểu thêm về Meteor, hãy truy cập trang web của họ . Để tìm hiểu thêm về Sandstorm, hãy truy cập sandstorm.io .


Tags:

Các tin liên quan

Cách bảo vệ WordPress khỏi các cuộc tấn công XML-RPC trên Ubuntu 14.04
2016-02-04
Cách tạo blog với Hexo trên Ubuntu 14.04
2016-02-04
Cách cài đặt Graylog 1.x trên Ubuntu 14.04
2016-02-04
Cách bảo mật HAProxy bằng Let's Encrypt trên Ubuntu 14.04
2016-01-22
Cách backup database OrientDB của bạn trên Ubuntu 14.04
2015-12-19
Cách cài đặt và cấu hình OrientDB trên Ubuntu 14.04
2015-12-19
Cách cài đặt và cấu hình Naxsi trên Ubuntu 14.04
2015-12-19
Cách cài đặt VestaCP và thiết lập trang web trên Ubuntu 14.04
2015-12-16
Cách cài đặt Go 1.6 trên Ubuntu 14.04
2015-12-04
Cách cài đặt Go 1.6 trên Ubuntu 14.04
2015-12-04