-
Notifications
You must be signed in to change notification settings - Fork 15
Quy trình triển khai OpenCPS từ source code
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
- Hardward requirement: Ram tối thiểu 4GB, HDD 50gb.
- Database version: MariaDB 10.1 (Stable)
- OS: Centos 7.2
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
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
sed -i 's/MaxPermSize=256m/MaxPermSize=4096m/g' /opt/server/jboss-7.1.1/bin/standalone.conf
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
echo 'company.default.locale=vi_VN' >> /opt/server/portal-setup-wizard.properties
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/ && curl -J -O --insecure https://drive.fds.vn/index.php/s/J2SJgzRDBzOguMn/download 2>&1 | progressfilt && unzip lib.zip > /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
cd /opt/server/jboss-7.1.1/modules/com/liferay/portal/main/ && wget --no-check-certificate https://www.dropbox.com/s/290n49dhjnbkbc2/portal-service.jar
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
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
\cp -rf /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/api/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/holidayconfig/dao/service.xml /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/
ant -buildfile /opt/opencps/portlets/opencps-portlet/build.xml build-service
cd /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/api/service/base/ && curl -J --insecure https://drive.fds.vn/index.php/s/nKDjjecPo8DQW9n/download -O /opt/opencps/portlets/opencps-portlet/docroot/WEB-INF/src/org/opencps/api/service/base/ApiServiceLocalServiceBaseImpl.java
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.
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