Setting up a good performance PHP-Stack is not a trivial work. We will need to choose which software is necessary for the stack based on some specific needs. Today I will guide how to setup nginx php-fpm 5.6 mariadb on CentOS server.
Remove out-dated softwares
[bash]yum remove -y httpd
yum remove -y mysqld
yum remove -y php-common[/bash]
Setting up repos
For PHP5.6:
[bash]rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm[/bash]
Or we can add Epel repository (rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm) and install using remi and remi-php56 repos instead of the webtatic repo.
For Nginx (/etc/yum.repos.d/nginx.repo):
[bash][nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1[/bash]
For MariaDB (/etc/yum.repos.d/MariaDB.repo): go to MariaDB repositories to choose appropriate repo. For example, for MariaDB 5.5 on CentOS 6 32-bit:
[bash][mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1[/bash]
Install nginx, php-fpm 5.6, mariadb
[bash]yum install -y nginx
yum install -y php56w-fpm php56w-opcache php56w-mysqlnd php56w-mcrypt php56w-mbstring php56w-cli php56w-dom
yum install -y MariaDB-server MariaDB-client[/bash]
For installing using remi and remi-php56 repos, we will need to add repoforge repo (for libmcrypt) and install package without 56w (so it will be yum install -y php-fpm php-opcache php-mysqlnd php-mcrypt php-mbstring php-cli php-dom …) as above.
Post-Configuration
1. MariaDB
- Start the service:
[bash]service mysql start[/bash]
- Change root password:
[bash][root@web ~]# mysql -u root
MariaDB [(none)]> UPDATE `mysql`.`user` SET `Password` = PASSWORD(‘YOUR-NEW-PASSWORD’) WHERE `User` = ‘root’;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit[/bash] - If replication is needed, edit the /etc/my.cnf.d/server.cnf file. Parameter configuration is also needed to put here.
2. PHP-FPM
- Change loglevel to error in /etc/php-fpm.conf.
- Create the following folders for php-fpm to store session and also wsdlcache (can change in /etc/php-fpm.d/www.conf):
[bash]mkdir /var/lib/php/session
chown -R apache:apache /var/lib/php/session
mkdir /var/lib/php/wsdlcache
chown -R apache:apache /var/lib/php/wsdlcache[/bash] - Restart and enable service:
[bash]service php-fpm restart
chkconfig –add php-fpm
chkconfig –levels 235 php-fpm on[/bash]
3. Nginx
- Create a default configuration for php-fpm (/etc/nginx/php-fpm.conf):
[bash]location ~ \.php {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}[/bash] - Create a server config file in /etc/nginx/conf.d/your-website.conf and include the above config file. Sample configuration:
[bash]server {
listen 80;root /home/yourdomain/public;
index index.html index.htm index.php;server_name yourdomain.com www.yourdomain.com;
access_log off;
error_log /var/log/nginx/yourdomain.error.log error;charset utf-8;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|css|zip|tgz|gz|rar|bz2|exe|pdf|doc|xls|ppt|txt|odt|ods|odp|odf|tar|bmp|rtf|js|mp3|avi|mpeg|flv|html|htm|mp4|woff|ttf|eot)$ {
root /home/yourdomain/public;
expires max;
#try_files $uri @fallback;
}location / {
try_files \$uri \$uri/ /index.php?$query_string;
}location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }error_page 404 /index.php;
#include hhvm.conf; # The HHVM Magic Here
include php-fpm.conf;# Deny .htaccess file access
location ~ /\.ht {
deny all;
}
}[/bash] - Restart service:
[bash]service nginx restart
chkconfig –add nginx
chkconfig –levels 235 nginx on[/bash]
It’s all.
Troubleshooting
1. Mariadb-server is conflicted with mariadb-libs
In most case, the conflict will be with mariadb-libs. This package is required by postfix, so we can simply remove postfix and mariadb-libs before installing mariadb-server again.
4 thoughts on “Setup nginx, php-fpm 5.6, mariadb on CentOS”
Dear Admin,
This is Ravi Saive from TecMint.com, I request you to remove the articles that you’ve copied from our site, before we take any legal action.
Thanks
Ravi Saive
What do you mean to copy article please? Which part that you believe that it belongs to your copyright in the article? If you are mentioning about the external link to your http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/ in my article http://www.tienle.com/2014/09-26/setup-nginx-php-fpm-5-6-mariadb-centos.html, let me know and I will remove any link to your website and will link to another source. Otherwise, you are welcome to let me know more detail.
@admin,
that was a mistake by one of our editor, no issue there isn’t any copyright issue with your article, you are most welcome to place our links in your articles..
Thanks..
Thanks for your clarification