from-source.md 12.3 KB
Newer Older
Patipat Jo's avatar
Patipat Jo committed
1
2
3
4
5
6
7
8
9
# วิธีการติดตั้ง CKAN 2.9 จาก Source

### 1. Update Package ของ Ubuntu:
```sh
sudo apt-get update
```

### 2. ติดตั้ง Package ของ Ubuntu ที่ CKAN ต้องการ:
```sh
Patipat Jo's avatar
Patipat Jo committed
10
sudo apt-get install python-dev libpq-dev redis-server python-pip python-virtualenv git-core
Patipat Jo's avatar
Patipat Jo committed
11
12
13
14
```

### 3. ตั้งค่า python2 และ pip2:
```sh
Patipat Jo's avatar
Patipat Jo committed
15
#ตรวจสอบเวอร์ชั่นของ python และกำหนดให้เป็นเวอร์ชัน 2.7
Patipat Jo's avatar
Patipat Jo committed
16
python -V
Patipat Jo's avatar
Patipat Jo committed
17
# Python 2.7.x
Patipat Jo's avatar
Patipat Jo committed
18

Patipat Jo's avatar
Patipat Jo committed
19
#ตรวจสอบเวอร์ชั่นของ pip และกำหนดให้เป็นการรันจาก ... (python 2.7)
Patipat Jo's avatar
Patipat Jo committed
20
pip -V
Patipat Jo's avatar
Patipat Jo committed
21
# pip x.x.x from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
Patipat Jo's avatar
Patipat Jo committed
22
23
```

Patipat Jo's avatar
Patipat Jo committed
24
25
26
27
### 4. ตั้งค่า PostgreSQL:
```sh
sudo apt-get install -y postgresql

Patipat Jo's avatar
Patipat Jo committed
28
29
# สร้าง postgres user สำหรับเขียน ckan_default, datastore_default 
# และใส่ ***{password1}***
Patipat Jo's avatar
Patipat Jo committed
30
31
32
33
34
35
36
37
sudo -u postgres createuser -S -D -R -P ckan_default

# สร้างฐานข้อมูล ckan_default
sudo -u postgres createdb -O ckan_default ckan_default -E utf-8

# สร้างฐานข้อมูล datastore_default
sudo -u postgres createdb -O ckan_default datastore_default -E utf-8

Patipat Jo's avatar
Patipat Jo committed
38
39
40
41
# สร้าง postgres user สำหรับอ่าน datastore_default 
# และใส่ ***{password2}***
sudo -u postgres createuser -S -D -R -P -l datastore_default

Patipat Jo's avatar
Patipat Jo committed
42
43
44
45
46
#ตรวจสอบ database list ให้มี database ckan_default และ datastore_default
sudo -u postgres psql -l
```

### 5. ตั้งค่า CKAN path:
Patipat Jo's avatar
Patipat Jo committed
47
48
49
50
51
52
53
```sh
#เตรียม ckan path
sudo mkdir -p /usr/lib/ckan/default

sudo chown -R `whoami` /usr/lib/ckan/default

#เตรียม storage path
Patipat Jo's avatar
Patipat Jo committed
54
sudo mkdir -p /var/lib/ckan/default
Patipat Jo's avatar
Patipat Jo committed
55

Patipat Jo's avatar
Patipat Jo committed
56
sudo chown -R `whoami` /var/lib/ckan && sudo chmod -R 775 /var/lib/ckan
Patipat Jo's avatar
Patipat Jo committed
57
58
```

Patipat Jo's avatar
Patipat Jo committed
59
### 6. ติดตั้ง CKAN:
Patipat Jo's avatar
Patipat Jo committed
60
```sh
Patipat Jo's avatar
Patipat Jo committed
61
virtualenv --no-site-packages /usr/lib/ckan/default
Patipat Jo's avatar
Patipat Jo committed
62
63
64
65
66

. /usr/lib/ckan/default/bin/activate

pip install --upgrade pip

Patipat Jo's avatar
Patipat Jo committed
67
68
pip install setuptools==44.1.0

Patipat Jo's avatar
Patipat Jo committed
69
70
71
72
73
74
75
pip install -e 'git+https://github.com/ckan/ckan.git@ckan-2.9.1#egg=ckan[requirements-py2]'

deactivate
```

