Dokuwiki is a good small platform for content management which achieves great performances under lighttpd. On a jailbroken iDevice, we install lighttpd and dokuwiki and tweak them to make them work as fast as possible.
First, you need to install lighttpd from cydia. After that, create the file /etc/lighttpd.conf
with the following contents:
server.document-root = "/var/www/" index-file.names = ( "index.php" ) server.max-keep-alive-requests = 2 server.max-keep-alive-idle = 2 server.stat-cache-engine = "simple" server.network-backend = "writev" server.use-noatime = "enable" server.max-stat-threads = 2 server.max-read-threads = 3 server.modules = ( "mod_fastcgi", "mod_rewrite", ) fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/bin/php-cgi", "min-procs" => 1, "max-procs" => 2, "max-load-per-proc" => 4, "idle-timeout" => 25, # Fix PATH_INFO for PHP scripts that rely on it (like Wordpress). "broken-scriptfilename" => "enable", "allow-x-send-file" => "enable" # Enables x-sendfile ) ) ) # rewrites for dokuwiki $HTTP["url"] =~ "^" { index-file.names = ("doku.php") } url.rewrite = ( "^/lib/.*$" => "$0", "^/_media/(.*)?\?(.*)$" => "/lib/exe/fetch.php?media=$1&$2", "^/_media/(.*)$" => "/lib/exe/fetch.php?media=$1", "^/_detail/(.*)?\?(.*)$" => "/lib/exe/detail.php?media=$1&$2", "^/_detail/(.*)?$" => "/lib/exe/detail.php?media=$1", "^/_export/([^/]+)/(.*)\?(.*)$" => "/doku.php?do=export_$1&id=$2&$3", "^/_export/([^/]+)/(.*)" => "/doku.php?do=export_$1&id=$2", "^/doku.php.*" => "$0", "^/feed.php.*" => "$0", "^/(.*)\?(.*)" => "/doku.php?id=$1&$2", "^/(.*)" => "/doku.php?id=$1" ) mimetype.assign = ( ".pdf" => "application/pdf", ".sig" => "application/pgp-signature", ".spl" => "application/futuresplash", ".class" => "application/octet-stream", ".ps" => "application/postscript", ".torrent" => "application/x-bittorrent", ".dvi" => "application/x-dvi", ".gz" => "application/x-gzip", ".pac" => "application/x-ns-proxy-autoconfig", ".swf" => "application/x-shockwave-flash", ".tar.gz" => "application/x-tgz", ".tgz" => "application/x-tgz", ".tar" => "application/x-tar", ".zip" => "application/zip", ".mp3" => "audio/mpeg", ".m3u" => "audio/x-mpegurl", ".wma" => "audio/x-ms-wma", ".wax" => "audio/x-ms-wax", ".ogg" => "application/ogg", ".wav" => "audio/x-wav", ".gif" => "image/gif", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".png" => "image/png", ".xbm" => "image/x-xbitmap", ".xpm" => "image/x-xpixmap", ".xwd" => "image/x-xwindowdump", ".css" => "text/css", ".html" => "text/html", ".htm" => "text/html", ".js" => "text/javascript", ".asc" => "text/plain", ".c" => "text/plain", ".cpp" => "text/plain", ".log" => "text/plain", ".conf" => "text/plain", ".text" => "text/plain", ".txt" => "text/plain", ".dtd" => "text/xml", ".xml" => "text/xml", ".mpeg" => "video/mpeg", ".mpg" => "video/mpeg", ".mov" => "video/quicktime", ".qt" => "video/quicktime", ".avi" => "video/x-msvideo", ".asf" => "video/x-ms-asf", ".asx" => "video/x-ms-asf", ".wmv" => "video/x-ms-wmv", ".bz2" => "application/x-bzip", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar" )
In this case, we will be running dokuwiki with the document root at /var/www
under no subdirectory. That is, you would access your wiki using:
http://IDEVICE_IP/
and the start page should show up.
Next, install PHP from Cydia and create the file /usr/lib/php.ini
(not the standard /etc/php.ini
) with the following configuration settings:
memory_limit = 16M asp_tags = Off register_argc_argv = Off register_globals = Off expose_php = Off register_long_arrays = Off always_populate_raw_post_data = Off realpath_cache_size = 16K magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off zlib.output_compression = On zlib.output_compression_level = 6
which are more or less optimizations meant to turn off unnecessary options as well as enabling compression.
Next, install the ImageMagick package from Cydia. We will use ImageMagick because libgd is unavailable under the iOS PHP compiled by saurik.
Whether you want to transfer over a wiki to your iDevice or are setting a new one up, the following configuration settings are specific for running dokuwiki on your iDevice:
$conf['im_convert'] = '/usr/bin/convert'; // uses imagemagick instead of libgd $conf['userewrite'] = '1'; // lets lighttpd handle the rewrites, more elegant than dokuwiki rewrites $conf['compression'] = 'bz2'; // uses bz2 compression $conf['xsendfile'] = '1'; // uses lighttpd <= 1.4 x-sendfile
To start lighttpd, you can ssh to the iDevice and issue the following command:
lighttpd-angel -f /etc/lighttpd.conf
which will load the /etc/lighttpd.conf
configuration file from the previous section.
Alternatively, you can create a plist
which will launch the lighttpd daemon on boot. In order to do that create the file /Library/LaunchDaemons/net.lighttpd.plist
with the following contents:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>net.lighttpd</string> <key>ProgramArguments</key> <array> <string>/usr/sbin/lighttpd</string> <string>-D</string> <string>-f</string> <string>/etc/lighttpd.conf</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
and load the plist
with:
launchctl load -w /Library/LaunchDaemons/net.lighttpd.plist
A nice additional feature would be to install the dokuwiki sync plugin in order to sync with a wiki on your web-server. Briefly, you have to install the dokuwiki sync plugin through the plugin-manager and then configure both wikis to accept XMLRPC requests. You can do so by going to Admin
and enabling the XMLRPC option and specifying a user that is allowed to sync the wikis.