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

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

Patipat Jo's avatar
Patipat Jo committed
8
### 2. ตั้งค่า PostgreSQL:
Patipat Jo's avatar
Patipat Jo committed
9
10
11
```sh
sudo apt-get install -y postgresql

Patipat Jo's avatar
Patipat Jo committed
12
13
# สร้าง postgres user สำหรับเขียน ckan_default, datastore_default 
# และใส่ ***{password1}***
Patipat Jo's avatar
Patipat Jo committed
14
15
16
17
18
19
20
21
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
22
23
24
25
# สร้าง postgres user สำหรับอ่าน datastore_default 
# และใส่ ***{password2}***
sudo -u postgres createuser -S -D -R -P -l datastore_default

Patipat Jo's avatar
Patipat Jo committed
26
27
28
29
#ตรวจสอบ database list ให้มี database ckan_default และ datastore_default
sudo -u postgres psql -l
```

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

Patipat Jo's avatar
Patipat Jo committed
34
35
# ใช้คำสั่งนี้เพื่อให้เปลี่ยนไปใช้ 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
36

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

Patipat Jo's avatar
Patipat Jo committed
39
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
40

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

Patipat Jo's avatar
Patipat Jo committed
43
sudo su solr
Patipat Jo's avatar
Patipat Jo committed
44

Patipat Jo's avatar
Patipat Jo committed
45
cd /opt/solr/bin
Patipat Jo's avatar
Patipat Jo committed
46

Patipat Jo's avatar
Patipat Jo committed
47
./solr create -c ckan
Patipat Jo's avatar
Patipat Jo committed
48

Patipat Jo's avatar
Patipat Jo committed
49
cd /var/solr/data/ckan/conf
Patipat Jo's avatar
Patipat Jo committed
50

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

Patipat Jo's avatar
Patipat Jo committed
53
54
55
56
57
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
58

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

Patipat Jo's avatar
Patipat Jo committed
61
exit
Patipat Jo's avatar
Patipat Jo committed
62

Patipat Jo's avatar
Patipat Jo committed
63
sudo service solr restart
Patipat Jo's avatar
Patipat Jo committed
64
65
```

Patipat Jo's avatar
Patipat Jo committed
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
### 4. ติดตั้ง Package ของ Ubuntu ที่ CKAN ต้องการ:
```sh
sudo apt-get install python-dev libpq-dev redis-server python-pip python-virtualenv git-core
```

### 5. ตั้งค่า python2 และ pip2:
```sh
#ตรวจสอบเวอร์ชั่นของ python และกำหนดให้เป็นเวอร์ชัน 2.7
python -V
# Python 2.7.x

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

### 6. ตั้งค่า CKAN path:
```sh
#เตรียม ckan path
sudo mkdir -p /usr/lib/ckan/default

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

#เตรียม storage path
sudo mkdir -p /var/lib/ckan/default

sudo chown -R `whoami` /var/lib/ckan && sudo chmod -R 775 /var/lib/ckan
```

### 7. ติดตั้ง CKAN:
```sh
virtualenv --no-site-packages /usr/lib/ckan/default

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

pip install --upgrade pip

pip install setuptools==44.1.0

pip install -e 'git+https://github.com/ckan/ckan.git@ckan-2.9.1#egg=ckan[requirements-py2]'

deactivate
```

Patipat Jo's avatar
Patipat Jo committed
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
    - เปิดการใช้งาน 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/
Patipat Jo's avatar
Patipat Jo committed
146

Patipat Jo's avatar
Patipat Jo committed
147
148

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

deactivate
Patipat Jo's avatar
Patipat Jo committed
151
152
```

Patipat Jo's avatar
Patipat Jo committed
153
### 9. สร้าง CKAN SysAdmin และกำหนดสิทธิ์ DataStore:
Patipat Jo's avatar
Patipat Jo committed
154
155

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

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

Patipat Jo's avatar
Patipat Jo committed
161
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
162

Patipat Jo's avatar
Patipat Jo committed
163
ckan -c /etc/ckan/default/ckan.ini run
Patipat Jo's avatar
Patipat Jo committed
164
165

deactivate
Patipat Jo's avatar
Patipat Jo committed
166
167
```

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

Patipat Jo's avatar
Patipat Jo committed
170
### 11. วิธีการ set CKAN Production 
Patipat Jo's avatar
Patipat Jo committed
171

