687
edits
Changes
Created page with "We'll install a mediawiki that uses sqlite. == Prerequisites == Make sure you have a server, a domain (we'll use <code>xw.is</code>) and TLS Certificates Primer|a TLS cert..."
We'll install a mediawiki that uses sqlite.
== Prerequisites ==
Make sure you have a server, a domain (we'll use <code>xw.is</code>) and [[TLS Certificates Primer|a TLS certificate for the domain]]. Make sure you have followed the [[FreeBSD Post Install Steps]].
== Install packages ==
pkg install -y nginx mediawiki127 git php56-pdo_sqlite php56-pecl-APCu php56-gd php56-openssl
sudo sysrc nginx_enable="YES"
sudo sysrc php_fpm_enable="yes"
=== Configure PHP ===
We'll configure PHP so that it uses a unix domain socket instead of TCP/IP. Edit <code>/usr/local/etc/php-fpm.conf</code> and change the listen directive:
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
Start PHP with
sudo service php-fpm start
=== Test nginx & TLS ===
Use this test nginx config:
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 443;
server_name xw.is;
ssl on;
ssl_certificate /tank/nginx/tls/xw.is.crt;
ssl_certificate_key /tank/nginx/tls/xw.is.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
}
}
Start nginx:
sudo service nginx start
Make sure everything works.
== Enable the wiki ==
One everything works, add this block to <code>nginx.conf</code>.
location /w {
root /tank/www;
index index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
and create this symlink:
ln -s /usr/local/www/mediawiki /tank/www/w
Now visit visit https://xw.is/w and complete the installer.
The installer will generate a <code>LocalSettings.php</code> file. Copy it to the server:
scp LocalSettings.php xw.is:/usr/local/www/mediawiki
== Enable short URLS ==
To enable short URLs, use this <code>nginx.conf</code> config:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443;
server_name xw.is;
ssl on;
ssl_certificate /tank/nginx/tls/xw.is.crt;
ssl_certificate_key /tank/nginx/tls/xw.is.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /tank/www;
index index.php;
location / {
rewrite ^/$ https://xw.is/wiki permanent;
}
location /w {
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location /w/images {
location ~ ^/w/images/thumb/(archive/)?[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ {
try_files $uri $uri/ @thumb;
}
}
location /w/images/deleted {
# Deny access to deleted images folder
deny all;
}
location /w/cache { deny all; }
location /w/languages { deny all; }
location /w/maintenance { deny all; }
location /w/serialized { deny all; }
location ~ /.(svn|git)(/|$) { deny all; }
location ~ /.ht { deny all; }
location /wiki {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/w/index.php;
fastcgi_pass unix:/var/run/php-fpm.sock;
}
location @thumb {
rewrite ^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2;
rewrite ^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2&archived=1;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/w/thumb.php;
fastcgi_pass unix:/var/run/php-fpm.sock;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
}
Then edit <code>LocalSettings.php</code> to enable short URLs:
$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
You are now done.
== Prerequisites ==
Make sure you have a server, a domain (we'll use <code>xw.is</code>) and [[TLS Certificates Primer|a TLS certificate for the domain]]. Make sure you have followed the [[FreeBSD Post Install Steps]].
== Install packages ==
pkg install -y nginx mediawiki127 git php56-pdo_sqlite php56-pecl-APCu php56-gd php56-openssl
sudo sysrc nginx_enable="YES"
sudo sysrc php_fpm_enable="yes"
=== Configure PHP ===
We'll configure PHP so that it uses a unix domain socket instead of TCP/IP. Edit <code>/usr/local/etc/php-fpm.conf</code> and change the listen directive:
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
Start PHP with
sudo service php-fpm start
=== Test nginx & TLS ===
Use this test nginx config:
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 443;
server_name xw.is;
ssl on;
ssl_certificate /tank/nginx/tls/xw.is.crt;
ssl_certificate_key /tank/nginx/tls/xw.is.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
}
}
Start nginx:
sudo service nginx start
Make sure everything works.
== Enable the wiki ==
One everything works, add this block to <code>nginx.conf</code>.
location /w {
root /tank/www;
index index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
and create this symlink:
ln -s /usr/local/www/mediawiki /tank/www/w
Now visit visit https://xw.is/w and complete the installer.
The installer will generate a <code>LocalSettings.php</code> file. Copy it to the server:
scp LocalSettings.php xw.is:/usr/local/www/mediawiki
== Enable short URLS ==
To enable short URLs, use this <code>nginx.conf</code> config:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443;
server_name xw.is;
ssl on;
ssl_certificate /tank/nginx/tls/xw.is.crt;
ssl_certificate_key /tank/nginx/tls/xw.is.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /tank/www;
index index.php;
location / {
rewrite ^/$ https://xw.is/wiki permanent;
}
location /w {
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location /w/images {
location ~ ^/w/images/thumb/(archive/)?[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ {
try_files $uri $uri/ @thumb;
}
}
location /w/images/deleted {
# Deny access to deleted images folder
deny all;
}
location /w/cache { deny all; }
location /w/languages { deny all; }
location /w/maintenance { deny all; }
location /w/serialized { deny all; }
location ~ /.(svn|git)(/|$) { deny all; }
location ~ /.ht { deny all; }
location /wiki {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/w/index.php;
fastcgi_pass unix:/var/run/php-fpm.sock;
}
location @thumb {
rewrite ^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2;
rewrite ^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2&archived=1;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/w/thumb.php;
fastcgi_pass unix:/var/run/php-fpm.sock;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
}
Then edit <code>LocalSettings.php</code> to enable short URLs:
$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;
You are now done.