### 7. ติดตั้งและตั้งค่า Solr:
```sh
Patipat Jo's avatar
Patipat Jo committed
76
sudo apt-get install openjdk-8-jdk
Patipat Jo's avatar
Patipat Jo committed
77

Patipat Jo's avatar
Patipat Jo committed
78
79
# ใช้คำสั่งนี้เพื่อให้เปลี่ยนไปใช้ openjdk-8-jdk
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Patipat Jo's avatar
Patipat Jo committed
80

Patipat Jo's avatar
Patipat Jo committed
81
wget http://archive.apache.org/dist/lucene/solr/6.5.1/solr-6.5.1.tgz
Patipat Jo's avatar
Patipat Jo committed
82

Patipat Jo's avatar
Patipat Jo committed
83
tar xzf solr-6.5.1.tgz solr-6.5.1/bin/install_solr_service.sh --strip-components=2
Patipat Jo's avatar
Patipat Jo committed
84

Patipat Jo's avatar
Patipat Jo committed
85
sudo bash ./install_solr_service.sh solr-6.5.1.tgz
Patipat Jo's avatar
Patipat Jo committed
86

Patipat Jo's avatar
Patipat Jo committed
87
sudo su solr
Patipat Jo's avatar
Patipat Jo committed
88

Patipat Jo's avatar
Patipat Jo committed
89
cd /opt/solr/bin
Patipat Jo's avatar
Patipat Jo committed
90

Patipat Jo's avatar
Patipat Jo committed
91
./solr create -c ckan
Patipat Jo's avatar
Patipat Jo committed
92

Patipat Jo's avatar
Patipat Jo committed
93
cd /var/solr/data/ckan/conf
Patipat Jo's avatar
Patipat Jo committed
94

Patipat Jo's avatar
Patipat Jo committed
95
sed -i '/<config>/a <schemaFactory class="ClassicIndexSchemaFactory"/>' solrconfig.xml
Patipat Jo's avatar
Patipat Jo committed
96

Patipat Jo's avatar
Patipat Jo committed
97
98
99
100
101
sed -i '/<initParams path="\/update\/\*\*">/,/<\/initParams>/ s/.*/<!--&-->/' solrconfig.xml

sed -i '/<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">/,/<\/processor>/ s/.*/<!--&-->/' solrconfig.xml

rm managed-schema
Patipat Jo's avatar
Patipat Jo committed
102

Patipat Jo's avatar
Patipat Jo committed
103
ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml schema.xml
Patipat Jo's avatar
Patipat Jo committed
104

Patipat Jo's avatar
Patipat Jo committed
105
exit
Patipat Jo's avatar
Patipat Jo committed
106

Patipat Jo's avatar
Patipat Jo committed
107
sudo service solr restart
Patipat Jo's avatar
Patipat Jo committed
108
109
110
111
112
```

