ວິທີການຕິດຕັ້ງ PHP 7 ກັບ Apache ແລະ MariaDB ໃນ CentOS 7/Debian 8


ອາທິດທີ່ຜ່ານມາ (ທີ່ຊັດເຈນກວ່ານີ້ໃນວັນທີ 21 ສິງຫາ 2015), ທີມພັດທະນາ PHP ໄດ້ປະກາດຄວາມພ້ອມຂອງ PHP 7 ລຸ້ນ ໃໝ່ ຫຼ້າສຸດແລະຊຸກຍູ້ໃຫ້ຜູ້ໃຊ້ແລະນັກພັດທະນາທົ່ວໂລກທົດສອບມັນ.

ເຖິງຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາຕ້ອງສັງເກດວ່າເນື່ອງຈາກວ່ານີ້ແມ່ນລຸ້ນ RC (ປ່ອຍຕົວຜູ້ສະ ໝັກ), ຄາດວ່າມັນອາດຈະມີຂໍ້ບົກພ່ອງຫຼືຄວາມບໍ່ສອດຄ່ອງກັບການຕັ້ງຄ່າທີ່ມີຢູ່ແລ້ວດັ່ງນັ້ນຜູ້ໃຊ້ຈະຖືກຂໍໃຫ້ລາຍງານໃຫ້ພວກເຂົາໃຊ້ລະບົບຕິດຕາມຂໍ້ຜິດພາດແລະບໍ່ໃຊ້ PHP 7 ໃນ ການຜະລິດໃນຂະນະທີ່ມັນຍັງຢູ່ໃນໄລຍະນັ້ນ.

ດ້ານທີ່ສະຫວ່າງແມ່ນວ່າລຸ້ນນີ້ມີການແກ້ໄຂຫຼາຍຢ່າງ (ທ່ານອາດຈະຕ້ອງການອ້າງອີງເຖິງ ໜ້າ ນີ້ຢູ່ໃນຫໍສະ ໝຸດ GitHub ຂອງໂຄງການ ສຳ ລັບລາຍລະອຽດຂອງຄຸນລັກສະນະແລະການປັບປຸງ ໃໝ່), ເຊິ່ງຄຸນລັກສະນະທີ່ໂດດເດັ່ນທີ່ສຸດແມ່ນການເພີ່ມຂື້ນຂອງການປະຕິບັດທີ່ໂດດເດັ່ນເມື່ອທຽບກັບກ່ອນ ໜ້າ ສະບັບ.

ບົດຂຽນນີ້ຈະພາທ່ານຍ່າງຜ່ານຂັ້ນຕອນການຕິດຕັ້ງແລະລວບລວມ PHP 7 RC1 ຈາກ tarball ແຫຼ່ງພ້ອມກັບ Apache ແລະ MariaDB ໃນ CentOS 7 ແລະ Debian 8 Jessie. ຄໍາແນະນໍາດຽວກັນນີ້ຍັງເຮັດວຽກກ່ຽວກັບການແຈກຈ່າຍທີ່ອີງໃສ່ CentOS ເຊັ່ນ RHEL, Fedora, Scientific Linux ແລະ Debian ທີ່ມີພື້ນຖານເຊັ່ນ Ubuntu/Mint.

ການຕິດຕັ້ງ PHP 7 ໃນ CentOS 7 ແລະ Debian 8

ດັ່ງທີ່ໄດ້ກ່າວໃນການແນະ ນຳ, ເນື່ອງຈາກວ່າລຸ້ນນີ້ແມ່ນ RC ແທນທີ່ຈະມີການປ່ອຍຕົວທີ່ ໝັ້ນ ຄົງ, ພວກເຮົາບໍ່ສາມາດຄາດຫວັງວ່າຈະພົບເຫັນມັນຢູ່ໃນຫໍໄຕ. ດ້ວຍເຫດຜົນດັ່ງກ່າວ, ພວກເຮົາຈະຕ້ອງດາວໂຫລດລະຫັດແຫຼ່ງຂໍ້ມູນແລະລວບລວມໂປແກຼມດັ່ງກ່າວຈາກຮອຍຂີດຂ່ວນ.

