Run the following commands
git config --global user.email "info@phpcodez.com" git config --global user.name "PHPCodez"
Run the following commands
git config --global user.email "info@phpcodez.com" git config --global user.name "PHPCodez"
Looks like BerkeleyDB is not installed which is required to configured openLDAP.
Follow the below steps to install BerkeleyDB.
Downloading Berkeley DB
wget http://download.oracle.com/berkeley-db/db-5.2.28.tar.gz
Extracting files from the downloaded package:
tar zxvf db-5.2.28.tar.gz cd db-5.2.28/build_unix
Create installation path
mkdir /etc/berkeleydb
Configuring Berkeley DB
../dist/configure --prefix=/etc/berkeleydb
Compile and install the code
make make install
This article assume that Nginx is installed in your server and its up and running.Lest install NginX
Update the repository
yum update -y
Install the EPEL repository
yum install epel-release -y
Install Dependencies
yum install -y git gcc gcc-c++ libxml2-devel pkgconfig openssl-devel bzip2-devel curl-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel autoconf bison re2c libicu-devel libxslt-devel libxslt
Get The PHP Source
curl -O -L https://github.com/php/php-src/archive/php-7.1.18.tar.gz tar -xvf php-7.1.18.tar.gz cd php-src-php-7.1.18/
Compile Source Code ./buildconf --force ./configure --prefix=/etc/php --with-config-file-path=/etc/php/etc --with-config-file-scan-dir=/etc/php/etc/conf.d --enable-bcmath --with-bz2 --with-curl --enable-filter --enable-fpm --with-gd --enable-gd-native-ttf --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-intl --enable-mbstring --with-mcrypt --enable-mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --disable-phpdbg --disable-phpdbg-webhelper --enable-opcache --with-openssl --enable-simplexml --with-sqlite3 --enable-xmlreader --enable-xmlwriter --enable-zip --with-zlib --enable-soap --with-xsl make make install
Add PHP to $PATH
echo 'pathmunge /etc/php/bin' > /etc/profile.d/php.sh
Copy php.ini
cp php.ini-development /etc/php/lib/php.ini
Add module opcache
vi /etc/php/etc/conf.d/modules.ini and add 'zend_extension=opcache.so'
PHP FPM SET UP
mkdir /etc/php/etc/conf.d cp sapi/fpm/www.conf /etc/php/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm.conf /etc/php/etc/php-fpm.conf
Update PHP FPM configuration
vi /etc/php/etc/php-fpm.d/www.conf user = nobody group = nobody listen.owner = nginx listen.group = nginx listen = /var/run/php-fpm/php-fpm.sock
Create a symlink for php-fpm to the standard path
ln -s /etc/php/sbin/php-fpm /usr/sbin/php-fpm
Create a systemctl file add the following:
vi /usr/lib/systemd/system/php-fpm.service [Unit] Description=The PHP FastCGI Process Manager After=syslog.target network.target [Service] Type=simple PIDFile=/run/php-fpm/php-fpm.pid ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
Create a run directory for php-fpm:
mkdir /run/php-fpm
Start php-fpm and Restart NginX
systemctl start php-fpm service nginx restart
Create index.php
mv /etc/nginx/html/index.html /etc/nginx/html/index.php
Update nginx.con file with the followinf content
root /etc/nginx/html; index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Load URL
http://127.0.0.1/
Update the repository
yum update -y
Install the EPEL repository
yum install epel-release -y
Install dependencies from yum
yum install -y zlib zlib-devel pcre prce-devel openssl openssl-devel
Get the Nginx packages to install
cd /usr/src wget https://nginx.org/download/nginx-1.14.0.tar.gz tar xvf nginx-1.14.0.tar.gz cd nginx-1.14.0
Create user nginx
useradd -d /etc/nginx/ -s /sbin/nologin nginx
Configure
./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --without-http_scgi_module --without-http_uwsgi_module --with-http_realip_module
Compile and Install
make make install
Verify NginX is installed
nginx -v
Add systemd service file
vi /etc/systemd/system/nginx.service [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
Enable and start service
systemctl enable nginx systemctl start nginx
Check nginx is processing your request
On commandline
curl localhost
Browser
Make sure port 80 is enabled.
firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload
Findout the ip
ip addr
Load the site using the URL and it should display ‘Welcome to nginx!’ message.
http://127.0.0.1/
<?php use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $bootstrap = Bootstrap::create(BP, $params); $objectManager = $bootstrap->getObjectManager(); $state = $objectManager->get('Magento\Framework\App\State'); $state->setAreaCode('frontend'); $resource = $objectManager->get('Magento\Framework\App\ResourceConnection'); $connection = $resource->getConnection(); $sql = "Select * FROM customer_entity" ; $result = $connection->fetchAll($sql); print_r($result); ?>
Install required tools for compilation
In order to compile PHP from source you need to install few tools and libraries. First you need EPEL repository to be enabled. This repository contains more recent version of packages.
sudo yum install epel-release -y
Once you have it installed execute following command to install required packages
yum install autoconf libtool re2c bison libxml2-devel bzip2-devel libcurl-devel libpng-devel libicu-devel gcc-c++ libmcrypt-devel libwebp-devel libjpeg-devel openssl-devel libxslt-devel -y
Download and unpack PHP Source code
Next step is downloading PHP source code. Easiest option is to download it from GitHub PHP releases. Choose the version you would like to install. In my case it’s 7.2.3. Copy link to tar.gz archive and execute following commands:
curl -O -L https://github.com/php/php-src/archive/php-7.1.18.tar.gz tar -xvf php-7.1.18.tar.gz cd php-src-php-7.1.18/
It will download the archive from GitHub, unpack the sources and change working directory to unpacked sources.
Compile PHP
Now it’s time to compile PHP. First we need to build configure command. In order to do that execute following command:
./buildconf --force
Once configure command is created we can use it to configure PHP installation. This process will enable certain PHP extensions such as PDO, FPM, OPCache, GD library etc. If you need any libraries that are not provided here, you can execute ./configure –help option and check if there is something you need. Following command will install PHP with most common extensions:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-freetype-dir=/usr/include/freetype2 --disable-short-tags --enable-xml --enable-cli --with-openssl --with-pcre-regex --with-pcre-jit --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-exif --with-gd --enable-intl --with-mysqli --enable-pcntl --with-pdo-mysql --enable-soap --enable-sockets --with-xmlrpc --enable-zip --with-webp-dir --with-jpeg-dir --with-png-dir --enable-json --enable-hash --enable-mbstring --with-mcrypt --enable-libxml --with-libxml-dir --enable-ctype --enable-calendar --enable-dom --enable-fileinfo --with-mhash --with-incov --enable-opcache --enable-phar --enable-simplexml --with-xsl --with-pear
Apart from enabling extensions command above will also set where PHP will be installed. In my case it’s /usr/local/php location. If you will want to remove compiled PHP you will simply have to remove entire directory given under –prefix option.
Next it’s time to compile PHP. Please be aware that it takes few minutes:
make clean make make test
Install compiled PHP
Once PHP is compiled it is time to install it. Simply execute following command:
sudo make install
php.ini and OPCache configuration
Second thing is php.ini file. After installation php.ini file should located in /usr/local/php/lib. This is only the location. After compiling from source You won’t anything there so we need to copy it from uncompressed sources.
cd /usr/local/php/lib cp /tmp/php-src-php-7.1.18/php.ini-development ./php.ini vi php.ini
Add PHP to $PATH
We can do one more thing to make our life easier:) Add PHP executable to PATH, so we’ll be able to call php command from every directory.
echo 'pathmunge /usr/local/php/bin' > /etc/profile.d/php.sh
Execute such command, log out, log in and You’ll be able to execute:
php -v
GZIP compression has serious impact on performance and your website loading time. In order to use it make sure that mod_deflate and mod_filter are enabled.
First create new file that will contain GZIP settings for Apache:
sudo vi /usr/local/apache2/conf/extra/httpd-deflate.conf
Paste there following content and save the file:
<IfModule mod_deflate.c> <IfModule mod_filter.c> AddOutputFilterByType DEFLATE application/ecmascript AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml </IfModule> </IfModule>
It will add GZIP compression to most popular file types such as HTML, CSS, JS etc. If you need anything else that requires compressing, simply add more MIME types.
Now you need to include it to main Apache configuration. so open httpd.conf and Include httpd-deflate.conf.
vi /usr/local/apache2/conf/httpd.conf and make sure the following line is added.
Include conf/extra/httpd-deflate.conf
Make sure that PHP is installed and running correctly. An easy way to check is to run php -v from a command line and see if returns version information or any errors.
Make sure that the PHP module is listed and uncommented inside of your Apache’s httpd.conf
LoadModule php7_module modules/libphp7.so
Make sure that Apache’s httpd.conf file has the PHP MIME type in it. This should be something like AddType application/x-httpd-php .php. This tells Apache to run .php files as PHP. Search for AddType, and then make sure there is an entry for PHP, and that it is uncommented.
It can be achieved bu adding the <can_be_empty>1</can_be_empty> tag in system.xml file
Ex:
<field id="hideprice" translate="label" type="multiselect" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Hide Price For</label> <source_model>PHPCodez\Permission\Model\Config\Source\Group\Multiselect</source_model> <can_be_empty>1</can_be_empty> </field>
Add the tag <can_be_empty>1</can_be_empty> with the field in system.xml file and now you should be enable to Unselect the multi select values.
Ex:
<field id="hideprice" translate="label" type="multiselect" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Hide Price For</label> <source_model>PHPCodez\Permission\Model\Config\Source\Group\Multiselect</source_model> <can_be_empty>1</can_be_empty> </field>