Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Install Moodle On Ubuntu with Nginx/PHP-fpm

From MoodleDocs
Revision as of 02:25, 11 February 2011 by jerome mouneyrac (talk | contribs) (New page: {{stub}}This is a short tutorial to install Nginx/PHP-fpm on the [http://releases.ubuntu.com/ latest Ubuntu LTS]. It is important to take note that Moodle is heavily tested on Apache2 envi...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This is a short tutorial to install Nginx/PHP-fpm on the latest Ubuntu LTS. It is important to take note that Moodle is heavily tested on Apache2 environment, not on Nginx environment.

Nginx

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:nginx/stable

sudo apt-get update

sudo apt-get install nginx

sudo mkdir -p /home/nginx/localhost/{public,private,log,backup}

sudo vim /etc/nginx/sites-available/default server {

       root /home/nginx/localhost/public;
       index index.html index.htm index.php;
       server_name yourdomainname.com;
       location / {
               # First attempt to serve request as file, then
               # as directory, then fall back to index.html
               try_files $uri $uri/ /index.html;
       }
       location ~ \.php$ {
               fastcgi_pass 127.0.0.1:9000;
               fastcgi_index index.php;
               include fastcgi_params;
       }

}

Postgres 9.0.3

sudo apt-get install autoconf2.13 libssl-dev libcurl4-gnutls-dev libjpeg62-dev libpng12-dev libmysql++-dev libfreetype6-dev libt1-dev libc-client-dev libevent-dev libxml2-dev libtool libmcrypt-dev
Note: require for compiling PHP too.

cd /usr/local/src

sudo apt-get install build-essential libreadline6-dev zlib1g-dev

wget http://wwwmaster.postgresql.org/redir/333/h/source/v9.0.3/postgresql-9.0.3.tar.gz

tar zxvf postgresql-9.0.3.tar.gz

cd postgresql-9.0.3

./configure

make

sudo make install

sudo vim /etc/profile Add to the end of /etc/profile: export PATH="/usr/local/pgsql/bin:${PATH}"

source /etc/profile

sudo adduser postgres

sudo mkdir /usr/local/pgsql/data

sudo chown postgres /usr/local/pgsql/data

sudo su postgres

/usr/local/pgsql/bin/initdb-E UTF8 -D /usr/local/pgsql/data

/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data

exit

psql -U postgres

\password

createdb -E UTF8 -O postgres -T template0 -U postgres moodle

\q

PHP 5.3.3

Note: if you use postgres to not take PHP 5.3.5, pg_set_client_encoding() will crash with a http 500 error.

sudo apt-get install libltdl-dev

cd /usr/local/src

sudo wget -O php-5.3.3.tar.gz http://us.php.net/get/php-5.3.3.tar.gz/from/us.php.net/mirror/

tar zxvf php-5.3.3.tar.gz

cd php-5.3.3

./configure --enable-fpm --with-gd --with-mcrypt --enable-mbstring --with-openssl --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --with-libxml-dir=/usr/lib --with-curl --enable-zip --enable-sockets --with-zlib --enable-exif --enable-ftp --with-iconv --with-gettext --enable-gd-native-ttf --with-t1lib=/usr --with-freetype-dir=/usr --prefix=/usr/local/php --with-fpm-user=www-data --with-fpm-group=www-data --with-pgsql=/usr/local/pgsql --enable-tokenizer --with-xmlrpc --enable-soap --enable-ctype

Note: this is to support postgres. TODO: intl extension is not enabled. If you not how to do it edit this document ;)

sudo make

sudo make install

sudo cp php.ini-production /usr/local/php/lib/php.ini

sudo chmod 644 /usr/local/php/lib/php.ini

sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

sudo chmod 755 /etc/init.d/php-fpm

sudo update-rc.d -f php-fpm defaults

sudo touch /var/run/php-fpm.pid

sudo vim /etc/init.d/php-fpm change location of pid (remove ${prefix}) to: php_fpm_PID=/var/run/php-fpm.pid

sudo vim /usr/local/php/etc/php-fpm.conf Changes these values


pid = /var/run/php-fpm.pid error_log = /var/log/php-fpm.log


Uncomment the lines for:


pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35

sudo service php-fpm start

sudo /etc/init.d/nginx restart

vim /home/nginx/localhost/public/index.php Enter: <?php phpinfo(); ?>

Check it is available.

Install APC

With APC, Moodle will be a lot faster.

sudo /usr/local/php/bin/pecl config-set php_ini /usr/local/php/lib/php.ini

sudo /usr/local/php/bin/pecl install apc

sudo vim /usr/local/php/lib/php.ini add (if not already existing): extension=apc.so