from-source.md 13.8 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
15
16
17
18
19
20
21
22
23
24
25
```

### 3. ตั้งค่า python2 และ pip2:
```sh
#ตรวจสอบเวอร์ชั่นของ python และตั้งค่า default python2
python -V
    # หากยังไม่ใช่ version 2 ใช้คำสั่งนี้ และ select python2
    sudo update-alternatives --config python

#ตรวจสอบเวอร์ชั่นของ pip และตั้งค่า default pip for python 2
pip -V
    # หากยังไม่ใช่ version 2 ใช้คำสั่งนี้
    sudo cp /usr/local/bin/pip2 /usr/local/bin/pip
```

Patipat Jo's avatar
Patipat Jo committed
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
### 4. ตั้งค่า PostgreSQL:
```sh
sudo apt-get install -y postgresql

# สร้าง postgres user สำหรับ ckan_default และใส่ ***{password1}***
sudo -u postgres createuser -S -D -R -P ckan_default

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

# สร้าง postgres user สำหรับ datastore_default และใส่ ***{password2}***
sudo -u postgres createuser -S -D -R -P -l datastore_default

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

#ตรวจสอบ 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
54
55
```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/storage

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
67
68
69
70
71
72
73
74
75
76
77

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

pip install setuptools==44.1.0

pip install --upgrade pip

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

deactivate

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

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

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

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

Patipat Jo's avatar
Patipat Jo committed
85
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
86

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

Patipat Jo's avatar
Patipat Jo committed
89
sudo su solr
Patipat Jo's avatar
Patipat Jo committed
90

Patipat Jo's avatar
Patipat Jo committed
91
cd /opt/solr/bin
Patipat Jo's avatar
Patipat Jo committed
92

Patipat Jo's avatar
Patipat Jo committed
93
./solr create -c ckan
Patipat Jo's avatar
Patipat Jo committed
94

Patipat Jo's avatar
Patipat Jo committed
95
cd /var/solr/data/ckan/conf
Patipat Jo's avatar
Patipat Jo committed
96

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

Patipat Jo's avatar
Patipat Jo committed
99
100
101
102
103
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
104

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

Patipat Jo's avatar
Patipat Jo committed
107
exit
Patipat Jo's avatar
Patipat Jo committed
108

Patipat Jo's avatar
Patipat Jo committed
109
sudo service solr restart
Patipat Jo's avatar
Patipat Jo committed
110
111
112
113
114
```

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

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

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

Patipat Jo's avatar
Patipat Jo committed
125
126
127
128
129
130
ckan generate config /etc/ckan/default/ckan.ini

sudo vi /etc/ckan/default/ckan.ini
    - เพิ่มค่า config ถัดจาก [app:main] (มีอยู่แล้ว)
        [app:main]
        ckan.tracking_enabled = true
Patipat Jo's avatar
Patipat Jo committed
131
    - แก้ไข {password1} (จากการตั้งค่าในขั้นตอนที่ 4) ของ sqlalchemy.url
Patipat Jo's avatar
Patipat Jo committed
132
        > sqlalchemy.url = postgresql://ckan_default:{password1}@localhost/ckan_default
Patipat Jo's avatar
Patipat Jo committed
133
    - เปิดการใช้งาน และแก้ไข {password1} (จากการตั้งค่าในขั้นตอนที่ 4) ของ ckan.datastore.write_url
Patipat Jo's avatar
Patipat Jo committed
134
        > ckan.datastore.write_url = postgresql://ckan_default:{password1}@localhost/datastore_default
Patipat Jo's avatar
Patipat Jo committed
135
    - เปิดการใช้งาน และแก้ไข {password2} (จากการตั้งค่าในขั้นตอนที่ 4) ของ ckan.datastore.read_url
Patipat Jo's avatar
Patipat Jo committed
136
        > ckan.datastore.read_url = postgresql://datastore_default:{password2}@localhost/datastore_default
Patipat Jo's avatar
Patipat Jo committed
137
    - กำหนด ckan.site_url
Patipat Jo's avatar
Patipat Jo committed
138
        > ckan.site_url = http://localhost:5000
