add relevant PPA in the source list.
edit like
as i am using ubuntu 12.04 (precise ) so add following
First, for good measure lets make sure our server is all up-to-date.
here are some articles online which recommend using lighttpd for its FastCGI interface, this is totally not needed. PHP has its own FastCGI interface which works perfectly well (thanks to Tomasz Sterna for a great article on FastCGI with Nginx)
At this point, we will be using a little bit of
Lets create the following file:
This file will have the following content:
As Tomasz Sterna mentions, you will need to fiddle with the
After installing Nginx, it will be automatically configured to start when we reboot our server (unlike the PHP FastCGI service we had to setup), so we are all set.
Now lets test PHP, we will create a generic
If you use your browser to go to
Find the following lines (scroll to line 47):
Web server to reconfigure automatically: <-- select none (because only apache2 and lighttpd are available as options)
Configure database for phpmyadmin with dbconfig-common? <-- No
You can now find phpMyAdmin in the /usr/share/phpmyadmin/ directory. Now we must configure our vhost so that nginx can find phpMyAdmin in that directory.
Open /etc/nginx/sites-available/
That's it! You can now go to
edit like
nano /etc/apt/sources.list
as i am using ubuntu 12.04 (precise ) so add following
deb http://ppa.launchpad.net/nginx/development/ubuntu precise main deb-src http://ppa.launchpad.net/nginx/development/ubuntu precise main
First, for good measure lets make sure our server is all up-to-date.
apt-get update
Installing MySQL
Then let’s begin by installing MySQL:apt-get
install
mysql-server mysql-client
after entering the above command you will also be prompted for a MySQL “root” user password…
Installing PHP
Next up, lets install PHP5 and a few common extensions (here is a list if you are in need of other extensions):As you may have noticed, we have installedapt-get
install
php5-cgi php5-cli php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl
php-cgi
, that is because we will be running a FastCGI interface.here are some articles online which recommend using lighttpd for its FastCGI interface, this is totally not needed. PHP has its own FastCGI interface which works perfectly well (thanks to Tomasz Sterna for a great article on FastCGI with Nginx)
At this point, we will be using a little bit of
vim
to do a bit of file editing, so here is a quick primer on using vim
.Lets create the following file:
vim /etc/init.d/php-fastcgi
This file will have the following content:
#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=500
PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0
start() {
echo -n "Starting PHP FastCGI: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
As Tomasz Sterna mentions, you will need to fiddle with the
PHP_FCGI_CHILDREN
and PHP_FCGI_MAX_REQUESTS
variables depending on your server’s amount of memory and compute power. I am running a baseline 256 MB / 10 GB Rackspace Cloud Server so I use the following settings which seem to work very well (as seen above):Moving on … after you’ve created and saved the file we will make it executable and then start up the FastCGI service with the following commands:PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=500
We will want the service to auto start when we reboot our server, so we also do the following:chmod
+x
/etc/init
.d
/php-fastcgi
/etc/init
.d
/php-fastcgi
start
update-rc.d php-fastcgi defaults
Installing Nginx
Installing Nginx is easy, use the following commands to install and then start up the Nginx server.apt-get
install
nginx
/etc/init
.d
/nginx
start
After installing Nginx, it will be automatically configured to start when we reboot our server (unlike the PHP FastCGI service we had to setup), so we are all set.
Testing Nginx and PHP
At this point we can see that Nginx is working by typing the server’s IP address into a web browser (http://[IP_ADDRESS]/
). You should get a “Welcome to nginx!” message.Now lets test PHP, we will create a generic
phpinfo.php
file with the following:echo
""
>
/var/www/nginx-default/phpinfo
.php
/var/www/nginx-default/
is the Nginx server default root directory…If you use your browser to go to
http://[IP_ADDRESS]/phpinfo.php
,you
will notice that it doesn’t work … before this will work, we have to
enable FastCGI in the Nginx config file. Open up the following file:in the server {vim
/etc/nginx/sites-available/default
change #root /usr/share/nginx/www;
to root /var/www;
Find the following lines (scroll to line 47):
and change them to (removing the#location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#includefastcgi_params;
#}
#
character from each line, changing line 50 and adding a space between include
and fastcgi_params
on line 51):Now lets restart Nginx so our config changes will take effect:location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/var/www/nginx-default/
$fastcgi_script_name;
include fastcgi_params;
}
Now use your web browser to go to/etc/init
.d
/nginx
restart
http://[IP_ADDRESS]/phpinfo.php
, you should see a PHP info page.Installing phpMyAdmin + phpMyAdmin Vhost Configuration
You will see the following questions:apt-get install phpmyadmin
Web server to reconfigure automatically: <-- select none (because only apache2 and lighttpd are available as options)
Configure database for phpmyadmin with dbconfig-common? <-- No
You can now find phpMyAdmin in the /usr/share/phpmyadmin/ directory. Now we must configure our vhost so that nginx can find phpMyAdmin in that directory.
Open /etc/nginx/sites-available/
nano /etc/nginx/sites-available/and add the following part to the server {} container:
Reload nginx:server { [...] location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } [...] }
/etc/init.d/nginx reload
That's it! You can now go to
http://127.0.0.1/phpmyadmin/some useful links for further help regarding LEMP (linux,enginx,mysql,php)
or http://localhost/phpmyadmin
- http://suckup.de/linux/ubuntu/nginx-php5-fpm-auf-debianubuntu/
- http://www.rackspace.com/knowledge_center/article/installing-nginx-and-php-fpm-running-on-unix-file-sockets
- http://www.howtoforge.com/running-phpmyadmin-on-nginx-lemp-on-debian-squeeze-ubuntu-11.04