From e9cc87f5b9381d63bfc498151b7b508084451b22 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Tue, 24 Sep 2013 12:15:12 +0200 Subject: [PATCH] Updated some of the INSTALL documentation Also we now recommend the mysqlnd driver, instead of 'mysql', so no need to mention deprecation in daemon.php comments. --- INSTALL | 97 +++++++++++++++++++++++++++----------------------- lib/daemon.php | 5 ++- 2 files changed, 54 insertions(+), 48 deletions(-) diff --git a/INSTALL b/INSTALL index fdff32580d..0bfb277846 100644 --- a/INSTALL +++ b/INSTALL @@ -4,44 +4,50 @@ Prerequisites The following software packages are *required* for this software to run correctly. -- PHP 5.3+. Newer versions may complain on some coding standards, but - glitches are intended to be fix asap. -- MySQL 5.x. The StatusNet database is stored, by default, in a MySQL - server. It has been primarily tested on 5.x servers, although it may - be possible to install on earlier (or later!) versions. The server - *must* support the MyISAM storage engine -- the default for most - MySQL servers -- *and* the InnoDB storage engine. -- A Web server. Preferably, you should have Apache 2.2.x with the - mod_rewrite extension installed and enabled. +- PHP 5.3+ For newer versions, some functions that are used may be + disabled by default, such as the pcntl_* family. See the + section on 'Queues and daemons' for more information. +- MariaDB 5.x GNU Social uses, by default, a MariaDB server for data + storage. Versions 5.x and 10.x have both reportedly + worked well. It is also possible to run MySQL 5.x. +- Web server Apache, lighttpd and nginx will all work. CGI mode is + recommended and also some variant of 'suexec' (or a + proper setup php-fpm pool) + NOTE: mod_rewrite or its equivalent is extremely useful. -Your PHP installation must include the following PHP extensions: +Your PHP installation must include the following PHP extensions for a +functional setup of GNU Social: -- Curl. This is for fetching files by HTTP. -- XMLWriter. This is for formatting XML and HTML output. -- MySQL. For accessing the database. -- GD. For scaling down avatar images. -- mbstring. For handling Unicode (UTF-8) encoded strings. +- Curl Fetching files by HTTP. +- XMLWriter For formatting XML and HTML output. +- mysqlnd The native driver for PHP5 MySQL/MariaDB connections. +- GD Image manipulation (scaling). +- mbstring For handling Unicode (UTF-8) encoded strings. +- bcmath or gmp For Salmon signatures (part of OStatus) + +Better performance +------------------ For some functionality, you will also need the following extensions: -- Memcache. A client for the memcached server, which caches database - information in volatile memory. This is important for adequate - performance on high-traffic sites. You will also need a memcached - server to store the data in. -- Mailparse. Efficient parsing of email requires this extension. - Submission by email or SMS-over-email uses this extension. -- Sphinx Search. A client for the sphinx server, an alternative - to MySQL or Postgresql fulltext search. You will also need a - Sphinx server to serve the search queries. -- bcmath or gmp. For Salmon signatures (part of OStatus). Needed - if you have OStatus configured. -- gettext. For multiple languages. Default on many PHP installs; - will be emulated if not present. +- memcache A client for the memcached server, which caches database + information in volatile memory. This is important for + adequate performance on high-traffic sites. You will + also need a memcached server to store the data in. +- mailparse Efficient parsing of email requires this extension. + Submission by email or SMS-over-email uses this. +- sphinx A client for the sphinx server, an alternative to MySQL + or Postgresql fulltext search. You will also need a + Sphinx server to serve the search queries. +- gettext For multiple languages. Default on many PHP installs; + will be emulated if not present. -You will almost definitely get 2-3 times better performance from your -site if you install a PHP bytecode cache/accelerator. Some well-known -examples are: eaccelerator, Turck mmcache, xcache, apc. Zend Optimizer -is a proprietary accelerator installed on some hosting sites. +You may also experience better performance from your site if you install +a PHP bytecode cache/accelerator. Currently the recommended cache module +is 'xcache', which after installation (php5-xcache) can be enabled in +your site's config.php with: + + addPlugin('XCache'); External libraries ------------------ @@ -387,6 +393,10 @@ server is probably a good idea for high-volume sites. * pcntl_fork, pcntl_wait, pcntl_wifexited, pcntl_wexitstatus, pcntl_wifsignaled, pcntl_wtermsig + Other recommended settings for optimal performance are: + * mysqli.allow_persistent = On + * mysqli.reconnect = On + 2. If you're using a separate server for queues, install StatusNet somewhere on the server. You don't need to worry about the .htaccess file, but make sure that your config.php file is close @@ -408,30 +418,27 @@ This will run the queue handlers: * queuedaemon.php - polls for queued items for inbox processing and pushing out to OStatus, SMS, XMPP, etc. -* xmppdaemon.php - listens for new XMPP messages from users and stores - them as notices in the database; also pulls queued XMPP output from - queuedaemon.php to push out to clients. +* imdaemon.php - if an IM plugin is enabled (like XMPP) +* other daemons that you may have enabled -These two daemons will automatically restart in most cases of failure +These daemons will automatically restart in most cases of failure including memory leaks (if a memory_limit is set), but may still die or behave oddly if they lose connections to the XMPP or queue servers. -Additional daemons may be also started by this script for certain -plugins, such as the Twitter bridge. - It may be a good idea to use a daemon-monitoring service, like 'monit', to check their status and keep them running. All the daemons write their process IDs (pids) to /var/run/ by default. This can be useful for starting, stopping, and monitoring the -daemons. +daemons. If you are running multiple sites on the same machine, it will +be necessary to avoid collisions of these PID files by setting a site- +specific directory in config.php: -Since version 0.8.0, it's now possible to use a STOMP server instead of -our kind of hacky home-grown DB-based queue solution. This is strongly -recommended for best response time, especially when using XMPP. + $config['daemon']['piddir'] = __DIR__ . '/../run/'; -See the "queues" config section below for how to configure to use STOMP. -As of this writing, the software has been tested with ActiveMQ 5.3. +It is also possible to use a STOMP server instead of our kind of hacky +home-grown DB-based queue solution. This is strongly recommended for +best response time, especially when using XMPP. Themes ------ diff --git a/lib/daemon.php b/lib/daemon.php index c09531c9d5..8873163a95 100644 --- a/lib/daemon.php +++ b/lib/daemon.php @@ -48,12 +48,11 @@ class Daemon function background() { - /* Starting PHP 5.4 (dotdeb), maybe earlier for some version/distrib + /* + * This prefers to Starting PHP 5.4 (dotdeb), maybe earlier for some version/distrib * seems MySQL connection using mysqli driver get lost when fork. * Need to unset it so that child process recreate it. * - * Not needed if using mysql driver (but it's deprecated starting PHP 5.5) - * * @todo FIXME cleaner way to do it ? */ global $_DB_DATAOBJECT;