# Hướng dẫn cài đặt hệ thống phần mềm Kho tư liệu trên Centos Linux ### 1. Tải phần mềm cài đặt kho tư liệu ```bash= sudo yum install -y git && git clone -b deploy-kho https://<USERNAME>:<PASSWORD>@gitlab.com/niler/deployer/deploy.git deploy/deploy-kho && cd deploy/deploy-kho && git submodule update --init && git submodule update --remote && git submodule sync && git submodule status ``` Trong đó: > `<USERNAME>`: Tài khoản ngưởi dùng trên gitlab > `<PASSWORD>`: Access token người dùng trên gitlab ### 2. Cài đặt các thành phần hệ thống Di chuyển đến thư mục chứa phần mềm cài đặt vừa tải về: ```bash= cd deploy/deploy-kho ``` #### a. Cài đặt phần mềm database mongodb - Di chuyển đến thư mục cài đặt mongodb ```bash= cd mongodb ``` - Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **MONGO_INITDB_ROOT_USERNAME**: Tài khoản quản trị cao nhất của mongodb. Mặc định là "root" - thường không thay đổi. **MONGO_INITDB_ROOT_PASSWORD**: Mật khẩu của tài khoản root **MONGO_PORT**: cổng để kết nối đến mongodb (thay đổi nếu bị trùng cổng). - Build mongodb docker image và tạo container ```bash= docker-compose up -d ``` - Kiểm tra container ```bash= docker ps -a ``` #### b. Cài đặt phần mềm FTP server - Di chuyển đến thư mục cài đặt FTP server ```bash= cd ftpserver ``` - Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **VSFTPD_USER_1 -> 9**: Tài khoản FTP server theo định dạng ```<Tài khoản>:<Mật khẩu>:<UserID - Là số duy nhất>:<Đường dẫn thư mục root của user /home/virtual/<Tài khoản>>``` Ví dụ: VSFTPD_USER_1=dinte:dinte:1001:/home/virtual/dinte >**FTP_PORT**: Cổng để client kết nối đến FTP server **PASV_ADDRESS**: Địa chỉ IP của máy chủ cài đặt FTP server. - Build ftpserver docker image và tạo container ```bash= docker-compose up -d ``` - Kiểm tra container ```bash= docker ps -a ``` #### c. Cài đặt phần mềm quản lý tài khoản người dùng - Di chuyển đến thư mục cài đặt OpenLdap ```bash= cd openldap ``` - Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **LDAP_PORT_NUMBER**: Cổng truy cập Ldap (thay đổi nếu cổng đã tồn tại rồi) **LDAP_PORT_SSL_NUMBER**: Cổng truy cập Ldap thông qua SSL (thay đổi nếu cổng đã tồn tại rồi) **LDAP_ADMIN_PASSWORD**: Mật khẩu tài khoản quản trị OpenLdap **LDAP_CONFIG_PASSWORD**: Mật khẩu tài khoản quản trị cấu hình OpenLdap - Build ftpserver docker image và tạo container ```bash= docker-compose up -d ``` - Kiểm tra container ```bash= docker ps -a ``` #### d. Cài đặt phần mềm xác thực người dùng WSO2IS - Cài đặt database lưu trữ xác thực người dùng + Di chuyển đến thư mục cài đặt postgis ```bash= cd postgis ``` + Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **POSTGRES_PASSWORD**: Mật khẩu tài khoản quản trị postgres của postgreSQL **PG_PORT**: Cổng kết nối đến database - thay đổi khi bị trùng (Mặc định: 5432) + Build postgis docker image và tạo container ```bash= docker-compose up -d ``` + Kiểm tra container ```bash= docker ps -a ``` - Cài đặt phần mềm xác thực người dùng wso2is + Di chuyển đến thư mục cài đặt wso2 ```bash= cd wso2/wso2is ``` + Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env ``` + Build wso2is docker image và tạo container nhưng không start: ```bash= docker-compose up -d --no-start ``` + Kiểm tra container ```bash= docker ps -a ``` - Restore database wso2is + Di chuyển đến thư mục cài đặt wso2 ```bash= cd wso2/wso2is ``` + Mở file config-wso2is.sh và cập nhật thông tin cần thiết ```bash vi config-wso2is.sh ``` > **HOSTNAME_SSO**: Tên miền hệ thống SSO **URL_SSO**: Đường dẫn đến hệ thống SSO **POSTGRESQL_PORT**: Cổng kết nối đến database postgreSQL chứa dữ liệu xác thực **POSTGRESQL_DBNAME**: Tên database kết nối cho hệ thống xác thực **POSTGRESQL_PASS**: Mật khẩu kết nối đến database chứa dữ liệu xác thực + Copy file database backup đến docker postgis ```bash= cp dbbackups/wso2is.dump.tar.gz /var/lib/docker/volumes/niler_postgis_11-2.5-alpine_backup/_data/ ``` + Chạy script config hệ thống xác thực ```bash= chmod +x *.sh ./config-wso2is.sh ``` + Chấp nhận restore database wso2is > Chú ý: Nhập đường dẫn đến file database backup nếu được yêu cầu. - Khởi động hệ thống xác thực: ```bash= docker start <Container WSO2IS> ``` - Kiểm tra: ```bash= docker ps -a ``` #### e. Cài đặt phần mềm hỗ trợ tra cứu ElasticSearch - Di chuyển đến thư mục cài đặt elasticsearch ```bash= cd elasticsearch ``` - Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **ES_PORT**: Cổng truy cập hệ thống search engine. Mặc định là 9200 - Build elasticsearch docker image và tạo container ```bash= docker-compose up -d ``` - Kiểm tra container ```bash= docker ps -a ``` - Tạo index cho kho tư liệu: + Di chuyển đến thư mục settings ```bash= cd settings ``` + Mở file script và sửa nội dung ```bash= vi index.sh ``` > Sửa link truy cập đến search engine http://localhost:<ES_PORT>/\<INDEX NAME> + Cấp quyền thực thi script ```bash= chmod +x *.sh ``` + Thực thi script ```bash= sh -c './index.sh' ``` - Đồng bộ dữ liệu index từ mongodb sang elasticsearch + Cài đặt phần mềm đồng bộ dữ liệu monstache + Di chuyển đến thư mục monstache ```bash= cd monstache ``` + Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **MONSTACHE_WORKER**: Số lượng worker thực hiện đồng bộ dữ liệu. Mặc định là 3 + Build monstache docker image và tạo container ```bash= docker-compose up -d ``` + Kiểm tra container ```bash= docker ps -a ``` + Tạo file cấu hình đồng bộ: Copy file trong thư mục config đến volume data của monstache, mở file config và sửa thông tin cấu hình ```bash= cp -RL config/mongo-kho-es-*.toml /var/lib/docker/volumes/niler_monstache_data/_data/ cd /var/lib/docker/volumes/niler_monstache_data/_data vi mongo-kho-es-document.toml ``` > **mongo-url**: Thông tin kết nối đến database mongodb cần đồng bộ dữ liệu. URL có dạng ```mongo-url="mongodb://root:<Mật khẩu tài khoản root của mongodb>@<Địa chỉ IP đến mongodb>:<Cổng truy cập mongodb>/?connect=direct"``` > **index = "dinte_khotulieu_documents"**: index của kho tư liệu. Giá trị giống như trong file script đã thực hiện ở phần trên + Chạy đồng bộ dữ liệu sang es để index bởi việc khởi động lại monstache container ```bash= docker ps -a docker stop <Monstache container> docker start <Monstache container> ``` #### f. Cài đặt phần mềm kho tư liệu - Di chuyển đến thư mục cài đặt apps ```bash= cd apps ``` - #### Cài đặt base apps: + Di chuyển đến thư mục baseimage ```bash= cd baseimage ``` + Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **ENV_CONFIG_URL**: Link website đến hệ thống quản lý người dùng. + Build base apps docker image ```bash= docker-compose build --no-cache ``` - #### Cài đặt ứng dụng quản lý tài khoản người dùng: + Di chuyển đến thư mục usermanager ```bash= cd usermanager ``` + Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **ENV_CONFIG_URL**: Link website đến hệ thống quản lý người dùng. > **API_GIT_USERNAME**: Tài khoản truy cập đến sourve code trên gitlab. > **API_GIT_ACCESS_TOKEN**: Token ứng với tài khoản trên để truy cập đến source code trên gitlab. > **API_PORT**: Cổng truy cập cho api app. > **FRONTEND_PORT**: Cổng truy cập cho frontend app. + Build usermanager app docker image và tạo container ```bash= docker-compose up -d ``` - #### Cài đặt ứng dụng kho tư liệu: + Di chuyển đến thư mục khotulieu ```bash= cd khotulieu ``` + Copy file sample.env sang file .env và sửa thông tin cấu hình trong đó ```bash= cp sample.env .env vi .env ``` > **ENV_CONFIG_URL**: Link website đến hệ thống quản lý người dùng. > **API_GIT_USERNAME**: Tài khoản truy cập đến sourve code trên gitlab. > **API_GIT_ACCESS_TOKEN**: Token ứng với tài khoản trên để truy cập đến source code trên gitlab. > **API_PORT**: Cổng truy cập cho api app. > **FRONTEND_PORT**: Cổng truy cập cho frontend app. + Build khotulieu app docker image và tạo container ```bash= docker-compose up -d ``` - #### Cấu hình thông tin các ứng dụng: + Di chuyển đến thư mục apps ```bash= cd apps ``` + Mở file config-apps.sh và sửa thông tin cấu hình ```bash= vi config-apps.sh ``` > #### Cấu hình FTP server: > **FTP_USER**: Tài khoản FTP server dùng để upload file cho phần mềm kho tư liệu. **FTP_PASS**: Mật khẩu của tài khoản trên. **FTP_HOST**: Địa chỉ IP, hostname hoặc container name đến FTP server. **FTP_PORT**: Cổng truy cập đến FTP server. > #### Thong tin email cho TOTP SSO > **EMAIL_ADDRESS**: Đia chỉ email **EMAIL_DISPLAY_NAME**: Tên hiển thị trong email gửi đi. **EMAIL_PASS**: Mật khẩu của tài khoản email. **EMAIL_HOST**: Địa chỉ url của smtp server dùng để gửi email. Mặc định là gmail: smtp.gmail.com, **EMAIL_PORT**: Cổng của smtp server dùng để gửi email. Mặc định là gmail: 587 > **URL_SSO**: Địa chỉ url đầy đủ đến hệ thống xác thực người dùng. Chú ý có dấu / ở cuối. Có dạng http\[s\]://DOMAIN/ **ELASTIC_SEARCH_URL**: Địa chỉ url đầy đủ đến hệ thống tìm kiếm ElasticSearch. **URL_USERMANAGER_SITE**: Địa chỉ url đầy đủ đến hệ thống quản lý người dùng usermanager **URL_USERMANAGER_API**: Địa chỉ url đầy đủ đến ứng dụng API của hệ thống quản lý người dùng. > #### Thông tin AppConfig UserManager > **USERMANAGER_PassAdminWso2**: Mật khẩu tài khoản admin của hệ thống xác thực người dùng. **USERMANAGER_LDAP_DOMAINNAME**: Domain chứa người dùng trong LDAP **USERMANAGER_LDAP_HOST**: Địa chỉ IP, hostname hoặc container name đến OpenLDAP. **USERMANAGER_LDAP_PORT**: Cổng truy cập đến OpenLDAP. Mặc định là 389, thay đổi nếu bị trùng cổng. **USERMANAGER_LDAP_ADMIN**: Admin của OpenLdap, có dạng "cn=?, dc=?, dc=?" **USERMANAGER_LDAP_PASS**: Mật khẩu admin của OpenLdap. > Thông tin kết nối mongodb > **MONGODB_HOST**: Địa chỉ IP, hostname hoặc container name đến mongodb. **MONGODB_PORT**: Cổng truy cập đến mongodb. > Thông tin kết nối đến database của hệ thống quản lý người dùng usermanager > **MONGODB_USERMANAGER_DB**: Tên database. **MONGODB_USERMANAGER_USER**: Tài khoản kết nối đến database. **MONGODB_USERMANAGER_PASS**: Mật khẩu kết nối đến database. > Thông tin kết nối đến database của hệ thống kho tư liệu > **MONGODB_KHOTULIEU_DB**: Tên database. **MONGODB_KHOTULIEU_USER**: Tài khoản kết nối đến database. **MONGODB_KHOTULIEU_PASS**: Mật khẩu kết nối đến database. + Cấp quyền và chạy script để cấu hình apps ```bash= chmod \+x *.sh sh -c './config-apps.sh' ``` - Sau khi cấu hình apps xong thì kiểm tra lại container apps đã chạy.