### 8. ตั้งค่าและสร้างฐานข้อมูลสำหรับ CKAN
#### 8.1 ตั้งค่า who.ini:
```sh
Patipat Jo's avatar
Patipat Jo committed
113
sudo mkdir -p /etc/ckan/default
Patipat Jo's avatar
Patipat Jo committed
114
115

sudo ln -s /usr/lib/ckan/default/src/ckan/who.ini /etc/ckan/default/who.ini
Patipat Jo's avatar
Patipat Jo committed
116
117

sudo chown -R `whoami` /etc/ckan/
Patipat Jo's avatar
Patipat Jo committed
118
```
Patipat Jo's avatar
Patipat Jo committed
119
#### 8.2 แก้ไขไฟล์ config และสร้างฐานข้อมูล CKAN ดังนี้:
Patipat Jo's avatar
Patipat Jo committed
120
```sh
Patipat Jo's avatar
Patipat Jo committed
121
122
. /usr/lib/ckan/default/bin/activate

Patipat Jo's avatar
Patipat Jo committed
123
124
125
ckan generate config /etc/ckan/default/ckan.ini

sudo vi /etc/ckan/default/ckan.ini
Patipat Jo's avatar
Patipat Jo committed
126
    - แก้ไข {password1} (จากการตั้งค่าในขั้นตอนที่ 4) ของ sqlalchemy.url
Patipat Jo's avatar
Patipat Jo committed
127
        > sqlalchemy.url = postgresql://ckan_default:{password1}@localhost/ckan_default
Patipat Jo's avatar
Patipat Jo committed
128
    - เปิดการใช้งาน และแก้ไข {password1} (จากการตั้งค่าในขั้นตอนที่ 4) ของ ckan.datastore.write_url
Patipat Jo's avatar
Patipat Jo committed
129
        > ckan.datastore.write_url = postgresql://ckan_default:{password1}@localhost/datastore_default
Patipat Jo's avatar
Patipat Jo committed
130
    - เปิดการใช้งาน และแก้ไข {password2} (จากการตั้งค่าในขั้นตอนที่ 4) ของ ckan.datastore.read_url
Patipat Jo's avatar
Patipat Jo committed
131
        > ckan.datastore.read_url = postgresql://datastore_default:{password2}@localhost/datastore_default
Patipat Jo's avatar
Patipat Jo committed
132
    - กำหนด ckan.site_url
Patipat Jo's avatar
Patipat Jo committed
133
        > ckan.site_url = http://localhost:5000
Patipat Jo's avatar
Patipat Jo committed
134
135
    - เปิดการใช้งาน และแก้ไข solr_url
        > solr_url = http://127.0.0.1:8983/solr/ckan
Patipat Jo's avatar
Patipat Jo committed
136
137
138
139
140
141
142
143
144
145
146
147
    - เปิดการใช้งาน ckan.redis.url
        > ckan.redis.url = redis://localhost:6379/0
    - แก้ไข ckan.plugins (ให้เหมือนตามนี้)
        > ckan.plugins = stats text_view image_view recline_view resource_proxy datastore datapusher webpage_view
    - แก้ไข ckan.views.default_views (ให้เหมือนตามนี้)
        > ckan.views.default_views = image_view text_view recline_view webpage_view
    - เปิดการใช้งานและแก้ไข ckan.storage_path
        > ckan.storage_path = /var/lib/ckan/default
    - เปิดการใช้งาน ckan.datapusher.url
        > ckan.datapusher.url = http://127.0.0.1:8800/

ckan -c /etc/ckan/default/ckan.ini db init
Patipat Jo's avatar
Patipat Jo committed
148
149

deactivate
Patipat Jo's avatar
Patipat Jo committed
150
151
152
153
154
155
156
157
158
159
160
161
```

### 9. cronjob สำหรับ page view tracking:
```sh
crontab -e
```
เพิ่มคำสั่งต่อไปนี้

    @hourly /usr/lib/ckan/default/bin/ckan -c /etc/ckan/default/ckan.ini tracking update && /usr/lib/ckan/default/bin/ckan -c /etc/ckan/default/ckan.ini search-index rebuild -r

### 10. ปรับแก้ไขสิทธิ์ที่จำเป็น:
```sh
Patipat Jo's avatar
Patipat Jo committed
162
sudo chown -R `whoami` /usr/lib/ckan/default/src/ckan/ckan/public
Patipat Jo's avatar
Patipat Jo committed
163

Patipat Jo's avatar
Patipat Jo committed
164
sudo chmod -R 775 /usr/lib/ckan/default/src/ckan/ckan/public
Patipat Jo's avatar
Patipat Jo committed
165
166
167
168
169
```

### 11. สร้าง CKAN SysAdmin และกำหนดสิทธิ์ DataStore:

```sh
Patipat Jo's avatar
Patipat Jo committed
170
171
. /usr/lib/ckan/default/bin/activate

Patipat Jo's avatar
Patipat Jo committed
172
173
174
#เปลี่ยน {username}
ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}

Patipat Jo's avatar
Patipat Jo committed
175
ckan -c /etc/ckan/default/ckan.ini datastore set-permissions | sudo -u postgres psql --set ON_ERROR_STOP=1
Patipat Jo's avatar
Patipat Jo committed
176

Patipat Jo's avatar
Patipat Jo committed
177
ckan -c /etc/ckan/default/ckan.ini run
Patipat Jo's avatar
Patipat Jo committed
178
179

deactivate
Patipat Jo's avatar
Patipat Jo committed
180
181
```

Patipat Jo's avatar
Patipat Jo committed
182
### 12. ทดสอบเรียกใช้เว็บไซต์ผ่าน http://localhost:5000 และ login ด้วย SysAdmin
Patipat Jo's avatar
Patipat Jo committed
183

