本指南將引導您使用 Ubuntu 16.04 部署和設置 CKAN 存儲庫。 CKAN 是一個開源數據集存儲庫,用於收集和分發來自各種來源的大型數據集,包括人口普查數據、電子表格、地理數據、政府和研究數據。
完成本指南後,您將擁有一台運行 CKAN 2.7 的生產服務器,該服務器已準備好導入新數據集,但如果您想開始使用 CKAN,則必須查看官方文檔以設置開發環境。
要完成本指南,您需要:
- 使用公共 IP 運行 Ubuntu 16.04 64 位的雲 VPS 或虛擬機
- 與您的 VPS 關聯的域名(您也可以使用子域)
- 一些使用 Python 虛擬環境和命令行 shell 的經驗
- 有關的一些知識 Apache、Nginx 和 Tomcat
- 具有 CSV 結構的示例數據集或 Excel 格式(可選)
1. 設置系統
讓我們首先使用所需的軟件包設置 ubuntu 機器:
一個。 更新服務器
$ sudo ssh root@$REMOTE_SERVER
apt update && apt upgrade
灣創建備份腳本
$ cat > /usr/bin/backme.sh
#! /bin/bash -e
backme () {
TIMESTAMP=$( date +'%s')
for SOURCE_FILE in $*
do
cp -av $SOURCE_FILE ${SOURCE_FILE}-${TIMESTAMP}
done
}
backme $*
exit $?
$ sudo chmod +x /usr/bin/backme.sh
C。 更新服務器主機名配置,您需要將“xxxx”替換為您的服務器 IP 地址,還將 yourdomain.com 替換為分配給您服務器的域。
backme.sh /etc/hosts /etc/hostname
echo "ckanproduction.yourdomain.com" > /etc/hostname
echo -e "nx.x.x.x ckanproduction.yourdomain.com ckanproduction" >> /etc/hosts
$ sudo hostname ckanproduction.yourdomain.com
exit
$ sudo ssh root@$REMOTE_SERVER
d. 設置一個用戶帳戶來部署 CKAN
adduser ckanadmin
# USE THE INTERACTIVE PROGRAM TO SETUP A NEW USER AND PASSWORD TO MANAGE CKAN
echo -e "nckanadmin ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
此外,您可以使用“visudo”來設置用戶權限。
$ su - ckanadmin
mkdir .ssh
$ cat > .ssh/authorized_keys
# INSERT A PUBLIC KEY TO ACCESS YOUR SERVER AS THE USER ckanadmin
chmod 700 .ssh
exit
$ ssh ckanadmin@$REMOTE_SERVER
e. 安裝CKAN的軟件包依賴
$ cat > packagelist
apache2
build-essential
git
git-core
jq
libapache2-mod-rpaf
libapache2-mod-wsgi
libffi-dev
libgeos-c1
libgeos-dev
libjts-java
libpq5
libpq-dev
libtomcat6-java
libxml2-dev
libxslt1-dev
links
openjdk-8-jdk
postgresql
postgresql-9.3-postgis-2.1
python-dev
python-jinja2
python-pastescript
python-pip
python-virtualenv
python-werkzeug
redis-server
solr-tomcat
tomcat8
unzip
virtualenvwrapper
zlib1g-dev
postfix
unzip
unrar
p7zip-full
python-gdal
$ sudo apt install -y $( cat packagelist )
$ sudo service apache2 stop
$ sudo apt install nginx -y
$ sudo service nginx stop
注意:使用 apt search packagename*
搜索當前版本 Ubuntu 支持的軟件包版本,並相應地更新“packagelist”文件。
2.下載並安裝CKAN包進行生產
我們必須使用 wget 命令從 ckan 打包網站下載相應的文件。
$ sudo wget https://packaging.ckan.org/python-ckan_2.7-trusty_amd64.deb
$ sudo dpkg -i python-ckan_2.7-trusty_amd64.deb
3. 設置一個 PostgreSQL 數據庫
一個。 檢查PostgreSQL是否安裝正確,檢查數據庫的編碼是否為UTF8
sudo -u postgres psql -l
灣接下來您需要創建一個數據庫用戶(請使用不同的密碼)
$ sudo -u postgres createuser -S -D -R -P ckan_default
password: f!+hRnztXgDtKSLW9kY
C。 創建一個新的 PostgreSQL 數據庫,
$ sudo -u postgres createdb -O ckan_default ckan_default -E utf-8
database: ckan_default
5. 設置 Solr
一個。 編輯Tomcat配置文件
$ sudo backme.sh /etc/tomcat8/server.xml
$ sudo sed -r -i "/Connector port="8080"/ s/$/address="127.0.0.1"/" /etc/tomcat6/server.xml
$ sudo sed -r -i "/port=.8080./ s/8080/8983/g" /etc/tomcat8/server.xml
$ diff /etc/tomcat8/server.xml /etc/tomcat8/server.xml.last
sudo service tomcat8 restart
灣用指向 CKAN 模式的符號鏈接替換默認的 schema.xml 文件
$ sudo mv -v /etc/solr/conf/schema.xml /etc/solr/conf/schema.xml.orig.back
$ sudo ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml /etc/solr/conf/schema.xml
$ sudo service tomcat8 restart
C。 更改 CKAN 配置文件中的 solr_url 設置
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/solr_url/ s/^#//" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
$ sudo ln -s /usr/bin/rotatelogs /usr/sbin/rotatelogs
$ sudo service tomcat8 restart
$ sudo service apache2 restart
links https://localhost:8983/solr/
$ ssh -L 8983:localhost:8983 [email protected]
Use a web browser to check https://localhost:8983/solr/
6.更新配置並初始化數據庫
d. 設置 ckan.site_id
sudo backme.sh /etc/ckan/default/production.ini
sudo sed -i "/ckan.site_id/ s/default/tenosolution/" /etc/ckan/default/production.ini
diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
e. 設置 ckan.site_url
sudo backme.sh /etc/ckan/default/production.ini
sudo sed -r -i "/ckan.site_url/ s/$/ https://ckanproduction.yourdomain.com/" /etc/ckan/default/production.ini
diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
C。 編輯 sqlalchemy.url 設置( sqlalchemy.url = postgresql://ckan_default:pass@localhost/ckan_default )
sudo backme.sh /etc/ckan/default/production.ini
sudo sed -i "/sqlalchemy/ s/pass/f!+hRnztXgDtKSLW9kY/" /etc/ckan/default/production.ini
diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
C。 初始化您的 CKAN 數據庫
$ sudo ckan db init
d. 重新啟動 Web 服務器
$ sudo service apache2 restart
$ sudo service nginx restart
7. 設置管理員賬戶和測試數據
一個。 初始化虛擬環境
$ . /usr/lib/ckan/default/bin/activate
$ cd /usr/lib/ckan/default/src/ckan
灣創建 sysadmin 用戶(請設置不同的密碼)
paster sysadmin add mycompanyadmin -c /etc/ckan/default/production.ini
password: mycompanyadmin
C。 創建測試數據
$ paster create-test-data -c /etc/ckan/default/production.ini
d. 設置 CKAN 所有權以稍後安裝擴展…
$ cd /usr/lib/ckan
$ sudo chown -R ckanadmin: default/
8. 設置 ckanext-spatial
一個。 安裝 PostGIS:
cd /usr/lib/ckan/default/src/ckan
$ sudo apt-get install postgresql-9.3-postgis-2.1 python-dev libxml2-dev libxslt1-dev libgeos-c1
灣在數據庫中創建必要的表和函數
$ sudo -u postgres psql -d ckan_default -f /usr/share/postgresql/9.3/contrib/postgis-2.1/postgis.sql
$ sudo -u postgres psql -d ckan_default -f /usr/share/postgresql/9.3/contrib/postgis-2.1/spatial_ref_sys.sql
C。 將空間表的所有者更改為 CKAN 用戶
sudo -u postgres psql -d ckan_default -c 'ALTER VIEW geometry_columns OWNER TO ckan_default;'
$ sudo -u postgres psql -d ckan_default -c 'ALTER TABLE spatial_ref_sys OWNER TO ckan_default;'
d. 查看 PostGIS 是否已正確安裝:
$ sudo -u postgres psql -d ckan_default -c "SELECT postgis_full_version()"
e. 安裝擴展
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/okfn/ckanext-spatial.git
$ cd ckanext-spatial
$ sudo pip install -r pip-requirements.txt
$ python setup.py develop
F。 配置擴展:
$ cd /usr/lib/ckan/default/src/ckanext-spatial
$ paster --plugin=ckanext-spatial spatial initdb 4326 -c /etc/ckan/default/production.ini
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ spatial_metadata spatial_query/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
deactivate
9. 配置文件存儲
d. 創建文件存儲目錄
$ sudo mkdir -p /var/lib/ckan/default
$ sudo chown -R www-data: /var/lib/ckan/default
$ sudo chmod -u+rwx /var/lib/ckan/default
e. 啟用 FileStore 和文件上傳
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -i "/ckan.storage_path/ s/^#//" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
$ sudo chown -R www-data: /var/lib/ckan
10.安裝擴展
一個。 初始化虛擬環境
$ . /usr/lib/ckan/default/bin/activate
一個。 安裝 ckanext-spatialUI ( https://extensions.ckan.org/extension/spatialui/ )
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/XVTSolutions/ckanext-spatialUI
$ cd ckanext-spatialUI
$ python setup.py develop
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ spatialUI/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
灣安裝 ckanext-pdfview ( https://extensions.ckan.org/extension/pdfview/ )
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/ckan/ckanext-pdfview.git
$ cd ckanext-pdfview
$ python setup.py develop
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ resource_proxy pdf_view/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
C。 安裝 ckanext-officedocs ( https://extensions.ckan.org/extension/officedocs/ )
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/jqnatividad/ckanext-officedocs.git
$ cd ckanext-officedocs
$ python setup.py install
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ officedocs_view/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
d. 安裝 ckanext-dictionary ( https://extensions.ckan.org/extension/dictionary/ )
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/cmuphillycapstone/ckanext-dictionary.git
$ cd ckanext-dictionary
$ python setup.py develop
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ dictionary/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
G。 安裝 ckanext-geoview ( https://github.com/ckan/ckanext-geoview )
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/ckan/ckanext-geoview.git
$ cd ckanext-geoview
$ python setup.py develop
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ geo_view geojson_view wmts_view/" /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.views.default_views =/ s/$/ geo_view geojson_view wmts_view/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
H。 安裝 ckanext-geopusher ( https://github.com/datacats/ckanext-geopusher )
$ cd /usr/lib/ckan/default/src
$ git clone https://github.com/datacats/ckanext-geopusher.git
$ cd ckanext-geopusher
$ backme.sh requirements.txt
$ sed -r -i "/celery/ s/$/==3.1.25/" requirements.txt
$ pip install -r requirements.txt
$ python setup.py develop
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ geopusher/" /etc/ckan/default/production.ini
$ sudo sed -i "100ickanext.geoview.ol_viewer.formats = wms kml geojson wfs" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
$ sudo service apache2 reload
deactivate
11. 設置 DataStore(在新終端中運行)
$ . /usr/lib/ckan/default/bin/activate
一個。 啟用數據存儲插件
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ datastore/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
灣設置數據庫,創建一個名為datastore_default 的database_user。 (請使用不同的密碼)
$ sudo -u postgres psql -l
$ sudo -u postgres createuser -S -D -R -P -l datastore_default
$ password: 7DN4ta2igWVlFj
$ sudo -u postgres createdb -O ckan_default datastore_default -E utf-8
C。 設置您的 CKAN 配置
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i -e "/ckan.datastore.write_url/ s/^#//" -e "/ckan.datastore.write_url/ s/ckan_default:pass/ckan_default:f!+hRnztXgDtKSLW9kY/" /etc/ckan/default/production.ini
$ sudo sed -r -i -e "/ckan.datastore.read_url/ s/^#//" -e "/ckan.datastore.read_url/ s/datastore_default:pass/datastore_default:7DN4ta2igWVlFj/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
d. 設置權限,使用此命令進行源碼安裝
$ sudo ckan datastore set-permissions | sudo -u postgres psql --set ON_ERROR_STOP=1
e. 設置數據推送器
$ sudo backme.sh /etc/ckan/default/production.ini
$ sudo sed -r -i "/ckan.plugins =/ s/$/ datapusher/" /etc/ckan/default/production.ini
$ sudo sed -r -i "/datapusher/ s/^#ckan/ckan/" /etc/ckan/default/production.ini
$ diff /etc/ckan/default/production.ini /etc/ckan/default/production.ini.last
12. 重啟網絡服務
$ sudo -i
$ service tomcat8 restart; service apache2 restart; service nginx restart
您應該能夠通過 https://ckanproduction.yourdomain.com 訪問您的 CKAN 存儲庫並使用 admin 之前創建的用戶。
請參閱 ckan 文檔 有關如何管理和設置新站點的更多詳細信息。