Skip to content

Quy trình triển khai OpenCPS từ source code

Hoàng Anh Tú edited this page Aug 1, 2016 · 13 revisions

Bài viết này sẽ hướng dẫn mọi người sử dụng source code được chia sẻ tại https://github.com/VietOpenCPS/opencps để có thể tự triển khai phần mềm lõi dịch vụ công trực tuyến nguồn mở OpenCPS.

Nội dung chính của bài viết bao gồm 4 phần:

  • Cài đặt Oracle JDK 1u79, Ant 1.9.7 và các required packages
  • Cài đặt và cấu hình Liferay 6.2GA6 bundle with jboss và Liferay Plugins SDK 6.2
  • Build các file .war từ source code
  • Cài đặt MariaDB 10.1 và import CSDL của OpenCPS

Môi trường cài đặt:

  • Hardward requirement: Ram tối thiểu 4GB, HDD 50gb.
  • Database version: MariaDB 10.1 (Stable)
  • OS: Centos 7.2

1 - Cài đặt Oracle JDK 1u79, Ant 1.9.7 và các required packages

Cài đặt các require packages cần thiết

yum -y install wget unzip git

Cài đặt Oracle JDK 1u79

cd /tmp
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" --progress=bar:force http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm
rpm -Uvh /tmp/jdk-7u79-linux-x64.rpm && rm -rf /tmp/jdk-7u79-linux-x64.rpm

Kiểm tra phiên bản java đã cài đặt

java -version

Cài đặt Ant 1.9.7

cd /usr/java
wget --progress=bar:force https://www.apache.org/dist/ant/binaries/apache-ant-1.9.7-bin.tar.gz
tar zxvf apache-ant-*.tar.gz
rm -rf apache-ant-*.tar.gz

echo 'export ANT_HOME=/usr/java/apache-ant-1.9.7' >> ~/.bash_profile
echo 'export PATH=$PATH:$ANT_HOME/bin' >> ~/.bash_profile
. ~/.bash_profile

2 - Cài đặt và cấu hình Liferay 6.2GA6 bundle with jboss và Liferay Plugins SDK 6.2

Tải và giải nén Liferay 6.2GA6 bundle with jboss vào thư mục /opt và đổi tên thành folder "server"

cd /opt/
wget --progress=bar:force http://downloads.sourceforge.net/project/lportal/Liferay%20Portal/6.2.5%20GA6/liferay-portal-jboss-6.2-ce-ga6-20160112152609836.zip
unzip liferay-portal-jboss-6.2-ce-ga6-20160112152609836.zip >> /dev/null 2>&1 && mv liferay-portal-6.2-ce-ga6 server
rm -rf liferay-portal-jboss-6.2-ce-ga6-20160112152609836.zip

Sửa file cấu hình standalone.xml trong /opt/server/jboss-7.1.1/standalone/configuration/standalone.xml để Liferay lắng nghe trên tất cả Interfaces và tăng thời gian deployment-timeout

sed -i 's/jboss.bind.address.management:127.0.0.1/jboss.bind.address.management:0.0.0.0/g'  /opt/server/jboss-7.1.1/standalone/configuration/standalone.xml
sed -i 's/jboss.bind.address:127.0.0.1/jboss.bind.address:0.0.0.0/g'  /opt/server/jboss-7.1.1/standalone/configuration/standalone.xml
sed -i 's/jboss.bind.address.unsecure:127.0.0.1/jboss.bind.address.unsecure:0.0.0.0/g'  /opt/server/jboss-7.1.1/standalone/configuration/standalone.xml
sed -i 's/deployment-timeout="120"/deployment-timeout="6000"/g'  /opt/server/jboss-7.1.1/standalone/configuration/standalone.xml

Tải và giải nén Liferay Plugins SDK 6.2 vào thư mục /opt và đổi tên thành folder "sdk"

wget --progress=bar:force http://downloads.sourceforge.net/project/lportal/Liferay%20Portal/6.2.5%20GA6/liferay-plugins-sdk-6.2-ce-ga6-20160112152609836.zip
unzip liferay-plugins-sdk*.zip >> /dev/null 2>&1 && mv liferay-plugins-sdk-6.2 sdk
rm -rf liferay-plugins-sdk-6.2-ce-ga6-20160112152609836.zip

Git Clone OpenCPS tại https://github.com/VietOpenCPS/opencps vào thư mục /opt (bài viết này dựa trên phiên bản OpenCPS 1.3)

cd /opt/ && git clone https://github.com/VietOpenCPS/opencps.git
cd /opt/opencps/ && git checkout rc-1.3

Copy toàn bộ file và folder trong thư mục sdk sang opencps và chỉnh sửa file build.properties trong /opt/opencps

