-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path02s-deploying.md.erb
171 lines (104 loc) · 18.1 KB
/
02s-deploying.md.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
---
title: การดีพลอยขึ้นเว็บ
slug: deploying
date: 0002/01/02
number: 2.5
sidebar: true
contents: รู้วิธีดีพลอยไปที่ Meteor.com|รู้วิธีดีพลอยไปที่ Modulus|รู้วิธีดีพลอยขึ้นเซิร์ฟเวอร์ของคุณเองด้วย Meteor Up
paragraphs: 46
---
คนบางคนชอบที่จะทำงานเงียบๆ จนกว่าโครงการจะเสร็จสมบูรณ์ ในขณะที่คนอื่นๆ อดใจรอไม่ไหวที่จะแสดงให้โลกรับรู้ในทันทีที่ทำได้
ถ้าคุณเป็นคนจำพวกแรก และในตอนนี้ต้องการแค่สร้างแอพบนเครื่องตัวเอง ก็สามารถข้ามบทนี้ไปได้ แต่ถ้าคุณยอมเสียเวลาซักนิดเพื่อเรียนรู้วิธีการดีพลอยแอพ Meteor ของคุณให้ขึ้นไปทำงานบนเว็บ เราก็พร้อมจะสอนให้
โดยเราจะมาเรียนวิธีการดีพลอยแอพ Meteor หลายๆแบบ ซึ่งคุณสามารถนำแบบไหนไปใช้ก็ได้ในระหว่างที่คุณกำลังสร้างแอพ ไม่ว่าคุณกำลังสร้างแอพ Microscope หรือแอพ Meteor ตัวอื่นๆ ถ้าพร้อมแล้วก็มาเริ่มกันเลย!
<% note do %>
### รู้จักกับบทแทรก
บทเรียนนี้เป็น **บทแทรก (sidebar)** ซึ่งเจาะลึกลงไปในเรื่องของ Meteor มากขึ้นและเนื้อหาก็แยกออกมาจากเรื่องอื่นในหนังสือ
ดังนั้นถ้าคุณต้องการจะสร้างแอพ Microscope คุณก็สามารถข้ามบทนี้ไปก่อนได้ แล้วค่อยกลับมาอ่านอีกครั้ง
<% end %>
### ดีพลอยไปที่ Meteor
การดีพลอยไปที่โดเมนย่อยของ Meteor (เช่น `http://myapp.meteor.com`) เป็นทางเลือกที่ง่ายที่สุด และเป็นวิธีแรกที่เราจะลองกัน วิธีนี้ช่วยให้คุณสามารถโชว์แอพให้คนอื่นๆเห็นได้ตั้งแต่ตอนเริ่มทำ หรือใช้เพื่อทำเป็นเซิร์ฟเวอร์ทดสอบชั่วคราวก่อนนำไปใช้งานจริงก็ได้
ดีพลอยไปที่ Meteor นั้นง่ายมาก แค่เปิดเทอร์มินอล แล้วไปที่โฟลเดอร์แอพ Meteor ของคุณ จากนั้นก็พิมพ์ :
~~~bash
meteor deploy myapp.meteor.com
~~~
โดยคุณต้องเปลี่ยนชื่อ "myapp" ด้วยชื่อที่คุณเลือกไว้ และยังไม่มีใครเอาไปใช้
ถ้าคุณทำการดีพลอยเป็นครั้งแรก คุณจะถูกขอให้สร้างบัญชีผู้ใช้ที่ Meteor เมื่อคุณดำเนินการเสร็จ ไม่กี่วินาทีหลังจากนั้นคุณก็สามารถเรียกใช้แอพของคุณได้ที่ `http://myapp.meteor.com`
ทั้งนี้คุณสามารถใช้ [หน้าเอกสารหลักของ Meteor](http://docs.meteor.com/#deploying) เพื่อค้นหาข้อมูลเพิ่มเติม เช่น การเข้าถึงฐานข้อมูลที่แอพคุณกำลังใช้ หรือการใช้ชื่อโดเมนอื่นกับแอพของคุณ
### ดีพลอยไปที่ Modulus
[Modulus](https://modulus.io/) เป็นทางเลือกที่เยี่ยมอันหนึ่งในการดีพลอยแอพ Node.js ทั้งยังเป็นหนึ่งในไม่กี่ตัวซึ่งเป็น Paas (platform-as-a-service) ที่รองรับการใช้งาน Meteor อย่างเป็นทางการ และก็มีบางคนรันแอพที่ใช้งานจริงอยู่บนนั้นด้วย
ซึ่งคุณสามารถศึกษาข้อมูลเพิ่มเติมเกี่ยวกับ Modulus โดยอ่านเพิ่มเติมได้จาก [คู่มือการดีพลอยแอพ Meteor](http://help.modulus.io/customer/portal/articles/1647770-using-meteor-with-modulus) ที่เว็บ Modulus
### ดีพลอยด้วย Meteor Up
ถึงแม้ว่าจะมีบริการคลาวด์เซิร์ฟเวอร์ใหม่ๆเกิดขึ้นทุกวัน มันก็มักจะมาพร้อมกับปัญหาและข้อจำกัดอยู่เสมอ ดังนั้น ณ วันนี้ การดีพลอยแอพไปที่เซิร์ฟเวอร์ของคุณเองก็ดูจะเป็นวิธีดีที่สุดที่จะนำแอพ Meteor มาใช้งานจริง สิ่งเดียวที่จะเป็นปัญหาก็คือ การดีพลอยด้วยตัวคุณเองนั้นไม่ใช่เรื่องง่าย โดยเฉพาะเมื่อคุณต้องการดีพลอยขึ้นไปใช้กับงานจริง
[Meteor Up](https://github.com/arunoda/meteor-up) (หรือเรียกสั้นๆว่า `mup`) เป็นความพยายามที่จะแก้ปัญหานั้น โดยโปรแกรมเสริมแบบคอมมานด์ไลน์นี้จะช่วยคุณติดตั้งและดีพลอยแอพได้ ดังนั้นเราจะมาดูวิธีการดีพลอยแอพ Microscope ด้วย Meteor Up กัน
ก่อนอื่นเราจำเป็นต้องมีเซิร์ฟเวอร์ที่ใช้ดีพลอย เราขอแนะนำที่ [Digital Ocean](http://digitalocean.com/) ซึ่งเริ่มที่แค่ $5 ต่อเดือน หรือที่ [AWS](http://aws.amazon.com/) ที่มี Micro instances ให้ใช้ฟรื (เมื่อใช้ไปซักพักคุณก็จะพบข้อจำกัดเรื่องการขยายระบบ แต่มันก็เพียงพอที่คุณจะทดสอบการใช้ Meteor Up)
ทั้งนี้ไม่ว่าคุณจะใช้บริการที่ไหน สิ่งที่คุณได้มาก็คือ หมายเลขไอพีของเซิร์ฟเวอร์, ชื่อล็อกอิน (ปกติจะเป็น `root` หรือ `ubuntu`) และรหัสผ่าน ให้เก็บข้อมูลพวกนี้ไว้ในที่ปลอดภัย เพราะเราจำเป็นต้องใช้ในไม่ช้านี้ !
### เตรียมการใช้ Meteor Up
แรกสุด เราจำเป็นต้องติดตั้ง Meteor Up ด้วย `npm` ดังนี้
~~~bash
npm install -g mup
~~~
จากนั้นเราจะสร้างโฟลเดอร์พิเศษแยกออกมาต่างหากเพื่อเก็บค่าการติดตั้งของการดีพลอยแต่ละตัว ที่เราต้องแยกโฟลเดอร์ออกมานั้นมีเหตุผลสองอย่าง อันดับแรกก็คือ มันจะดีที่สุดถ้าเราแยกข้อมูลสำคัญส่วนตัวออกมาจาก Git repo โดยเฉพาะเมื่อคุณกำลังทำงานกับโค้ดที่ใครก็เข้าถึงได้
อันที่สองก็คือ การแยกออกมาหลายๆโฟลเดอร์ จะทำให้เราสามารถจัดการข้อมูลการติดตั้งของ Meteor Up ได้พร้อมๆกันหลายตัว ตัวอย่างที่เห็นประโยชน์ได้ชัดเจนคือ ในกรณีที่เรากำลังดีพลอยไปทั้งที่ระบบงานจริง และระบบทดสอบ
ตอนนี้เราก็มาสร้างโปรเจกต์ Meteor Up กัน โดยเราจะสร้างโฟลเดอร์ขึ้นใหม่ และเตรียมการดีพลอยด้วยคำสั่งดังนี้
~~~bash
mkdir ~/microscope-deploy
cd ~/microscope-deploy
mup init
~~~
<% note do %>
### แบ่งปันด้วย Dropbox
วิธีการอันยอดเยี่ยมที่จะช่วยให้คุณและทีมคุณใช้ข้อมูลการดีพลอยเหมือนกันได้ก็คือ สร้างโฟลเดอร์เก็บค่าการติดตั้งของ Meteor Up ไว้ภายในโฟลเดอร์ Dropbox หรือบริการอื่นๆที่คล้ายคลึงกัน
<% end %>
### การตั้งค่าให้ Meteor Up
ในขณะที่กำลังเตรียมการดีพลอยในโปรเจกต์ใหม่นั้น Meteor Up จะสร้างไฟล์ขึ้นมาสองไฟล์ให้คุณคือ `mup.json` และ `settings.json`
`mup.json` จะเก็บค่าที่เกี่ยวข้องกับการดีพลอยไว้ทั้งหมด ส่วน `settings.json` จะเก็บค่าที่เกี่ยวข้องกับแอพ เช่น โทเคนของ OAuth , โทเคน analytic และอื่นๆ
ขั้นตอนต่อไปคือการตั้งค่า `mup.json` ของคุณ โดยที่คุณต้องทำทั้งหมดคือ เติมข้อมูลลงไปในไฟล์ตั้งต้น `mup.json` ที่สร้างจาก `mup init` ดังนี้
~~~js
{
//server authentication info
"servers": [{
"host": "hostname",
"username": "root",
"password": "password"
//or pem file (ssh based authentication)
//"pem": "~/.ssh/id_rsa"
}],
//install MongoDB in the server
"setupMongo": true,
//location of app (local directory)
"app": "/path/to/the/app",
//configure environmental
"env": {
"ROOT_URL": "http://supersite.com"
}
}
~~~
<%= caption "mup.json" %>
ตอนนี้เราจะมาดูค่าแต่ละตัวกัน
**ข้อมูลการพิสูจน์ตัวตนบนเซิร์ฟเวอร์** (server authentication info)
คุณจะสังเกตุได้ว่า Meteor Up รองรับทั้งการพิสูจน์ตัวตนด้วยรหัสผ่าน และการใช้คีย์ส่วนตัว (PEM) ดังนั้นมันจึงใช้งานได้กับแทบทุกบริการบนคลาวด์
**สิ่งสำคัญ** ถ้าคุณใช้การพิสูจน์ตัวตนด้วยรหัสผ่าน คุณต้องมั่นใจว่าได้ติดตั้งโปรแกรม `sshpass` ไว้แล้วนะ ([ดูวิธีการได้ที่นี้](https://gist.github.com/arunoda/7790979))
**ข้อมูลการติดตั้ง MongoDB** (install MongoDB in the server)
ต่อมาคือการตั้งค่าฐานข้อมูล MongoDB ให้แอพคุณ เราขอแนะนำให้ใช้ [Compose](https://www.compose.io/) หรือบริการ MongoDB บนคลาวด์เจ้าไหนก็ได้ เนื่องจากเราจะได้ทั้งการช่วยเหลือแบบมืออาชีพและเครื่องมือจัดการฐานข้อมูลที่ดีกว่า
และถ้าคุณเลือกที่จะใช้ Compose ก็ให้ตั้งค่า `setupMongo` เป็น `false` และเพิ่มตัวแปรระบบ `MONGO_URL`เข้าไปในบล็อก `env` ของไฟล์ `mup.json` แต่ถ้าคุณเลือกให้ Meteor Up ติดตั้ง MongoDB คุณก็แค่ตั้งค่า `setupMongo` เป็น `true` แค่นี้ Meteor Up ก็จะจัดการส่วนที่เหลือให้เอง
**พาธของแอพ Meteor** (location of app)
เนื่องจากข้อมูลค่าการติดตั้งของ Meteor Up อยู่คนละโฟลเดอร์กับแอพ เราจึงจำเป็นต้องบอกให้ Meteor Up รู้ว่าแอพอยู่ที่ไหนด้วยการตั้งค่า `app` คุณก็แค่ป้อนค่าพาธของแอพที่อยู่บนเครื่องคุณเข้าไป โดยคุณสามารถหาค่าพาธนี้ได้โดยเปิดโปรแกรมเทอร์มินอล แล้วไปที่โฟลเดอร์แอพ จากนั้นก็ป้อนคำสั่ง `pwd` คุณก็จะได้ค่าพาธของแอพออกมา
**ตัวแปรระบบ** (configure environmental)
คุณสามารถที่จะกำหนดค่าตัวแปรระบบของแอพคุณทั้งหมด เช่น `ROOT_URL`, `MAIL_URL`, `MONGO_URL` และอื่นๆ ได้ภายในบล็อก `env`
### Setting Up and Deploying
ก่อนที่เราจะสั่งดีพลอย เราก็ต้องติดตั้งเซิร์ฟเวอร์ให้พร้อมสำหรับการรันแอพ Meteor ซึ่ง Meteor Up ได้ทำให้ขั้นตอนนี้ง่ายเหลือเพียงแค่คำสั่งเดียว!
~~~bash
mup setup
~~~
จะใช้เวลาประมาณสองสามนาทีขึ้นอยู่กับประสิทธิภาพของเซิร์ฟเวอร์และความเร็วของการเชื่อมต่อ เมื่อการติดตั้งเรียบร้อย เราก็สามารถดีพลอยแอพได้ด้วยคำสั่ง
~~~bash
mup deploy
~~~
ซึ่งจะทำการผนวกแอพ Meteor ของคุณเข้าด้วยกัน แล้วดีพลอยไปที่เซิร์ฟเวอร์ที่เราเพิ่งติดตั้งไว้
### การแสดงล็อก
ล็อกการใช้งานเป็นสิ่งสำคัญที่จำเป็น และ Meteor Up ก็ได้เตรียมวิธีการง่ายๆให้เราจัดการมันโดยการจำลองคำสั่ง `tail -f` ด้วยคำสั่งนี้
~~~bash
mup logs -f
~~~
ถึงตรงนี้ เราก็ได้เห็นภาพรวมการใช้งาน Meteor Up กันแล้ว ถ้าคุณต้องการข้อมูลมากกว่านี้ เราแนะนำให้คุณไปที่ [หน้า GitHub ของ Meteor Up](https://github.com/arunoda/meteor-up)
ทั้งหมดนี้ก็คือ สามวิธีที่ใช้ในการดีพลอยแอพ Meteor ซึ่งน่าจะเพียงพอสำหรับการใช้งานทั่วๆไป แต่เราก็รู้ว่าอาจมีคุณบางคนที่อยากได้วิธีการติดตั้งเซิร์ฟเวอร์ Meteor แบบเบ็ดเสร็จด้วยตัวคุณเอง ซึ่งวิธีการแบบนั้นเราขอเก็บเอาไว้ก่อน ... หรืออาจจะเป็นในหนังสืออีกเล่ม!