Jump to content
Toggle sidebar
UNITApedia
Search
English
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Talk
Contributions
Navigation
Main Page
User Guide
Documentation
Viewpoints
Structural
Strategic
Beneficiary
Semantic
Infrastructure
Data
Beneficiaries
UNITA Participants
GEMINAE
Collectives
Agile Management Guide
Quality Management Process
Tools
What links here
Related changes
Special pages
Page information
Page values
In other languages
Editing
Documentation
(section)
Page
Discussion
English
Read
Edit
Edit source
View history
More
Read
Edit
Edit source
View history
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
= Implementation Plan = == Development Environment == The system is built on a modular, containerized infrastructure leveraging the following components: * '''Operating Environment''': Linux-based servers with Docker for containerization and orchestration. * '''Programming Environment''': MediaWiki and [https://unitapedia.univ-unita.eu/strapi/ Strapi] as primary application layers running on Node.js and PHP, respectively. * '''Database''': [https://unitapedia.univ-unita.eu/pga/ PostgreSQL] for structured data and analytics. * '''ETL Pipeline''': Managed by [https://unitapedia.univ-unita.eu/hop/ Apache HOP], which integrates external data sources like [https://unitapedia.univ-unita.eu/minio/ MinIO] into [https://unitapedia.univ-unita.eu/pga/ PostgreSQL]. * '''Reverse Proxy''': Nginx-proxy handles HTTPS, URL routing, and performance optimization. * '''Semantic Data Tools''': [https://unitapedia.univ-unita.eu/index.php?title=Extension:Semantic_MediaWiki Semantic MediaWiki] and ontology-driven extensions to enable inferencing and semantic data handling. * '''Development Tools''': Node.js, Yarn, and Alpine Linux for lightweight builds and dependency management. == Steps to Implement == * '''Docker Setup''': <ol> <li>Configure <code>docker-compose.yml</code> to define containers for MediaWiki, [https://unitapedia.univ-unita.eu/strapi/ Strapi], [https://unitapedia.univ-unita.eu/pga/ PostgreSQL], [https://unitapedia.univ-unita.eu/hop/ Apache HOP], [https://unitapedia.univ-unita.eu/minio/ MinIO], and Nginx-proxy.</li> <li>Use environment variables to manage sensitive data such as API keys and database credentials securely.</li> <li>Deploy the containers and verify that all services are correctly orchestrated and networked.</li> </ol> * '''MediaWiki Deployment''': <ol> <li>Install MediaWiki and configure <code>LocalSettings.php</code> with: <ul> <li>Connection details for [https://unitapedia.univ-unita.eu/pga/ PostgreSQL] (<code>host</code>, <code>database name</code>, <code>user credentials</code>).</li> <li>Enabled extensions such as [https://unitapedia.univ-unita.eu/index.php?title=Extension:Scribunto Scribunto], [https://unitapedia.univ-unita.eu/index.php?title=Extension:Semantic_MediaWiki Semantic MediaWiki], and [https://unitapedia.univ-unita.eu/index.php?title=Extension:External_Data External Data].</li> </ul> </li> <li>Implement namespaces for better content organization: <ul> <li><code>DOC</code> and <code>DOC_TALK</code> for project documentation.</li> <li><code>DATASRC</code> and <code>DATASRC_TALK</code> for data source references.</li> </ul> </li> <li>Configure file uploads, multi-language support, and permissions for user roles.</li> </ol> * '''Strapi Setup''': <ol> <li>Build and deploy Strapi using the provided <code>Dockerfile</code>.</li> <li>Configure Strapi with: <ul> <li>Database: [https://unitapedia.univ-unita.eu/pga/ PostgreSQL], with connection settings in <code>database.ts</code>.</li> <li>API Tokens: Secure endpoints with <code>API_TOKEN_SALT</code>.</li> <li>Roles and Permissions: Define roles and permissions for form data inputs and API access.</li> </ul> </li> <li>Validate form creation and ensure APIs are accessible for both MediaWiki and PostgreSQL.</li> </ol> * '''ETL Configuration''': <ol> <li>Configure [https://unitapedia.univ-unita.eu/hop/ Apache HOP] to set up ETL processes: <ul> <li>Extract raw data from sources like [https://unitapedia.univ-unita.eu/minio/ MinIO] or external file storage (Nextcloud).</li> <li>Transform the data into a standardized format suitable for PostgreSQL.</li> <li>Load the transformed data into the data warehouse.</li> </ul> </li> <li>Schedule regular ETL jobs and test data integrity after each run.</li> </ol> * '''Ontology Integration''': <ol> <li>Implement ontology-based semantic relations in MediaWiki using [https://unitapedia.univ-unita.eu/index.php?title=Extension:Semantic_MediaWiki Semantic MediaWiki].</li> <li>Ensure alignment of relational schema with ontology entities (e.g., WorkPackages, Tasks, Deliverables).</li> </ol> * '''Nginx Reverse Proxy Configuration''': <ol> <li>Configure Nginx-proxy to handle HTTPS, route traffic to containerized services: <ul> <li>[https://unitapedia.univ-unita.eu/strapi/ Strapi]</li> <li>[https://unitapedia.univ-unita.eu/minio/ MinIO]</li> <li>[https://unitapedia.univ-unita.eu/pga/ pgAdmin]</li> </ul> </li> <li>Enable SSL encryption with ACME Companion for automatic certificate management.</li> <li>Configure caching to improve response times for static resources.</li> </ol> * '''Integration Testing''': <ol> <li>Test inter-service communication (e.g., MediaWiki querying PostgreSQL, Strapi APIs).</li> <li>Perform load and stress testing to ensure performance under concurrent users and large datasets.</li> </ol> * '''Deployment''': <ol> <li>Deploy containers in a production environment with robust resource allocation.</li> <li>Secure connections using SSL certificates and Nginx-proxy configurations.</li> </ol> == MediaWiki Configuration == * '''Site Name''': UNITApedia. * '''Database''': ** Type: [https://unitapedia.univ-unita.eu/pga/ PostgreSQL]. ** Host: <code>datawarehouse</code> (Docker service). ** Name, user, password: Retrieved securely via environment variables. * '''Uploads and ImageMagick''': Enabled with a memory limit of 512 MB. * '''Languages''': Default set to English with UTF-8 support. * '''Permissions''': Restricts editing and account creation to authorized roles. * '''Extensions''': Loaded with configurations for semantic data handling and external data sources. * '''External Data Sources''': Configured to connect to the data warehouse for PostgreSQL queries. * '''Namespaces''': <code>DOC</code>, <code>DOC_TALK</code>, <code>DATASRC</code>, <code>DATASRC_TALK</code>. == Docker Deployment == The system uses a <code>docker-compose.yml</code> file with the following services: * [https://unitapedia.univ-unita.eu/pga/ PostgreSQL]: Stores structured data and analytics queries to both MediaWiki and Strapi. * MediaWiki: Hosts the wiki application. ** Volumes: <pre> LocalSettings.php (read-only) extensions (all installed extensions) images (upload directory) </pre> * Strapi: Deployed as a Node.js application using the provided <code>Dockerfile</code>. ** Configurations: * Uses PostgreSQL for data storage with secure SSL connections. * Exposes APIs for MediaWiki and external consumers. * Nginx-proxy: Handles HTTPS connections and reverse proxying. * Apache HOP: Processes raw data and integrates it into the warehouse. * MinIO: Stores raw data from UNITA Offices. == Maintenance == * '''Backup Strategies''': * Schedule cron jobs for daily backups of PostgreSQL and MediaWiki configurations. == Security == * Secure API endpoints with JWT tokens and SALT configurations. * Enforce HTTPS for all communications via Nginx-proxy. * Use environment variables for sensitive data like database credentials.
Summary:
Please note that all contributions to UNITApedia are considered to be released under the Creative Commons Zero (public domain) (see
UNITApedia:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Debug data: