السلام عليكم ورحمة الله وبركاته

من اسبوع تقريبا كان فى طلب من شخص ان عنده عملاء لهم مواقع لابد من استخدام php 5.3 وهو عمل تحديث update ل 5.4 .. اعتقد دى اول مرة يكون فى موضوع يشرح طريقة فكرة تركيب install اصدارين مختلفين من ال PHP على سيرفر SERVER واحد .
CloudLinux فيه الميزة دى تلقائيا من خلال php selector . . لكن ايضا اللى مش مركب CL يعمل ايه !!!!

الشرح طريقة دا تم تنفيذه باصدارين 5.3.22 و 5.4.12 والاضافات الخاصة بال PHP زى IonCube - PHP_FPM - CGI
ايضا الدرس مفصل تركيب install php من السورس هايفيد برده كخبرة

نصيحة : الدرس مفصل دا لاينفذه سوى شخص له بعض من الخبرة فى التعامل وفهم النظام جيدا .. لأن فيه اضافات بالبووت وسكربت يتم تنفيذه واضافات متعلقة بالويب سيرفر SERVER نفسه .
والنصيحة الكبرى

نبدا بتركيب install ال 5.3 FPM
رمز PHP:
<code style="white-space:nowrap"> <code> mkdir /opt/php-5.3.22



</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> mkdir /usr/local/src/php5-build
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> cd /usr/local/src/php5-build
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> wget http://de.php.net/get/php-5.3.22.tar.bz2/from/this/mirror -O php-5.3.22.tar.bz2
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> tar jxf php-5.3.22.tar.bz2
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> cd php-5.3.22/
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> yum groupinstall 'Development Tools'
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel
</code> </code>

دلوقتى هانعمله كومبايل .. ونختار الاضافات اللى نحتاجها .
للى ميعرفش اللى هايحتاجه اسمه ايه تحديدا .. تقدر تستخدم الhelp
رمز PHP:
<code style="white-space:nowrap"> <code> ./configure --help
</code> </code>

تختار منها اللى تحتاجه
ننفذ
رمز PHP:
<code style="white-space:nowrap"> <code> ./configure \
--
prefix=/opt/php-5.3.22 \
--
with-pdo-pgsql \
--
with-zlib-dir \
--
with-freetype-dir \
--
enable-mbstring \
--
with-libxml-dir=/usr \
--
enable-soap \
--
enable-calendar \
--
with-curl \
--
with-mcrypt \
--
with-zlib \
--
with-gd \
--
with-pgsql \
--
disable-rpath \
--
enable-inline-optimization \
--
with-bz2 \
--
with-zlib \
--
enable-sockets \
--
enable-sysvsem \
--
enable-sysvshm \
--
enable-pcntl \
--
enable-mbregex \
--
with-mhash \
--
enable-zip \
--
with-pcre-regex \
--
with-mysql \
--
with-pdo-mysql \
--
with-mysqli \
--
with-jpeg-dir=/usr \
--
with-png-dir=/usr \
--
enable-gd-native-ttf \
--
with-openssl \
--
with-fpm-user=nginx \
--
with-fpm-group=nginx \
--
with-libdir=lib64 \
--
enable-ftp \
--
with-imap \
--
with-imap-ssl \
--
with-kerberos \
--
with-gettext \
--
enable-fpm
</code> </code>

هانضيف على الامر التالى لاستخدام PHP-FPM
الذى يعمل على اباتشى يضيف السطر التالى
اذا كنت تستخد cPanel اليوزر والجروب هايكون nobody
رمز PHP:
<code style="white-space:nowrap"> <code> --with-fpm-user=apache
--with-fpm-group=apache
</code> </code>

فى حالة NGINX اضف
رمز PHP:
<code style="white-space:nowrap"> <code> --with-fpm-user=nginx
--with-fpm-group=nginx
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> make
make install
</code> </code>

ننسخ ملف .ini وFPM.conf للمسار المضبوط
رمز PHP:
<code style="white-space:nowrap"> <code> cp /usr/local/src/php5-build/php-5.3.22/php.ini-production /opt/php-5.3.22/lib/php.ini
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> cp /opt/php-5.3.22/etc/php-fpm.conf.default /opt/php-5.3.22/etc/php-fpm.conf
</code> </code>

هانضيف القيم الخاصة لل FPM للربط بالويب سيرفر SERVER وبورت غير مستخدم
رمز PHP:
<code style="white-space:nowrap"> <code> nano /opt/php-5.3.22/etc/php-fpm.conf
</code> </code>

