Hi,
Anyone can share a working magento setup?
I’ve read that nginx outperforms apache but couldn’t find a clear
instructions how to setup on ubuntu:
nginx + config file
fcgi + spawn-fcgi + upstart script
php-fpm
Thanks
Hi,
Anyone can share a working magento setup?
I’ve read that nginx outperforms apache but couldn’t find a clear
instructions how to setup on ubuntu:
nginx + config file
fcgi + spawn-fcgi + upstart script
php-fpm
Thanks
Hey Pablo,
I’ve got instructions for CentOS - installation and configuration.
It’s late for me here and I just finished helping host a birthday
party, but I will post it for you tomorrow.
Raina
Thank you very much for the detailed instructions.
I’ll try it and report the results.
Is nginx going to be faster than apache on a dev server with ~2 users
or am I going to see a difference only when having large number of
concurrent users?
Hi Pablo,
Ok. Here are notes/commands that worked successfully for me when
installing PHP-FPM, Nginx and Magento on a Media Temple (ve) loaded
with CentOS. My notes are a little messy. Let me know if you get stuck
with anything, though if the process is significantly different for
Ubuntu I might not be able to help. I’ve also pasted my config files
below.
INSTALL DEPENDENCIES
yum install -y curl-devel gcc GeoIP* httpd-devel libevent
libevent-devel libjpeg-devel libmcrypt-devel libpng-devel
libtool-ltdl-devel libxml2 libxml2-devel mysql mysql-devel
mysql-server openssl-devel patch pcre-devel php-gd php-mcrypt
php-mysql php-pdo php-xml spawn-fcgi xmlrpc zlib-devel
yum install php* ???
DOWNLOAD OWN LIBEVENT RATHER THAN YUM
→ mkdir /opt/libevent
→ cd /opt/libevent
→ wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
→ tar xvf libevent…
PHP: COMPILE AND INSTALL FIRST
http://interfacelab.com/nginx-php-fpm-apc-awesome/
http://adityo.blog.binusian.org/?p=428
http://www.newmediaist.com/n/installing-nginx-mysql-php-fpm-xcache-centos-53-howto
./configure --enable-fpm --enable-inline-optimization --enable-pdo
–enable-soap --enable-sockets --enable-zip --with-curl --with-gd
–with-jpeg-dir --with-libdir=lib64 --with-mcrypt --with-mhash
–with-mysql --with-mysqli=mysqlnd --with-openssl --with-pear
–with-pdo-mysql=mysqlnd --with-zend-vm=GOTO --with-zlib
make
make test
make install
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
/usr/local/src/php-5.3.3/build/shtool install -c ext/phar/phar.phar
/usr/local/bin
ln -s -f /usr/local/bin/phar.phar /usr/local/bin/phar
Installing PDO headers: /usr/local/include/php/ext/pdo/
#strip /usr/local/bin/php-cgi
PHP: CONFIG
/usr/local/etc/php-fpm.conf
INSTALLING NGINX
wget http://sysoev.ru/nginx/nginx-0.7.67.tar.gz
http://wiki.nginx.org/NginxInstallOptions
./configure
–prefix=/
–sbin-path=/usr/sbin/nginx
–conf-path=/etc/nginx/nginx.conf
–error-log-path=/var/log/nginx/error.log
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–with-http_geoip_module
–without-http_autoindex_module
–with-http_stub_status_module
–user=nginx
–group=nginx
–with-http_ssl_module
–with-http_flv_module
–with-http_gzip_static_module
–http-log-path=/var/log/nginx/access.log
–http-client-body-temp-path=/var/tmp/nginx/client/
–http-proxy-temp-path=/var/tmp/nginx/proxy/
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
make && make install
NGINX SYMLINK (USUALLY CREATED AUTOMATICALLY ON INSTALL)
ln -s /usr/local/nginx/conf /etc/nginx
OR MOVE LOCATION
cd /usr/local/src/nginx…
cp -a nginx-0.7.67 …/nginx
#be sure to set the correct paths
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
TO START WEBSERVER
uncomment ‘nobody’ in /etc/nginx/nginx.conf
create init:
/etc/init.d/nginx
TODO
#integrate apc
http://www.chilipepperdesign.com/2009/12/18/configuring-and-compiling-nginx-and-php-fpm-on-ubuntu-for-magento-part-2
#get ssl working
#add these to server boot
/etc/init.d/php_cgi start
mysql
service mysqld start
review php and nginx configuration options
INSTALL MYSQL
5.0.77 Source distribution
http://forums.mysql.com/read.php?11,153632
chgrp -R mysql /var/lib/mysql
chmod -R 770 /var/lib/mysql
chkconfig mysqld on && service mysqld restart && chkconfig --list | grep
mysqld
service mysqld start
/usr/bin/mysqladmin -u root password ‘password’
TROUBLESHOOTING
one ve2, had to use 127.0.0.1 instead of localhost, had to skip base
url validation, and had to change root password as follows:
update user set Password=PASSWORD(‘password’) where user=‘user’;
or
set Password=PASSWORD(‘password’) where user=‘user’;
flush privileges;
exit;
INSTALL PEAR & APC
http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/
#didn’t work#
#yum install nfs-utils
#/sbin/service portmap start
#/sbin/service nfslock start
#/sbin/service nfs start
##mount nfs -t /dev/simfs -o remount,exec /tmp
##mount nfs -o remount,exec /tmp
##/dev/simfs on /tmp type simfs (rw,noexec)
##pecl install apc
http://www.php.net/manual/en/install.pecl.phpize.php
#WORKS
yum install autoconf
http://constantshift.com/installing-apc-for-php-5-3/
$ cd /usr/local/src
$ wget http://pecl.php.net/get/APC-3.1.3p1.tgz
$ tar xzvf APC-3.1.3p1.tgz
$ cd APC-3.1.3p1
$ phpize
$ ./configure --enable-apc --enable-mmap
$ make
$ make install
$ cp /usr/local/src/APC-3.1.3p1/modules/apc.so
/usr/local/lib/php/extensions/no-debug-non-zts-20090626/
extension = apc.so
apc.enabled=1
apc.shm_size=30
/etc/init.d/nginx restart && /etc/init.d/php-fpm restart
cp apc.php /var/www/html/
INSTALL FASTCGI
http://adityo.blog.binusian.org/?p=428
MAGENTO
use magento check file
raised php.ini memory/timeout
user nobody;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local]
“$request “’
'$status $body_bytes_sent “$http_referer” ’
'”$http_user_agent” “$http_x_forwarded_for”';
access_log /var/log/nginx/access.log main;
sendfile on;
map $scheme $fastcgi_https { ## Detect when HTTPS is used
default off;
https on;
}
client_body_timeout 5;
client_header_timeout 5;
keepalive_timeout 5 5;
send_timeout 5;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_static on;
gzip_buffers 16 8k;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_vary on;
gzip_types text/plain text/css application/x-javascript
text/xml application/xml application/xml+rss text/javascript;
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
}
server {
listen 80;
server_name domain.com;
root /var/www/html;
location / {
index index.html index.php; ## Allow a static html file to be
shown first
try_files $uri $uri/ @handler; ## If missing pass the URI to
Magento’s front handler
expires max; ## Assume all files are cachable
error_page 404 = @handler;
log_not_found off;
}
location ~ /(.*)/index\.php$ { ## strip index.php from product urls
if (!-e $request_filename) { rewrite ^(.*)/index\.php$ $1/
permanent; }
}
location /minify/ { ## Needed for Fooman Speedster
rewrite ^/minify/([0-9]+)(/.*\.(js|css))$
/lib/minify/m.php?f=$2&d=$1 last;
}
## These locations would be hidden by .htaccess normally
location /app/ { deny all; }
location /includes/ { deny all; }
location /lib/ { deny all; }
location /lib/minify/ { allow all; } ## Deny is applied
after rewrites so must specifically allow minify
location /media/downloadable/ { deny all; }
location /pkginfo/ { deny all; }
location /report/config.xml { deny all; }
location /var/ { deny all; }
location /var/export/ { ## Allow admins only to view export folder
auth_basic "Restricted"; ## Message shown in login
window
auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
}
location /. { ## Disable .htaccess and other hidden files
return 404;
}
location @handler { ## Magento uses a common front handler
rewrite / /index.php;
}
location ~ \.php/ { ## Forward paths like /js/index.php/x.js to
relevant handler
rewrite ^(.*.php)/ $1 last;
}
location ~ \.php$ { ## Execute PHP scripts
expires off; ## Do not cache dynamic content
fastcgi_param HTTPS $fastcgi_https;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param MAGE_RUN_CODE base;
fastcgi_param MAGE_RUN_TYPE website;
include fastcgi_params; ## See /etc/nginx/fastcgi_params
}
}
This is not necessarily the most optimal or logical configuration, but
it works for me. It could probably be simplified, though you’ll also
likely want to at least add a server configuration for SSL.
Hope that helps! Let me know how it goes for you.
Best,
Raina
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs