MediaWiki:Installasi on Ubuntu 20.04 (Nginx): Difference between revisions
Created page with "MediaWiki is a wiki application written in PHP that the Wikimedia Foundation developed to run several of their projects. The encyclopedia Wikipedia is the most popular of thes..." |
No edit summary |
||
| Line 1: | Line 1: | ||
MediaWiki | ==Step 1: Downloading MediaWiki== | ||
*Download the latest stable version of MediaWiki: | |||
wget https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz | |||
*Extract the archive to /var/www/. | |||
sudo mkdir -p /var/www/ | |||
sudo tar xvf mediawiki-1.36.2.tar.gz -C /var/www/ | |||
*Rename the directory. | |||
sudo mv /var/www/mediawiki-1.36.2 /var/www/nama_situs | |||
Then we need to install some PHP extensions required by MediaWiki. | |||
sudo apt install php7.4-mbstring php7.4-xml php7.4-fpm php7.4-json php7.4-mysql php7.4-curl php7.4-intl php7.4-gd php7.4-mbstring texlive imagemagick | |||
If you use Apache web server, then you need to restart Apache. | |||
sudo systemctl restart apache2 | |||
Next, we need to install external dependencies via Composer (a PHP dependency manager). | |||
sudo apt install composer | |||
cd /var/www/mediawiki/ | |||
sudo composer install --no-dev | |||
Note that MediaWiki currently doesn’t support PHP8.0. If you have installed PHP8.0 on your Ubuntu server, then you should run sudo update-alternatives --config php command to set PHP7.4 as the default version. | |||
Once all dependencies are installed, run the following command to set web server user (www-data) as the owner of this directory. | |||
sudo chown www-data:www-data /var/www/mediawiki/ -R | |||
Step 2: Creating a Database | |||
Log into MariaDB server with the command below. | |||
sudo mysql -u root | |||
Create a database for MediaWiki. This tutorial name the database mediawiki, but you can use whatever name you like. | |||
CREATE DATABASE mediawiki; | |||
Then run the following command at MariaDB prompt to create a database user and grant privileges to this user. Replace mediawiki, wikiuser and password with your preferred database name, database username and user password respectively. | |||
* | GRANT ALL PRIVILEGES ON mediawiki.* TO 'wikiuser'@'localhost' IDENTIFIED BY 'password'; | ||
Next, flush MariaDB privileges and exit. | |||
flush privileges; | |||
*[ | |||
exit; | |||
Step 3: Create Apache Virtual Host or Nginx Config File for MediaWiki | |||
Apache | |||
If you use Apache web server, create a virtual host for MediaWiki. | |||
sudo nano /etc/apache2/sites-available/mediawiki.conf | |||
Copy and paste the following text into the file. Replace wiki.your-domain.com with your actual domain name. Don’t forget to create DNS A record for this domain name. | |||
<VirtualHost *:80> | |||
ServerAdmin admin@your-domain.com | |||
DocumentRoot /var/www//mediawiki/ | |||
ServerName wiki.your-domain.com | |||
<Directory /var/www/html/mediawiki/> | |||
Options FollowSymLinks | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
</Directory> | |||
ErrorLog /var/log/apache2/mediawiki_error | |||
CustomLog /var/log/apache2/mediawiki_access common | |||
</VirtualHost> | |||
Save and close the file. Then enable this virtual host. | |||
sudo a2ensite mediawiki.conf | |||
Reload Apache for the above changes to take effect. | |||
sudo systemctl reload apache2 | |||
Nginx | |||
If you use Nginx web server, create a server block file for MediaWiki under /etc/nginx/conf.d/ directory. | |||
sudo nano /etc/nginx/conf.d/mediawiki.conf | |||
Copy the following text and paste it into the file. Replace wiki.your-domain.com with your actual domain name. Don’t forget to create DNS A record for this domain name. | |||
server { | |||
listen 80; | |||
listen [::]:80; | |||
server_name wiki.your-domain.com; | |||
root /var/www/mediawiki; | |||
index index.php; | |||
error_log /var/log/nginx/mediawiki.error; | |||
access_log /var/log/nginx/mediawiki.access; | |||
location / { | |||
try_files $uri $uri/ /index.php; | |||
} | |||
location ~ /.well-known { | |||
allow all; | |||
} | |||
location ~ /\.ht { | |||
deny all; | |||
} | |||
location ~ \.php$ { | |||
fastcgi_pass unix:/run/php/php7.4-fpm.sock; | |||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |||
include fastcgi_params; | |||
include snippets/fastcgi-php.conf; | |||
} | |||
} | |||
Save and close the file. Then test Nginx configuration. | |||
sudo nginx -t | |||
If the test is successful, reload Nginx web server. | |||
sudo systemctl reload nginx | |||
Step 4: Enabling HTTPS | |||
To encrypt the HTTP traffic, we can enable HTTPS by installing a free TLS certificate issued from Let’s Encrypt. Run the following command to install Let’s Encrypt client (certbot) on Ubuntu 20.04 server. | |||
sudo apt install certbot | |||
If you use Apache, install the Certbot Apache plugin. | |||
sudo apt install python3-certbot-apache | |||
And run this command to obtain and install TLS certificate. | |||
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d wiki.your-domain.com | |||
If you use Nginx, then you also need to install the Certbot Nginx plugin. | |||
sudo apt install python3-certbot-nginx | |||
Next, run the following command to obtain and install TLS certificate. | |||
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d wiki.your-domain.com | |||
Where | |||
--nginx: Use the nginx plugin. | |||
--apache: Use the Apache plugin. | |||
--agree-tos: Agree to terms of service. | |||
--redirect: Force HTTPS by 301 redirect. | |||
--hsts: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping. | |||
--staple-ocsp: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS. | |||
The certificate should now be obtained and automatically installed. | |||