Patipat Jo's avatar
Patipat Jo committed
184
### 13. วิธีการ set CKAN Production 
Patipat Jo's avatar
Patipat Jo committed
185
#### 13.1 ติดตั้ง nginx 
186
```sh
Patipat Jo's avatar
Patipat Jo committed
187
sudo apt-get install nginx
188
```
Patipat Jo's avatar
Patipat Jo committed
189
#### 13.2 สร้างไฟล์ script wsgi
190
191
192
```sh
sudo cp /usr/lib/ckan/default/src/ckan/wsgi.py /etc/ckan/default/
```
Patipat Jo's avatar
Patipat Jo committed
193
#### 13.3 สร้าง wsgi server 
194
```sh
Patipat Jo's avatar
Patipat Jo committed
195
. /usr/lib/ckan/default/bin/activate
Patipat Jo's avatar
Patipat Jo committed
196
197
198

pip install uwsgi

Patipat Jo's avatar
Patipat Jo committed
199
200
deactivate

Patipat Jo's avatar
Patipat Jo committed
201
sudo cp /usr/lib/ckan/default/src/ckan/ckan-uwsgi.ini /etc/ckan/default/
202
```
Patipat Jo's avatar
Patipat Jo committed
203
#### 13.4 ติดตั้ง supervisor สำหรับรัน uwsgi
204
205
206
```sh
sudo apt-get install supervisor
```
Patipat Jo's avatar
Patipat Jo committed
207
208
#### 13.5 สร้างไฟล์ config supervisor สำหรับ uwsgi
```sh
209
210
211
212
# สร้าง log โฟร์เดอร์สำหรับ CKAN
sudo mkdir -p /var/log/ckan

# สร้าง supervisor config สำหรับ ckan-uwsgi
Patipat Jo's avatar
Patipat Jo committed
213
214
215
sudo vi /etc/supervisor/conf.d/ckan-uwsgi.conf
```
เพิ่มคำสั่งต่อไปนี้
216
217
218
219
220
221
222
223
224
225
226
```sh
[program:ckan-uwsgi]

command=/usr/lib/ckan/default/bin/uwsgi -i /etc/ckan/default/ckan-uwsgi.ini

; Start just a single worker. Increase this number if you have many or
; particularly long running background jobs.
numprocs=1
process_name=%(program_name)s-%(process_num)02d

; Log files - change this to point to the existing CKAN log files
227
228
stdout_logfile=/var/log/ckan/ckan-uwsgi.stdout.log
stderr_logfile=/var/log/ckan/ckan-uwsgi.stderr.log
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245

; Make sure that the worker is started on system start and automatically
; restarted if it crashes unexpectedly.
autostart=true
autorestart=true

; Number of seconds the process has to run before it is considered to have
; started successfully.
startsecs=10

; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600

; Required for uWSGI as it does not obey SIGTERM.
stopsignal=QUIT
```
Patipat Jo's avatar
Patipat Jo committed
246
247
248
249
250
#### 13.6 สร้างไฟล์ config nginx
```sh
sudo vi /etc/nginx/sites-available/ckan
```
เพิ่มคำสั่งต่อไปนี้
251
```sh
Patipat Jo's avatar
Patipat Jo committed
252
proxy_cache_path /var/cache/nginx/proxycache levels=1:2 keys_zone=cache:30m max_size=250m;
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
proxy_temp_path /tmp/nginx_proxy 1 2;

server {
    client_max_body_size 100M;
    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_cache cache;
        proxy_cache_bypass $cookie_auth_tkt;
        proxy_no_cache $cookie_auth_tkt;
        proxy_cache_valid 30m;
        proxy_cache_key $host$scheme$proxy_host$request_uri;
        # In emergency comment out line to force caching
        # proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
    }

}
```
Patipat Jo's avatar
Patipat Jo committed
272
#### 13.7 เริ่มการใช้งาน CKAN
273
274
```sh
# ลบไฟล์ default ของ nginx ออก
thepaeth's avatar
thepaeth committed
275
sudo rm -r /etc/nginx/sites-enabled/default
Patipat Jo's avatar
Patipat Jo committed
276

277
# เปิดใช้งาน CKAN สำหรับ ngixn
Patipat Jo's avatar
Patipat Jo committed
278
279
sudo ln -s /etc/nginx/sites-available/ckan /etc/nginx/sites-enabled/ckan

Patipat Jo's avatar
Patipat Jo committed
280
281
282
283
284
285
286
287
#เตรียม proxycache
sudo mkdir -p /var/cache/nginx/proxycache && sudo chown www-data /var/cache/nginx/proxycache

#ปรับแก้ไขสิทธิ์ที่จำเป็น
sudo chown -R www-data:www-data /var/lib/ckan

sudo chown -R www-data:www-data /usr/lib/ckan/default/src/ckan/ckan/public

Patipat Jo's avatar
Patipat Jo committed
288
289
sudo chown -R www-data /tmp/default/

Patipat Jo's avatar
Patipat Jo committed
290
#แก้ไข CKAN config
Patipat Jo's avatar
Patipat Jo committed
291
292
293
294
sudo vi /etc/ckan/default/ckan.ini
    - กำหนด ip ที่ ckan.site_url
        > ckan.site_url = http://{ip address}

Patipat Jo's avatar
Patipat Jo committed
295
296
297

# รีสตาท Service
sudo supervisorctl reload
Patipat Jo's avatar
Patipat Jo committed
298
299

sudo service nginx restart
300
301
```