cd /opt
\cp -r sdk/* opencps/ && rm -rf sdk
sed -i '341d' /opt/opencps/build.properties
sed -i '341i ivy.jar.url=https://repository.liferay.com/nexus/content/repositories/liferay-public-snapshots/com/liferay/org.apache.ivy/${ivy.version}/org.apache.ivy-${ivy.version}.jar' /opt/opencps/build.properties

Khởi tạo file build.[tên user].properties trong /opt/opencps/

export user=$(id -u -n)
touch /opt/opencps/build.${user}.properties
echo 'app.server.type = jboss' >> /opt/opencps/build.${user}.properties
echo 'app.server.parent.dir = /opt/server' >> /opt/opencps/build.${user}.properties
echo 'app.server.jboss.dir = ${app.server.parent.dir}/'$servertype >> /opt/opencps/build.${user}.properties
echo 'app.server.jboss.deploy.dir = ${app.server.jboss.dir}/deploy' >> /opt/opencps/build.${user}.properties
echo 'app.server.jboss.lib.global.dir = ${app.server.jboss.dir}/modules/com/liferay/portal/main' >> /opt/opencps/build.${user}.properties
echo 'app.server.jboss.portal.dir = ${app.server.jboss.dir}/standalone/deployments/ROOT.war' >> /opt/opencps/build.${user}.properties

3 - Build các file .war từ source code (folder /opt/opencps)

Add hostname của server vào /etc/hosts

export hname=$(hostname)
echo '120.0.0.1  '$hname >> /etc/hosts

Download thư viện sử dụng cho việc build file .war và

cd /tmp/ && wget --no-check-certificate --progress=bar:force https://www.dropbox.com/s/ya1alwnyrl3nabz/warlib.tar.gz 2>&1 | progressfilt && tar zxvf warlib.tar.gz > /dev/null 2>&1 && \cp -rf /tmp/lib/* /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/lib/ && rm -rf /tmp/lib/ warlib.tar.gz
wget --no-check-certificate -q https://www.dropbox.com/s/scbtu14kz51jvet/build-common-plugin.xml -O /opt/opencps/build-common-plugin.xml

Chạy các câu lệnh sau để Build Service. Lưu ý khi chạy 2 câu lệnh đầu tiên, hệ thống sẽ báo ECJ not install và sẽ tự động cài ECJ, không cần phải lo lắng, cứ tiếp tục chạy các câu lệnh tiếp theo.

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/accountmgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/datamgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/processmgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/dossiermgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/paymentmgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/servicemgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/usermgt/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service

Chỉnh sửa file /opt/opencps/build.properties bằng 2 câu lệnh sau

sed -i -e "s/ant.build.javac.source=1.6/ant.build.javac.source=1.7/" /opt/opencps/build.properties
sed -i -e "s/ant.build.javac.target=1.6/ant.build.javac.target=1.7/" /opt/opencps/build.properties

Sử dụng Ant để build ra file war đầu tiên - OpenCPS-porlet.war

ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml compile
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-taglib
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml deploy

Tạo file /opt/opencps/hooks/opencps-hook/build.xml và build ra file war thứ hai - Hook.war

touch /opt/opencps/hooks/opencps-hook/build.xml
echo '<?xml version="1.0"?>' > /opt/opencps/hooks/opencps-hook/build.xml
echo '<!DOCTYPE project>' >> /opt/opencps/hooks/opencps-hook/build.xml
echo '<project name="opencps-hook" basedir="." default="deploy">' >> /opt/opencps/hooks/opencps-hook/build.xml
echo '<import file="../build-common-hook.xml"/>' >> /opt/opencps/hooks/opencps-hook/build.xml
echo '</project>' >> /opt/opencps/hooks/opencps-hook/build.xml

ant -buildfile /opt/opencps/hooks/build.xml deploy

Tạo file war thứ 3 và thứ 4 - theme.war và ux-theme.war

ant -buildfile /opt/opencps/themes/build.xml deploy

LƯU Ý: Tất cả file war đã được tạo sẽ được copy vào thư muc /opt/server/deploy.

4 - Cài đặt MariaDB 10.1 và import CSDL của OpenCPS

Tạo repository Mariadb.repo trong /etc/yum.repos.d

touch /etc/yum.repos.d/MariaDB.repo
echo '[mariadb]' > /etc/yum.repos.d/MariaDB.repo
echo 'name = MariaDB' >> /etc/yum.repos.d/MariaDB.repo
echo 'baseurl = http://yum.mariadb.org/10.1/centos7-amd64/' >>/etc/yum.repos.d/MariaDB.repo
echo 'gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB' >> /etc/yum.repos.d/MariaDB.repo
echo 'gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo	
yum install MariaDB-server MariaDB-client -y

Cấu hình /etc/my.cnf.d/server.cnf. Có thể có nhiều option nhưng OpenCPS sẽ chỉ sử dụng tên các table là chữ thường nên bắt buộc phải có option sau trong file cấu hình của Mariadb.

vi /etc/my.cnf.d/server.cnf
   lower_case_table_names = 1

Chạy MariaDB và cho phép MariaDB khởi động cùng với hệ thống

systemctl start mysql
systemctl enable mysql

Thay đổi password root của database và loại bỏ các nguy cơ về bảo mật

mysql_secure_installation

Tạo Database opencps, sau đó import CSDL (trong /opt/opencps/db_script/opencps_portal.sql) vào opencps vừa tạo

mysql -uroot -p -e "create database opencps;"
mysql -uroot -p opencps < /opt/opencps/db_script/opencps_portal.sql

Tắt Selinux và mở port 8080 cho firewall trước khi chạy Liferay

setenforce 0

firewall-cmd --permanent --new-zone=opencps
firewall-cmd --permanent --zone=opencps --add-port=8080/tcp
firewall-cmd --reload

Khởi động OpenCPS.

cd /opt/server/jboss-7.1.1/bin
./statndalone.sh &

Đến đây là công việc triển khai OpenCPS đã hoàn tất. Bạn có thể sử dụng câu lệnh sau để biết WebServer đã chạy và lắng nghe trên cổng 8080.

netstat -anp |grep 8080

Sau đó thử truy cập và test xem OpenCPS có hoạt động tốt hay không bằng đường dẫn

http://[ip-server]:8080