ແຕ່ກ່ອນທີ່ພວກເຮົາຈະເຮັດແນວນັ້ນ, ເຖິງຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາ ຈຳ ເປັນຕ້ອງຈື່ໄວ້ວ່າເພື່ອທີ່ຈະ ນຳ ໃຊ້ປະໂຫຍດຈາກ PHP 7 ແລະບາງທີວິທີທີ່ດີທີ່ສຸດທີ່ຈະທົດລອງໃຊ້ແມ່ນການຕິດຕັ້ງມັນພ້ອມກັບ Apache ແລະ MariaDB - ເຊິ່ງພວກເຮົາສາມາດຊອກຫາຢູ່ໃນຫໍສະ ໝຸດ:

# yum update && yum install httpd mariadb mariadb-server
# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

ບໍ່ວ່າໃນກໍລະນີໃດກໍ່ຕາມ, ຕາຕະລາງທີ່ມີລະຫັດແຫຼ່ງຂອງ PHP ສາມາດດາວໂຫລດແລະສະກັດໄດ້ດັ່ງຕໍ່ໄປນີ້:

# wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
# tar xzf php-7.0.0RC1.tar.gz -C /opt

ເມື່ອເຮັດແລ້ວ, ໃຫ້ຍ້າຍເຂົ້າໄປໃນ /opt/php-7.0.0RC1 ແລະປະຕິບັດ script buildconf ດ້ວຍປຸ່ມ –force ເພື່ອບັງຄັບການກໍ່ສ້າງລຸ້ນ RC:

# ls
# cd /opt/php-7.0.0RC1.tar.gz
# ./buildconf --force

ດຽວນີ້ເຖິງເວລາແລ້ວທີ່ທ່ານຕ້ອງປະຕິບັດ ຄຳ ສັ່ງການຕັ້ງຄ່າທີ່ມີຊື່ສຽງຂອງພວກເຮົາ. ໃນຂະນະທີ່ທາງເລືອກຂ້າງລຸ່ມນີ້ຈະຮັບປະກັນການຕິດຕັ້ງ PHP 7 ແບບມາດຕະຖານ, ທ່ານສາມາດອ້າງອີງໃສ່ລາຍຊື່ຕົວເລືອກທີ່ສົມບູນໃນປື້ມຄູ່ມື PHP ເພື່ອປັບແຕ່ງການຕິດຕັ້ງທີ່ດີຂື້ນຕາມຄວາມຕ້ອງການຂອງທ່ານ:

# ./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

ຖ້າທ່ານແລ່ນເຂົ້າໄປໃນຂໍ້ຜິດພາດດັ່ງຕໍ່ໄປນີ້:

configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

ພຽງແຕ່ຕິດຕັ້ງ gcc ແລະ dependencies ດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້ແລ້ວ ດຳ ເນີນການ ຄຳ ສັ່ງ configure ຂ້າງເທິງອີກຄັ້ງ.

# yum install gcc       [On CentOS 7 box]
# aptitude install gcc  [On Debian 8 box]

ທ່ານ ກຳ ລັງຢູ່ໃນເສັ້ນທາງຂອງທ່ານໃນການລວບລວມ PHP 7, ເຊິ່ງອາດໃຊ້ເວລາໃນໄລຍະ ໜຶ່ງ. ຖ້າມີຫໍສະມຸດຫລືຊັບພະຍາກອນອື່ນໆທີ່ຂາດຫາຍໄປ, ຂະບວນການນີ້ຈະລົ້ມເຫລວແຕ່ທ່ານສາມາດຕິດຕັ້ງພວກມັນຢູ່ສະ ເໝີ ແລະ ດຳ ເນີນການຕັ້ງຄ່າ ໃໝ່.

ຕົວຢ່າງ, ຂ້ອຍຕ້ອງຕິດຕັ້ງ libxml2-devel ຫຼັງຈາກໄດ້ຮັບຂໍ້ຄວາມຜິດພາດດັ່ງຕໍ່ໄປນີ້:

configure: error: xml2-config not found. Please check your libxml2 installation.