Patipat Jo's avatar
Patipat Jo committed
172
#### 11.1 สร้าง wsgi server 
173
```sh
Patipat Jo's avatar
Patipat Jo committed
174
. /usr/lib/ckan/default/bin/activate
Patipat Jo's avatar
Patipat Jo committed
175
176
177

pip install uwsgi

Patipat Jo's avatar
Patipat Jo committed
178
179
deactivate

Patipat Jo's avatar
Patipat Jo committed
180
sudo cp /usr/lib/ckan/default/src/ckan/ckan-uwsgi.ini /etc/ckan/default/
Patipat Jo's avatar
Patipat Jo committed
181
182

sudo cp /usr/lib/ckan/default/src/ckan/wsgi.py /etc/ckan/default/
183
```
Patipat Jo's avatar
Patipat Jo committed
184
#### 11.2 ติดตั้งและตั้งค่า supervisor สำหรับรัน uwsgi
185
186
```sh
sudo apt-get install supervisor
Patipat Jo's avatar
Patipat Jo committed
187

188
189
190
191
# สร้าง log โฟร์เดอร์สำหรับ CKAN
sudo mkdir -p /var/log/ckan

# สร้าง supervisor config สำหรับ ckan-uwsgi
Patipat Jo's avatar
Patipat Jo committed
192
193
194
sudo vi /etc/supervisor/conf.d/ckan-uwsgi.conf
```
เพิ่มคำสั่งต่อไปนี้
195
196
197
198
199
200
201
202
203
204
205
```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
206
207
stdout_logfile=/var/log/ckan/ckan-uwsgi.stdout.log
stderr_logfile=/var/log/ckan/ckan-uwsgi.stderr.log
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

; 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
225
#### 11.3 ติดตั้งและตั้งค่า nginx
Patipat Jo's avatar
Patipat Jo committed
226
```sh
Patipat Jo's avatar
Patipat Jo committed
227
228
sudo apt-get install nginx

Patipat Jo's avatar
Patipat Jo committed
229
230
231
sudo vi /etc/nginx/sites-available/ckan
```
เพิ่มคำสั่งต่อไปนี้
232
```sh
Patipat Jo's avatar
Patipat Jo committed
233
proxy_cache_path /var/cache/nginx/proxycache levels=1:2 keys_zone=cache:30m max_size=250m;
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
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
253
#### 11.4 เริ่มการใช้งาน CKAN
254
255
```sh
# ลบไฟล์ default ของ nginx ออก
thepaeth's avatar
thepaeth committed
256
sudo rm -r /etc/nginx/sites-enabled/default
Patipat Jo's avatar
Patipat Jo committed
257

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

Patipat Jo's avatar
Patipat Jo committed
261
262
263
264
265
266
267
268
#เตรียม 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
269
270
sudo chown -R www-data /tmp/default/

Patipat Jo's avatar
Patipat Jo committed
271
#แก้ไข CKAN config
Patipat Jo's avatar
Patipat Jo committed
272
273
274
275
sudo vi /etc/ckan/default/ckan.ini
    - กำหนด ip ที่ ckan.site_url
        > ckan.site_url = http://{ip address}

Patipat Jo's avatar
Patipat Jo committed
276
277
278

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

sudo service nginx restart
281
282
```

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

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

Patipat Jo's avatar
Patipat Jo committed
289
sudo virtualenv /usr/lib/ckan/datapusher
290

Patipat Jo's avatar
Patipat Jo committed
291
sudo mkdir /usr/lib/ckan/datapusher/src
292

Patipat Jo's avatar
Patipat Jo committed
293
cd /usr/lib/ckan/datapusher/src
Patipat Jo's avatar
Patipat Jo committed
294

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

Patipat Jo's avatar
Patipat Jo committed
297
cd /usr/lib/ckan/datapusher/src/datapusher
Patipat Jo's avatar
Patipat Jo committed
298

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

Patipat Jo's avatar
Patipat Jo committed
301
302
303
304
305
306
307
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
308
```
309
310
311
312
313
314

สร้างไฟล์ supervisor config สำหรับ datapusher 
```sh
sudo vi /etc/supervisor/conf.d/ckan-datapusher.conf
```
เพิ่มคำสั่งต่อไปนี้
Patipat Jo's avatar
Patipat Jo committed
315
```sh
Patipat Jo's avatar
Patipat Jo committed
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
[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
341

Patipat Jo's avatar
Patipat Jo committed
342
343
344
; Required for uWSGI as it does not obey SIGTERM.
stopsignal=QUIT
```
345

thepaeth's avatar
thepaeth committed
346
347
348
349
350
สร้าง 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
351
ทำการ reload supervisor
352
353
354
```sh
sudo supervisorctl reload
```
Patipat Jo's avatar
Patipat Jo committed
355
356
357
358
359
360
361
362
363
364

### 14. 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

### 15. ติดตั้งและตั้งค่า [CKAN Extensions](ckan-extension.md)
365
366
367