طبعا هانغير اليوزر والباس حسب الويب سيرفر SERVER الموجود اذا كان اباتشى او انجن اكس
ونفتح البورت 8999 من الفايروول
هايكون المحتوى كالتالى :
رمز PHP:
<code style="white-space:nowrap"> <code> &#91;...&#93;
pid = run/php-fpm.pid
&#91;...&#93;
user = nginx
group
= nginx
&#91;...&#93;
listen = 127.0.0.1:8999
&#91;...&#93;
include=/
opt/php-5.3.22/etc/pool.d/*.conf
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> mkdir /opt/php-5.3.22/etc/pool.d
</code> </code>

الخطوة دى هانعمل فيها السكربت الخاص بالخدمة نفسها واعداداتها
نفتح الملف

رمز PHP:
<code style="white-space:nowrap"> <code> nano /etc/init.d/php-5.3.22-fpm
</code> </code>

نضع بداخله
رمز PHP:
<code style="white-space:nowrap"> <code> #! /bin/sh
### BEGIN INIT INFO
# Provides: php-5.3.22-fpm
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-5.3.22-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.3.22/sbin/php-fpm
php_fpm_CONF
=/opt/php-5.3.22/etc/php-fpm.conf
php_fpm_PID
=/opt/php-5.3.22/var/run/php-fpm.pid
php_opts
="--fpm-config $php_fpm_CONF"

wait_for_pid () {
try=
0
while test $try -lt 35 ; do
case
"$1" in
'created')
if &#91; -
f "$2" &#93; ; then
try=''
break
fi
;;
'removed')
if &#91; ! -
f "$2" &#93; ; then
try=''
break
fi
;;
esac
echo -n .
try=`
expr $try + 1`
sleep 1
done
}
case
"$1" in
start
)
echo -
n "Starting php-fpm "
$php_fpm_BIN $php_opts
if &#91; "$?" != 0 &#93; ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if &#91; -n "$try" &#93; ; then
echo " failed"
exit 1
else
echo
" done"
fi
;;
stop)
echo -
n "Gracefully shutting down php-fpm "
if &#91; ! -r $php_fpm_PID &#93; ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill
-QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if &#91; -n "$try" &#93; ; then
echo " failed. Use force-exit"
exit 1
else
echo
" done"
echo " done"
fi
;;
force-quit)
echo -
n "Terminating php-fpm "
if &#91; ! -r $php_fpm_PID &#93; ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill
-TERM `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if &#91; -n "$try" &#93; ; then
echo " failed"
exit 1
else
echo
" done"
fi
;;
restart)
$
0 stop
$0 start
;;
reload)
echo -
n "Reload service php-fpm "
if &#91; ! -r $php_fpm_PID &#93; ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill
-USR2 `cat $php_fpm_PID`
echo
" done"
;;
*)
echo
"Usage: $0 {start|stop|force-quit|restart|reload}"
exit 1
;;
esac
</code> </code>

هانغير تصريحاته انه يكون قابل للتنفيذ ونضيفه لل startup
رمز PHP:
<code style="white-space:nowrap"> <code> chmod 755 /etc/init.d/php-5.3.22-fpm
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> chkconfig --levels 235 php-5.3.22-fpm on
</code> </code>

نشغل
رمز PHP:
<code style="white-space:nowrap"> <code> /etc/init.d/php-5.3.22-fpm start
</code> </code>

هايطلع رسالة تحذير تجاهلها عادى .. دا عشان لا يوجد بووول
ممكن نركب الملحقات للاصدار ايضا من موديولات بحيث مفيش موقع يتعطل
رمز PHP:
<code style="white-space:nowrap"> <code> yum install php-pear
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> cd /opt/php-5.3.22/etc
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> pecl -C ./pear.conf update-channels
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> pecl -C ./pear.conf install apc
</code> </code>

هاتختار كل ال Default عادى
نضيفه بال .ini
رمز PHP:
<code style="white-space:nowrap"> <code> nano /opt/php-5.3.22/lib/php.ini
</code> </code>

نضيف بالملف
رمز PHP:
<code style="white-space:nowrap"> <code> &#91;...&#93;
extension=apc.so
apc
.enabled=1
apc
.shm_size=128M
apc
.ttl=0
apc
.user_ttl=600
apc
.gc_ttl=600
apc
.enable_cli=1
apc
.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5
</code> </code>

نركب ال memcache
رمز PHP:
<code style="white-space:nowrap"> <code> pecl -C ./pear.conf install memcache
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> nano /opt/php-5.3.22/lib/php.ini
</code> </code>

نضع ايضا
رمز PHP:
<code style="white-space:nowrap"> <code> &#91;...&#93;
extension=memcache.so
</code> </code>

نركب memcached
رمز PHP:
<code style="white-space:nowrap"> <code> yum install libmemcached-devel
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> pecl -C ./pear.conf install memcached
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> nano /opt/php-5.3.22/lib/php.ini
</code> </code>

نضع
رمز PHP:
<code style="white-space:nowrap"> <code> &#91;...&#93;
extension=memcached.so
</code> </code>

رمز PHP:
<code style="white-space:nowrap"> <code> /etc/init.d/php-5.3.22-fpm reload
</code> </code>







©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©