Lets install the requirements.
On CentOS, run
yum -y install libxml2-devel libcurl-devel libmcrypt-devel openssl-devel
yum -y install libjpeg-turbo-devel libpng-devel freetype-devel libtidy-devel
Before you can install, you need to check MySQL socket location. To do this, run following command in MySQL command prompt.
show variables like '%socket%;
Download and install PHP 7.1 from source
mkdir /usr/local/src
cd /usr/local/src
wget http://php.net/get/php-7.1.12.tar.gz/from/this/mirror -O php-7.1.12.tar.gz
tar xf php-7.1.12.tar.gz
cd php-7.1.12
make clean
./configure --prefix=/usr/serverok/php-7.1.12 \
--with-config-file-path=/usr/serverok/php-7.1.12/etc \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-pdo-mysql \
--with-mysqli \
--enable-cgi \
--with-zlib \
--with-gettext \
--enable-ftp \
--enable-calendar \
--enable-bcmath \
--enable-sockets \
--with-curl \
--with-gd \
--with-jpeg-dir=/usr/local \
--enable-mbstring \
--with-freetype-dir=/usr/local \
--with-mhash=/usr/local --enable-exif \
--with-mcrypt=/usr \
--with-tidy \
--with-openssl \
--enable-zip \
--enable-fpm
make && make install
Copy the configuration files
cp /usr/serverok/php-7.1.12/etc/php-fpm.conf.default /usr/serverok/php-7.1.12/etc/php-fpm.conf
cp /usr/serverok/php-7.1.12/etc/php-fpm.d/www.conf.default /usr/serverok/php-7.1.12/etc/php-fpm.d/www.conf
cp /usr/local/src/php-7.1.12/php.ini-development /usr/serverok/php-7.1.12/etc/php.ini
Now you will be able to start php-fpm by running
/usr/serverok/php-7.1.12/bin/php
By default php-fpm will run using tcp port 9000, it is better to change it to use unix socket, for this
vi /usr/serverok/php-7.1.12/etc/php-fpm.d/www.conf
Find
listen = 127.0.0.1:9000
Replace with
listen = /var/run/php-fpm/proxy.sock
php-fpm user
You need to configure the user account used to run php-fpm, if you don’t use proper account, you may get permission errors.
The account you use vary depending on OS, Web server. For example, nginx use account nginx. Apache on Ubuntu/Debian use www-data. Apache on CentOS use nobody.
Here is what i have on a server running Nginx web server
[root@vps154294 ~]# cat /usr/serverok/php-7.1.12/etc/php-fpm.d/www.conf | grep nginx
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
[root@vps154294 ~]#
Systemd Service
To easily manage php-fpm, lets create a php-fpm.service file.
Before we do this, edit
vi /usr/serverok/php-7.1.12/etc/php-fpm.conf
Find
;pid = run/php-fpm.pid
Add below
pid = /run/php-fpm/php-fpm.pid
Find
;error_log = log/php-fpm.log
Add below
error_log = /var/log/php-fpm/error.log
Save and exit.
Now lets create file /usr/lib/systemd/system/php-fpm.service
vi /usr/lib/systemd/system/php-fpm.service
Add following content
[Unit]
Description=PHP FastCGI process manager
After=syslog.target network.target
[Service]
PIDFile=/run/php-fpm/php-fpm.pid
ExecStartPre=/bin/mkdir --parents /run/php-fpm
ExecStart=/usr/serverok/php-7.1.12/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
Type=simple
[Install]
WantedBy=multi-user.target
Enable php-fpm with
systemctl enable php-fpm
Now you will be able to use systemctl to start/stop/restart php-fpm
systemctl start php-fpm
systemctl stop php-fpm
systemctl restart php-fpm