Patipat Jo's avatar
Patipat Jo committed
139
140
141
142
143
144
    - แก้ไข ckan.auth.user_delete_groups
        > ckan.auth.user_delete_groups = false
    - แก้ไข ckan.auth.user_delete_organizations
        > ckan.auth.user_delete_organizations = false
    - แก้ไข ckan.auth.public_user_details
        > ckan.auth.public_user_details = false
Patipat Jo's avatar
Patipat Jo committed
145
146
    - เปิดการใช้งาน และแก้ไข solr_url
        > solr_url = http://127.0.0.1:8983/solr/ckan
Patipat Jo's avatar
Patipat Jo committed
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
    - เปิดการใช้งาน 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.locale_default
        > ckan.locale_default = th
    - แก้ไข ckan.locale_order (แทรก th)
        > ckan.locale_order = en th pt_BR ...(ต่อจากนั้นเหมือนเดิม)
    - เปิดการใช้งานและแก้ไข ckan.storage_path
        > ckan.storage_path = /var/lib/ckan/default
    - เปิดการใช้งาน ckan.datapusher.formats
        > ckan.datapusher.formats = csv ...(ต่อจากนั้นเหมือนเดิม)
    - เปิดการใช้งาน ckan.datapusher.url
        > ckan.datapusher.url = http://127.0.0.1:8800/
    - เปิดการใช้งานและแก้ไข ckan.datapusher.assume_task_stale_after
        > ckan.datapusher.assume_task_stale_after = 60
    - เปิดการใช้งาน ckan.activity_streams_enabled
        > ckan.activity_streams_enabled = true

```

#### 8.3 เริ่มต้นสร้างฐานข้อมูลสำหรับ CKAN:
```sh
cd /usr/lib/ckan/default/src/ckan

ckan -c /etc/ckan/default/ckan.ini db init
```

### 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
187
sudo chown -R `whoami` /usr/lib/ckan/default/src/ckan/ckan/public
Patipat Jo's avatar
Patipat Jo committed
188

Patipat Jo's avatar
Patipat Jo committed
189
sudo chmod -R 775 /usr/lib/ckan/default/src/ckan/ckan/public
Patipat Jo's avatar
Patipat Jo committed
190
191
192
193
194
195
196
197
```

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

```sh
#เปลี่ยน {username}
ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}

Patipat Jo's avatar
Patipat Jo committed
198
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
199

Patipat Jo's avatar
Patipat Jo committed
200
cd /usr/lib/ckan/default/src/ckan
Patipat Jo's avatar
Patipat Jo committed
201

Patipat Jo's avatar
Patipat Jo committed
202
ckan -c /etc/ckan/default/ckan.ini run
Patipat Jo's avatar
Patipat Jo committed
203
204
```

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

