---
# System prepended metadata

title: Hướng dẫn cài đặt hệ thống phần mềm Kho tư liệu trên Centos Linux
tags: [Hướng dẫn cài đặt]

---

# 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.