User:CFeng (WMF)/MachineVisionSetup

Introduction edit

This page introduces you to install mediawiki-docker and set up the MachineVision extension.

Install Docker Compose edit

https://docs.docker.com/compose/install/


Clone mediawiki-docker-dev edit

Clone the code to the path you would like to work on, I would recommend to clone it into ~/Documents:

git clone git@github.com:addshore/mediawiki-docker-dev.git

And now, it is in the ~/Documents/mediawiki-docker-dev/

Please note this might be the offical one: https://www.mediawiki.org/wiki/MediaWiki-Docker

Clone MediaWiki and the skin edit

Since the repository above only contains settings and scripts about setting up MediaWiki on Docker, we will need to install the MediaWiki by ourselves.

Clone it into ~/Documents:

git clone git@github.com:wikimedia/mediawiki.git 

And now, it is in the ~/Documents/mediawiki/

Also, you will need a default skin for the entire MediaWiki page to the skins folder:

 cd ~/Documents/mediawiki/skins/</code>
 git clone git@github.com:wikimedia/mediawiki-skins-Vector.git Vector


Install Composer edit

Before running the MediaWiki installation scripts, you will need the Composer. Please download and install it on your machine.

https://getcomposer.org/download/


Run composer install for MediaWiki edit

Run the followingg script to install MediaWiki

 cd ~/Documents/mediawiki
 composer install


Create a LocalSettings.php for MediaWiki edit

The LocalSettings.php contains the information that MediaWiki needs and you will need to update this file every time you add extensions.

Since the MachineVision needs a lot of extensions and other settings, here is the copy of my LocalSettings.php and please copy that into the ~/Documents/mediawiki/

User:CFeng_(WMF)/MachineVisionSetup/LocalSettings.php


Install extensions for mediawiki edit

The LocalSettings.php has the following code:

 wfLoadExtension( 'CirrusSearch' );
 wfLoadExtension( 'Elastica' );
 wfLoadExtension( 'MachineVision' );
 wfLoadExtension( 'UniversalLanguageSelector' );
 wfLoadExtension( 'UploadWizard' );
 wfLoadExtension( 'WikibaseCirrusSearch' );
 wfLoadExtension( 'WikibaseMediaInfo' );
 wfLoadExtension( 'WikimediaEditorTasks' );

which you will need to install the extensions manually.

Please go to the https://www.mediawiki.org/wiki/Special:ExtensionDistributor to find the extensions and copy them to the ~/Documents/mediawiki/extensions/

or, you can run the following scripts:

 cd ~/Documents/mediawiki/extensions
 git clone git@github.com:wikimedia/mediawiki-extensions-CirrusSearch.git CirrusSearch
 git clone git@github.com:wikimedia/mediawiki-extensions-Elastica.git Elastica
 git clone git@github.com:wikimedia/mediawiki-extensions-MachineVision.git MachineVision
 git clone git@github.com:wikimedia/mediawiki-extensions-UniversalLanguageSelector.git UniversalLanguageSelector
 git clone git@github.com:wikimedia/mediawiki-extensions-Wikibase.git Wikibase
 git clone git@github.com:wikimedia/mediawiki-extensions-WikibaseCirrusSearch.git WikibaseCirrusSearch
 git clone git@github.com:wikimedia/mediawiki-extensions-WikibaseMediaInfo.git WikibaseMediaInfo
 git clone git@github.com:wikimedia/mediawiki-extensions-WikimediaEditorTasks.git WikimediaEditorTasks

Setting up Wikibase edit

Include the following into composer.local.json at the ~/Documents/mediawiki/:

{
  "extra": {
    "merge-plugin": {
      "include": [
        "extensions/Wikibase/composer.json"
      ]
    }
  }
}

and run the script to apply the changes at the ~/Documents/mediawiki/ installation

composer install


MediaWiki-Docker environment configuration edit

Copy the default.env in ~/Documents/mediawiki-docker-dev and into a new file called local.env.

Please make sure to update the mediawiki path of your installation.

DOCKER_MW_PATH=/Users/[USERNAME]/Documents/mediawiki

Some other settings in the local.env you might need to update, for example, the PHP version you've installed, or the port has already taken by other services.


Create and start the Docker container edit

cd ~/Documents/mediawiki-docker-dev
./create

The script waits up to 120 secs (4 x 30 seconds) for the database containers to initialize and respond.


Host name resolution configuration edit

Adding the following configuration to your /etc/hosts

127.0.0.1 default.web.mw.localhost # mediawiki-docker-dev
127.0.0.1 proxy.mw.localhost # mediawiki-docker-dev
127.0.0.1 phpmyadmin.mw.localhost # mediawiki-docker-dev
127.0.0.1 graphite.mw.localhost # mediawiki-docker-dev

Please note that you might need sudo when editing the hosts.

For more details of mediawiki-docker configuration, please visit: https://github.com/addshore/mediawiki-docker-dev/blob/master/README.md


MachineVision extension configuration edit

Run composer install in the MachineVision extension folder:

cd ~/Documents/mediawiki/extensions/MachineVision
composer install

and then go to the mediawiki-docker to ssh into the webserver container

cd ~/Documents/mediawiki-docker-dev
./bash
php maintenance/update.php


Import the MachineVision mapping data edit

Download the mapping data from Google: https://developers.google.com/freebase/#freebase-wikidata-mappings

Extract the downloaded file from its archive and place it somewhere that MediaWiki can access it. To import, run the following maintenance script:

php maintenance/populateFreebaseMapping.php --mappingFile [FILE_PATH].nt

This process may take some time to complete.


Apply and enable the Google Cloud Vision API edit

Go to https://console.cloud.google.com and create a project, for example, MachineVision and then click on APIs & Services on the left menu to enable the API we need.

In the API list, search Cloud vision and enable it.

To use the API, we will NEED to add credentials to the project. Once you have created a credential, you can choose the format of the credential to be JSON, and download it to your machine.

Not sure if this is associate with the service, but you might need to activate the free trial status with $300.00 credit on your account in order to activate the service successfully.

Since we have already set the credential path in LocalSettings.php, we will need to copy the credential to ~/Documents/mediawiki and rename the file as machine-vision-credentials.json to match the following setting:

 $wgMachineVisionGoogleCredentialsFileLocation = '/var/www/mediawiki/machine-vision-credentials.json';

For more details please vision here: https://github.com/wikimedia/mediawiki-extensions-MachineVision/blob/master/README.md

Upload images and test the API edit

Go to http://default.web.mw.localhost:8080/, create an account and log in. Once you have logged in, you can upload images to the MediaWiki.

After the images being uploaded, you will need to run a script to communicate with Cloud Vision API.

cd ~/Documents/mediawiki-docker-dev
./bash
php maintenance/runJobs.php

and, check the local ImageLabel API to see if you have done all the configurations right.

http://default.web.mw.localhost:8080/mediawiki/api.php?format=json&formatversion=2&errorformat=plaintext&action=query&generator=unreviewedimagelabels&guillimit=10&prop=imagelabels%7Cimageinfo&iiprop=timestamp%7Cuser%7Curl%7Cmime&iiurlwidth=320&uselang=en

If you see an empty response, please make sure you have set up the Cloud Vision API credential correctly.