Patipat Jo's avatar
Patipat Jo committed
207
### 13. วิธีการ set CKAN Production 
Patipat Jo's avatar
Patipat Jo committed
208
#### 13.1 ติดตั้ง nginx 
209
```sh
Patipat Jo's avatar
Patipat Jo committed
210
sudo apt-get install nginx
211
```
Patipat Jo's avatar
Patipat Jo committed
212
#### 13.2 สร้างไฟล์ script wsgi
213
214
215
```sh
sudo cp /usr/lib/ckan/default/src/ckan/wsgi.py /etc/ckan/default/
```
Patipat Jo's avatar
Patipat Jo committed
216
#### 13.3 สร้าง wsgi server 
217
```sh
Patipat Jo's avatar
Patipat Jo committed
218
. /usr/lib/ckan/default/bin/activate
Patipat Jo's avatar
Patipat Jo committed
219
220
221
222

pip install uwsgi

sudo cp /usr/lib/ckan/default/src/ckan/ckan-uwsgi.ini /etc/ckan/default/
223
```
Patipat Jo's avatar
Patipat Jo committed
224
#### 13.4 ติดตั้ง supervisor สำหรับรัน uwsgi
225
226
227
```sh
sudo apt-get install supervisor
```
Patipat Jo's avatar
Patipat Jo committed
228
229
#### 13.5 สร้างไฟล์ config supervisor สำหรับ uwsgi
```sh
230
231
232
233
# สร้าง log โฟร์เดอร์สำหรับ CKAN
sudo mkdir -p /var/log/ckan

# สร้าง supervisor config สำหรับ ckan-uwsgi
Patipat Jo's avatar
Patipat Jo committed
234
235
236
sudo vi /etc/supervisor/conf.d/ckan-uwsgi.conf
```
เพิ่มคำสั่งต่อไปนี้
237
238
239
240
241
242
243
244
245
246
247
```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
248
249
stdout_logfile=/var/log/ckan/ckan-uwsgi.stdout.log
stderr_logfile=/var/log/ckan/ckan-uwsgi.stderr.log
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

; 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
267
268
269
270
271
#### 13.6 สร้างไฟล์ config nginx
```sh
sudo vi /etc/nginx/sites-available/ckan
```
เพิ่มคำสั่งต่อไปนี้
272
```sh
Patipat Jo's avatar
Patipat Jo committed
273
proxy_cache_path /var/cache/nginx/proxycache levels=1:2 keys_zone=cache:30m max_size=250m;
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
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
293
#### 13.7 เริ่มการใช้งาน CKAN
294
295
```sh
# ลบไฟล์ default ของ nginx ออก
thepaeth's avatar
thepaeth committed
296
sudo rm -r /etc/nginx/sites-enabled/default
Patipat Jo's avatar
Patipat Jo committed
297

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

Patipat Jo's avatar
Patipat Jo committed
301
302
303
304
305
306
307
308
#เตรียม 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
309
310
sudo chown -R www-data /tmp/default/

Patipat Jo's avatar
Patipat Jo committed
311
#แก้ไข CKAN config
Patipat Jo's avatar
Patipat Jo committed
312
313
314
315
sudo vi /etc/ckan/default/ckan.ini
    - กำหนด ip ที่ ckan.site_url
        > ckan.site_url = http://{ip address}

Patipat Jo's avatar
Patipat Jo committed
316
317
318
319
320

# รีสตาท Service
sudo service nginx restart

sudo supervisorctl reload
321
322
```

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

### 15. ติดตั้งและตั้งค่า DataPusher
Patipat Jo's avatar
Patipat Jo committed
326
```sh
327
328
329
330
331
332
333
334
335
336
337
338
# Install requirements for the DataPusher
 sudo apt-get install python-dev python-virtualenv build-essential libxslt1-dev libxml2-dev git libffi-dev

 # Create a virtualenv for datapusher
 sudo virtualenv /usr/lib/ckan/datapusher

 # Create a source directory and switch to it
 sudo mkdir /usr/lib/ckan/datapusher/src
 cd /usr/lib/ckan/datapusher/src

 # Clone the source (you should target the latest tagged version)
 sudo git clone https://gitlab.nectec.or.th/opend/datapusher.git
Patipat Jo's avatar
Patipat Jo committed
339

340
341
342
343
 # Install the DataPusher and its requirements
 cd datapusher
 sudo /usr/lib/ckan/datapusher/bin/pip install --use-feature=2020-resolver -r requirements.txt
 sudo /usr/lib/ckan/datapusher/bin/python setup.py develop
Patipat Jo's avatar
Patipat Jo committed
344

345
346
 # Install uWSGI
 sudo /usr/lib/ckan/datapusher/bin/pip install uwsgi
Patipat Jo's avatar
Patipat Jo committed
347

348
349
350
351
352
353
 # copy deployment to /etc/ckan/datapusher
 sudo cp -r /usr/lib/ckan/datapusher/src/datapusher/deployment /etc/ckan/datapusher
sudo chown `whoami` /etc/ckan/datapusher

# Create CKAN log folder
sudo mkdir -p /var/log/ckan
Patipat Jo's avatar
Patipat Jo committed
354
```
355
356
357
358
359
360

สร้างไฟล์ supervisor config สำหรับ datapusher 
```sh
sudo vi /etc/supervisor/conf.d/ckan-datapusher.conf
```
เพิ่มคำสั่งต่อไปนี้
Patipat Jo's avatar
Patipat Jo committed
361
```sh
Patipat Jo's avatar
Patipat Jo committed
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
[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
387

Patipat Jo's avatar
Patipat Jo committed
388
389
390
; Required for uWSGI as it does not obey SIGTERM.
stopsignal=QUIT
```
391
392
393
394
395
ทำการ reload supervisor

```sh
sudo supervisorctl reload
```
Patipat Jo's avatar
Patipat Jo committed
396
### 16. ติดตั้งและตั้งค่า [CKAN Extensions](ckan-extension.md)
397
398
399