ແຕ່ໂຊກບໍ່ດີ, ພວກເຮົາບໍ່ສາມາດປົກຄຸມສະຖານະການທຸກໆກໍລະນີເນື່ອງຈາກຊອບແວທີ່ຕິດຕັ້ງອາດຈະແຕກຕ່າງກັນໄປຈາກລະບົບ ໜຶ່ງ ໄປສູ່ອີກລະບົບ ໜຶ່ງ. ໃນລະຫວ່າງການຕິດຕັ້ງ, ທ່ານອາດຈະຕ້ອງການອ້າງອີງເຖິງ ໜ້າ ນີ້ເຊິ່ງຊີ້ແຈງຂໍ້ຜິດພາດຫລາຍຢ່າງທີ່ທ່ານອາດຈະແລ່ນເຂົ້າໄປໃນຂະນະທີ່ຕິດຕັ້ງ PHP ຈາກແຫລ່ງທີ່ມາພ້ອມກັບວິທີແກ້ໄຂທີ່ກ່ຽວຂ້ອງ.

ນີ້ແມ່ນບັນຊີລາຍຊື່ທີ່ສົມບູນຂອງແພັກເກດທີ່ຂ້ອຍຕ້ອງຕິດຕັ້ງຢູ່ໃນກ່ອງ CentOS 7 ຂອງຂ້ອຍກ່ອນທີ່ຈະສາມາດເຮັດ ສຳ ເລັດຂັ້ນຕອນການຕັ້ງຄ່າ:

gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

ທ່ານສາມາດຕິດຕັ້ງທຸກຊຸດທີ່ຕ້ອງການມາຂ້າງເທິງດ້ວຍ ຄຳ ສັ່ງ yum ດຽວເທົ່າກັບທີ່ສະແດງ.

# yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

ຂໍ້ຄວາມຕໍ່ໄປນີ້ຊີ້ໃຫ້ເຫັນວ່າການຕັ້ງຄ່າ ສຳ ເລັດແລ້ວ:

ແລ້ວແລ່ນ,

# make
# make install

ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດທ່ານສາມາດກວດເບິ່ງເວີຊັນໂດຍໃຊ້ເສັ້ນ ຄຳ ສັ່ງ:

ໃນ Debian, ຂ້ອຍຕ້ອງຕິດຕັ້ງຊຸດຕໍ່ໄປນີ້ ສຳ ລັບຂະບວນການ ກຳ ນົດການຕັ້ງຄ່າໃຫ້ ສຳ ເລັດ:

make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

ທ່ານສາມາດຕິດຕັ້ງທຸກຊຸດທີ່ຕ້ອງການຂ້າງເທິງດ້ວຍ ຄຳ ສັ່ງ apt-get ໃນ Debian 8.

# apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

ຫຼັງຈາກນັ້ນຕື່ມ, –with-libdir =/lib/x86_64-linux-gnu ໃສ່ຕົວເລືອກການຕັ້ງຄ່າ, ແລະສ້າງ symlink ຕໍ່ໄປນີ້ໃສ່ແຟ້ມ gmp.h header:

# ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

ຫຼັງຈາກນັ້ນ, ran ເຮັດແລະຕິດຕັ້ງຄືກັນກັບໃນກໍລະນີທີ່ຜ່ານມາ. ພາຍໃນເວລາ 10-15 ນາທີການລວບລວມຂໍ້ມູນຄວນໄດ້ເຮັດ ສຳ ເລັດແລ້ວແລະພວກເຮົາສາມາດກວດສອບເວີຊັນ PHP ທີ່ຕິດຕັ້ງມາກ່ອນຄື:

# make
# make install

ການຕັ້ງຄ່າ php.ini ແລະການທົດສອບການຕິດຕັ້ງ PHP 7

ເມື່ອທ່ານຕິດຕັ້ງ PHP ຈາກແຫຼ່ງຂໍ້ມູນ, php.ini ສອງຕົວຢ່າງແມ່ນໃຫ້. ໃນກໍລະນີນີ້, ພວກມັນຕັ້ງຢູ່ພາຍໃນ /opt/php-7.0.0RC1:

# ls -l /opt/php-7.0.0RC1 | grep php.ini

