Development:Install Moodle On Ubuntu with Nginx/PHP-fpm: Difference between revisions
(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...) |
No edit summary |
||
Line 1: | Line 1: | ||
{{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 environment, not on Nginx environment. | {{stub}}This is a short tutorial to install Moodle with Nginx/PHP-fpm/Postgres on the [http://releases.ubuntu.com/ latest Ubuntu LTS]. It is important to take note that Moodle is heavily tested on Apache2 environment, not on Nginx environment. | ||
== Nginx == | == Nginx == |
Revision as of 02:26, 11 February 2011
This is a short tutorial to install Moodle with Nginx/PHP-fpm/Postgres 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