Patipat Jo's avatar
Patipat Jo committed
302
303
304
### 14. ทดสอบเรียกใช้เว็บไซต์ผ่าน http://{ip address}

### 15. ติดตั้งและตั้งค่า DataPusher
Patipat Jo's avatar
Patipat Jo committed
305
```sh
Patipat Jo's avatar
Patipat Jo committed
306
sudo apt-get install python-dev python-virtualenv build-essential libxslt1-dev libxml2-dev git libffi-dev
307

Patipat Jo's avatar
Patipat Jo committed
308
sudo virtualenv /usr/lib/ckan/datapusher
309

Patipat Jo's avatar
Patipat Jo committed
310
sudo mkdir /usr/lib/ckan/datapusher/src
311

Patipat Jo's avatar
Patipat Jo committed
312
cd /usr/lib/ckan/datapusher/src
Patipat Jo's avatar
Patipat Jo committed
313

Patipat Jo's avatar
Patipat Jo committed
314
sudo git clone https://gitlab.nectec.or.th/opend/datapusher.git
Patipat Jo's avatar
Patipat Jo committed
315

Patipat Jo's avatar
Patipat Jo committed
316
cd /usr/lib/ckan/datapusher/src/datapusher
Patipat Jo's avatar
Patipat Jo committed
317

Patipat Jo's avatar
Patipat Jo committed
318
sudo /usr/lib/ckan/datapusher/bin/pip install --use-feature=2020-resolver -r requirements.txt
319

Patipat Jo's avatar
Patipat Jo committed
320
321
322
323
324
325
326
sudo /usr/lib/ckan/datapusher/bin/python setup.py develop

sudo /usr/lib/ckan/datapusher/bin/pip install uwsgi

sudo cp -r /usr/lib/ckan/datapusher/src/datapusher/deployment /etc/ckan/datapusher

sudo chown `whoami` /etc/ckan/datapusher
Patipat Jo's avatar
Patipat Jo committed
327
```
328
329
330
331
332
333

สร้างไฟล์ supervisor config สำหรับ datapusher 
```sh
sudo vi /etc/supervisor/conf.d/ckan-datapusher.conf
```
เพิ่มคำสั่งต่อไปนี้
Patipat Jo's avatar
Patipat Jo committed
334
```sh
Patipat Jo's avatar
Patipat Jo committed
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
[program:ckan-datapusher]

command=/usr/lib/ckan/default/bin/uwsgi -i /etc/ckan/datapusher/datapusher-uwsgi.ini

; Start just a single worker. Increase this number if you have many or
; particularly long running background jobs.
numprocs=1
process_name=%(program_name)s-%(process_num)02d

; Log files
stdout_logfile=/var/log/ckan/ckan-datapusher.stdout.log
stderr_logfile=/var/log/ckan/ckan-datapusher.stderr.log

; Make sure that the worker is started on system start and automatically
; restarted if it crashes unexpectedly.
autostart=true
autorestart=true

; Number of seconds the process has to run before it is considered to have
; started successfully.
startsecs=10

; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
Patipat Jo's avatar
Patipat Jo committed
360

Patipat Jo's avatar
Patipat Jo committed
361
362
363
; Required for uWSGI as it does not obey SIGTERM.
stopsignal=QUIT
```
364

thepaeth's avatar
thepaeth committed
365
366
367
368
369
สร้าง background jobs config
```sh
sudo cp /usr/lib/ckan/default/src/ckan/ckan/config/supervisor-ckan-worker.conf /etc/supervisor/conf.d/ckan-worker.conf
```

Patipat Jo's avatar
Patipat Jo committed
370
ทำการ reload supervisor
371
372
373
```sh
sudo supervisorctl reload
```
Patipat Jo's avatar
Patipat Jo committed
374
### 16. ติดตั้งและตั้งค่า [CKAN Extensions](ckan-extension.md)
375
376
377