ດຽວນີ້ທ່ານ ຈຳ ເປັນຕ້ອງເຮັດ ສຳ ເນົາ ໜຶ່ງ ຂອງມັນໄປທີ່/usr/local/lib, ເຊິ່ງຖືກ ກຳ ນົດວ່າເປັນສະຖານທີ່ເລີ່ມຕົ້ນ ສຳ ລັບເອກະສານດັ່ງກ່າວຕາມປື້ມບັນທຶກການຕິດຕັ້ງ:

# cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

ແລະຢ່າລືມເພີ່ມ ຄຳ ສັ່ງການຕັ້ງຄ່ານີ້ໃສ່ໃນເອກະສານການຕັ້ງຄ່າຕົ້ນຕໍຂອງ Apache.

/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 
LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

ໃນ Debian 8 ທ່ານສາມາດຍົກເລີກເສັ້ນ LoadModule ແລະທ່ານກໍ່ ຈຳ ເປັນຕ້ອງເອົາແລະສ້າງລິ້ງສັນຍາລັກຕໍ່ໄປນີ້ກັບໂມດູນ Apache ທີ່ລະບຸໄວ້:

# cd /etc/apache2
# rm mods-enabled/mpm_event.conf
# rm mods-enabled/mpm_event.load
# ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
# ln -s mods-available/mpm_prefork.load mpm_prefork.load

ຫຼັງຈາກນັ້ນ, ເລີ່ມຕົ້ນ ໃໝ່ server web:

# systemctl restart httpd     [On CentOS 7 box]
# systemctl restart apache2   [On Debian 8 box]

ຖ້າການເລີ່ມຕົ້ນ Apache ໃນ CentOS 7 ສົ່ງຂໍ້ຄວາມຜິດພາດໂດຍກ່າວວ່າມັນບໍ່ສາມາດຊອກຫາໂມດູນ libphp7.so, ພຽງແຕ່ຄັດລອກໄປທີ່ເສັ້ນທາງທີ່ບົ່ງໄວ້ຈາກ /opt/php-7.0.0RC1/.libs/libphp7.so.

ວິທີການແບບເກົ່າເພື່ອທົດສອບການຕິດຕັ້ງ PHP/Apache ແມ່ນການໃຊ້ແຟ້ມ phpinfo() . ສ້າງແຟ້ມເອກະສານທີ່ມີຊື່ວ່າ test.php ດ້ວຍເນື້ອໃນຕໍ່ໄປນີ້ໃນຮາກເອກະສານຂອງເຊີຟເວີເວັບ (/ var/www/html ໃນການແຈກຢາຍທັງສອງ):

<?php
phpinfo();
?>

ແລະເປີດຕົວທ່ອງເວັບໃນລູກຄ້າພາຍໃນເຄືອຂ່າຍຂອງທ່ານເພື່ອທົດສອບ:

http://localhost/test.php
OR
http://IP-address/test.php

ບົດສະຫຼຸບ

ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕິດຕັ້ງ PHP 7 ຈາກລະຫັດແຫຼ່ງ, RC ໃໝ່ ສຸດຂອງພາສາທີ່ໃຊ້ໃນການ ນຳ ໃຊ້ server ທີ່ມີຄວາມນິຍົມສູງນີ້ເພື່ອແນໃສ່ປັບປຸງການປະຕິບັດງານໃນມູນຄ່າທີ່ບໍ່ເຄີຍມີມາກ່ອນ. ຈົນກ່ວາມັນຈະຮອດສະຖຽນລະພາບໃນເດືອນພະຈິກຂອງປີ 2015 ນີ້, ທ່ານໄດ້ຖືກແນະ ນຳ ໃຫ້ຢ່າໃຊ້ການປ່ອຍລຸ້ນນີ້ໃນສະພາບແວດລ້ອມການຜະລິດ.

ຖ້າທ່ານມີ ຄຳ ຖາມ/ຄຳ ເຫັນ/ຄຳ ແນະ ນຳ ໃດໆກ່ຽວກັບບົດຂຽນນີ້, ກະລຸນາແຈ້ງໃຫ້ພວກເຮົາຊາບໂດຍ ນຳ ໃຊ້ແບບຟອມລຸ່ມນີ້.