نصب ماژولهای مختلف PHP برای TestLink
در این مقاله:
نکته: ما در حال تغییر ساختار فایل و پیکربندی بسیاری از استکهای بیتنامی هستیم. در نتیجهی این تغییرات، مسیر فایلهایی که در این آموزش به آنها اشاره شده ممکن است تغییر کند که این موضوع هم بستگی دارد که استک بیتنامی شما از پکیجهای سیستمی نیتیو لینوکس استفاده میکند (رویکرد A) یا نسخهای self-contained است (رویکرد B). برای تشخیص نوع استکتان و انتخاب رویکرد متناسب، دستور زیر را اجرا کنید:
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
خروجی این دستور نشان میدهد که اپلیکیشن شما از کدام رویکرد (A یا B) استفاده میکند و به شما کمک میکند که در این راهنما مسیر، پیکربندی و دستورات متناسب با آن را انتخاب کنید. برای اطلاعات بیشتر راجع به این تغییرات، به بخش سوالات رایج مراجعه کنید.
روند معمول نصب یک ماژول PHP آن است که ابتدا ماژول را یا از طریق پکیج منیجر یا به صورت دستی نصب کنید و سپس آن را در فایل پیکربندی PHP فعال کنید. برای یادگیری نحوهی نصب ماژولهای خاص PHP این مقاله را مطالعه کنید.
نکته: استکهای بیتنامی به صورت پیشفرض چند ماژول را در خود دارند که نصب هستند ولی فعال نیستند. پیش از نصب یک ماژول جدید بررسی کنید که ماژول مورد نظرتان جزو این دسته از ماژولها نباشد. اگر جزو آنها بود تنها کافی است که آن را در فایل پیکربندی PHP فعال کنید.
بعد از تغییر فایل پیکربندی PHP هم آپاچی و هم PHP-FPM را با دستور زیر دوباره راهاندازی کنید تا تغییرات اعمال شود:
sudo /opt/bitnami/ctlscript.sh restart apache
sudo /opt/bitnami/ctlscript.sh restart php-fpm
APCu
ماژول APCu، ماژول حافظهی نهان کاربر APC است. این ماژول در نسخههای اخیر استکهای بیتنامی به صورت پیشفرض قرار دارد. در غیر این صورت برای نصب آن به صورت دستی مراحل زیر را طی کنید:
- پکیجهای زیر را نصب کنید:
- Debian:
sudo apt-get update
sudo apt-get install build-essential libtool autoconf unzip wget
-
- CentOS:
sudo yum groups mark install "Development Tools"
- آخرین نسخهی سورس پکیج را دانلود و از حالت فشرده خارج کنید و ماژول را کامپایل کنید.
wget https://pecl.php.net/get/apcu-X.Y.Z.tgz
tar xzf apcu-X.Y.Z.tgz
cd apcu-X.Y.Z
phpize
./configure --with-php-config=/opt/bitnami/php/bin/php-config
make
sudo make install
ماژول را با اضافه کردن خط زیر به فایل php.ini فعال کنید:
...
extension = apcu.so
...
MSSQL
Microsoft SQL Server سیستم مدیریت پایگاه دادهی رابطهای است که مایکروسافت آن را توسعه داده است. مراحل نصب ماژول برای PHP5 و PHP7 و همچنین اوبونتو و دبیان متفاوت است. برای نصب این ماژول با توجه به نسخهی PHP و پتلفرمتان به آموزش مربوطه مراجعه کنید. برای اینکه نسخهی PHP خود را به دست آورید از دستور php -v استفاده کنید.
نصب
لازم است که درایورهای لینوکسی PHP برای SQL Server را نصب کنید. این فرآیند برای اوبونتو و دبیان متفاوت است.
Debian
- پکیجهای مایکروسافت را به apt-get اضافه کنید:
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
- ابزار را به کمک apt-get و pecl نصب کنید:
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
- فایل /opt/bitnami/php/etc/php.ini را ویرایش و خطوط زیر را به آن اضافه کنید:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
Ubunto
- پکیجهای مایکروسافت را به apt-get اضافه کنید:
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
- ابزار را به کمک apt-get و pecl نصب کنید:
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools unixodbc-dev
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
- فایل /opt/bitnami/php/etc/php.ini را ویرایش و خطوط زیر را به آن اضافه کنید:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
آزمایش
- فایلی با نام connect.php ایجاد کنید:
nano connect.php
- اسکریپت PHP زیر را به آن اضافه کنید. به جای IP_ADDRESS، PORT و PASSWORD مقادیر صحیح متناظرشان را بنویسید:
<?php
$server = 'http://IP_ADDRESS:PORT';
$dbName = 'master';
$uid = 'admin';
$pwd = 'PASSWORD';
$conn = new PDO("sqlsrv:server=$server; database = $dbName", $uid, $pwd);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try {
$result = $conn->query('SELECT TOP 10 * FROM [master].[INFORMATION_SCHEMA].[TABLES]');
foreach ($result as $row)
{
print_r( $row );
}
} catch (Exception $e) {
echo $e->getMessage();
}
?>
- اسکریپت را دستور زیر اجرا کنید:
php connect.php
GeolP2
Apache
ماژول mod_geoip2 در واقع lookupهای پایگاههای دادهی GeolP را داخل وب سرور آپاچی جایگذاری میکند. این ماژول به جای اینکه دنبال آیپی آدرسهای دلخواه بگردد، میتواند در میان آیپی آدرسهای کلاینتهایی که به وب سرور متصل میشوند جستجو کند.
اگر این ماژول در استک شما وجود ندارد، با طی مراحل زیر آن را به صورت دستی نصب کنید:
- پکیجهای زیر را در صورت لزوم نصب کنید:
- Debian:
sudo apt-get update
sudo apt-get install build-essential libtool autoconf unzip wget
-
- CentOS:
sudo yum groups mark install "Development Tools"
- فایلهای توسعه×ی مربوط به libgeoip را نصب کنید:
- Debian:
sudo apt-get install libgeoip-dev
-
- CentOS:
sudo yum install GeoIP
- آخرین نسخهی سورس کد ماژول را دانلود کنید، از حالت فشرده خارجش کنید و بعد کامپایلش کنید.
wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2-latest.tar.gz
- آن را از حالت فشرده خارج و کتابخانهها را بیلد کنید:
tar xzf mod_geoip2-latest.tar.gz
cd mod_geoip2_*
sudo apxs -i -a -lGeoIP -c mod_geoip.c
اکنون ماژول باید در /opt/bitnami/apache2/modules/mod_geoip.so باشد. این ماژول به صورت خودکار به پیکربندی آپاچی شما نیز وارد میشود.
- با اضافه کردن خط GeolPEnable On در فایل /opt/bitnami/apache2/conf/httpd.conf ماژول را در فایل پیکربندی آپاچی فعال کنید. برای سایر تنظیمات خاص پیکربندی این لینک را مطالعه کنید: http://dev.maxmind.com/geoip/mod_geoip2#Configuration-2
NGINX
به منظور نصب و کامپایل ماژول GeolP2 برای NGINX، لازم است که ابتدا NGINX را که شامل GeolP2 است دانلود و کامپایل کنید و سپس آن را روی ماژولهای کامپایلشدهی موجود کپی کنید. مراحل زیر را طی کنید:
- کتابخانهی libmaxminddb-dev را نصب کنید:
sudo apt-get install libmaxminddb-dev
- سورس کد ماژول GeolP2 را با استفاده از دستورات زیر دانلود و از حالت فشرده خارج کنید. توجه کنید که آدرس دانلود و نام فایل با توجه به نسخهای که میخواهید دانلود کنید متفاوت خواهد بود.
wget https://github.com/leev/ngx_http_geoip2_module/archive/3.2.tar.gz
tar xzf 3.2.tar.gz
- سورس کد NGINX را با استفاده از دستورات زیر دانلود و از حالت فشرده خارج کنید. توجه کنید که آدرس دانلود و نام فایل با توجه به نسخهای که میخواهید دانلود کنید متفاوت خواهد بود.
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xzf nginx-1.18.0.tar.gz
نکته: آن نسخهای از سورس کد NGINX را دانلود کنید که با نسخهی در حال استفادهی استک بیتنامی شما مطابقت داشته باشد.
- ماژول را بهعنوان ماژولی پوی×ا کامپایل کنید. عبارت PATH-TO-MODULE-DIRECTORY را با دایرکتوریای عوض کنید که سورس کد ماژول GeolP2 را دارد:
cd nginx-1.18.0
./configure --add-dynamic-module=PATH-TO-MODULE-DIRECTORY
Make
با این کار باید فایل ماژول کامپایلشدهای به نام objs/ngx_http_geoip2_module.so ساخته شود. این فایل را داخل دایرکتوری موقت کپی کنید.
cp objs/ngx_http_geoip2_module.so /tmp/
- دایرکتوری نصب فعلی NGINX را تغییر دهید و فایل ماژول مرحلهی قبل را در آن کپی کنید:
cd /opt/bitnami/nginx
mkdir modules
cp /tmp/ngx_http_geoip2_module.so /opt/bitnami/nginx/modules/
- فایل /opt/bitnami/nginx/nginx.conf را ویرایش و خط زیر را به آن اضافه کنید تا ماژول بارگذاری شود:
load_module modules/ngx_http_geoip2_module.so;
Imagic
ماژول Imagic در استکهای بیتنامی نصب شده است، اما به صورت پیشفرض فعال نیست. برای فعالسازی آن مراحل زیر را طی کنید:
- خط زیر را در فایل /opt/bitnami/php/etc/php.ini از حالت کامنت خارج یا به آن اضافه کنید:
...
extension=imagick.so
...
IonCube
مراحل زیر را طی کنید:
- نسخهی پیش کامپایلشده را دانلود و فایل .soرا در دایرکتوری افزونههای PHP کپی کنید. نصب نسخهی صحیح ionCube که با نسخهی PHP شما همخوانی داشته باشد اهمیت بسیار زیادی دارد. برای مثال اگر میخواهید ionCube را روی وردپرسی نصب کنید که از نسخهی 7.0.27 پیاچپی استفاده میکند، لازم است که نسخهی 7.0 ماژول ionCube را نصب کنید.
wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xvzf ioncube_loaders_lin_x86-64.tar.gz
sudo cp ioncube/ioncube_loader_lin_Y.Z.so /opt/bitnami/php/lib/php/extensions/
نکته: به جای Y و Z شماره نسخهای را بگذارید که با نسخهی PHP شما همخوانی دارد.
- خط زیر را به فایل php.ini اضافه کنید:
zend_extension = /opt/bitnami/php/lib/php/extensions/ioncube_loader_lin_Y.Z.so
MongoDB
ماژول Mongo PHP در واقع یکی از درایورهای MongoDB است. این ماژول در نسخههای اخیر استکهای بیتنامی به صورت پیشفرض قرار دارد. در غیر این صورت برای نصب آن دستور زیر را اجرا کنید:
sudo pecl install mongodb
...
Build process completed successfully
Installing '/opt/bitnami/php/lib/php/extensions/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.5.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongodb.so" to php.ini
برای فعالسازی ماژول MongoDB، مراحل زیر را دنبال کنید:
- ماژول را دانلود و کامپایل کنید:
...
extension=mongodb.so
...
- با اجرای دستور زیر بررسی کنید که افزونه بارگذاری شده باشد:
php -i | grep -i mongodb
OAuth
OAuth یک پروتکل احراز هویت است که بر پایهی HTTP ساخته شده و این امکان را به اپلیکیشنها میدهد تا بدون ذخیرهی نامهای کاربری و رمزهای عبور به شکلی امن به دادهها دسترسی پیدا کنند.
مراحل زیر را دنبال کنید:
- پکیجهای زیر را نصب کنید:
- Debian:
sudo apt-get update
sudo apt-get install build-essential libtool autoconf unzip wget libpcre++-dev
-
- CentOS:
sudo yum groups mark install "Development Tools"
- آخرین نسخهی سورس کد ماژول را دانلود کنید، از حالت فشرده خارج و کامپایلش کنید.
wget http://pecl.php.net/get/oauth-2.0.5.tgz
tar xzf oauth*
cd oauth-*
phpize
./configure
make
sudo make install
- ماژول را با اضافه کردن خط زیر به فایل php.ini فعال کنید:
...
extension = '/opt/bitnami/php/lib/php/extensions/oauth.so'
...
- با اجرای دستور زیر بررسی کنید که آیا افزونه بارگذاری شده باشد:
php -i | grep -i oauth
OCI8
برخی از استکهای بیتنامی همراه نسخهی کامپایلشدهی ماژول oci8 برای هر پلتفرم عرضه میشوند. این ماژول نیاز دارد که کاربران هر دو پکیج InstantClient Basic و InstantClient SDK مخصوص پلتفرمشان را از وبسایت اوراکل دانلود و نصب کنند.
برای فعالسازی این ماژول، ابتدا بررسی کنید که فایل php.ini خط extension=oci8.so را دارد یا نه. اگر داشت، با حذف علامت ; آن را از حالت کامنت خارج کنید.
extension=oci8.so
اگر فایل مذکور این خط را نداشت، معنایش آن است که استک بیتنامی شما فاقد ماژول oci8 است. برای کامپایل و فعالسازی این ماژول، مراحل زیر را دنبال کنید:
- ماژول OCI8 را کامپایل و نصب کنید:
cd /tmp
wget https://pecl.php.net/get/oci8-2.2.0.tgz
tar xzf oci8-2.2.0.tgz
cd oci8-2.2.0
phpize
./configure --with-oci8=instantclient,/home/bitnami/instantclient_19_6
make
sudo make install
نکته: فرمانهای زیر با این فرض نوشته شدهاند که پکیجهای InstantClient Basic و SDK در دایرکتوری /home/bitnami/instantclient_19_6 از حالت فشرده خارج شده و قرار دارند. اگر این پکیجها در محل دیگری قرار دارند، مسیرهای ذکر شده در فرمانهای زیر را به تناسب اصلاح کنید.
- متغیر محیطی زیر را به رانتایم PHP اضافه کنید:
export LD_LIBRARY_PATH=/home/bitnami/instantclient_19_6${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
نکته: با توجه به نوع اپلیکیشنتان، متغیر محیطی را باید در محلهای زیر اضافه کنید:
رویکرد A (آن دسته از اپلیکیشنهایی که از پکیجهای سیستمی لینوکس استفاده میکنند): /opt/bitnami/scripts/php-env.sh
رویکرد B (اپلیکیشنهای Self-contained): /opt/bitnami/scripts/setenv.sh
- با اضافه کردن خط زیر به فایل php.ini، ماژول oci8 را فعال کنید:
extension=oci8.so
- بررسی کنید که ماژول فعال شده باشد:
/opt/bitnami/php/bin/php -m
OpenSSL
ماژول OpenSSL برای PHP به صورت پیشفرض فعال است و هیچ پیکربندی اضافهای لازم ندارد.
Pdo_ibm
برای نصب و فعالسازی ماژول PDO_IBM، مراحل زیر را دنبال کنید:
- پکیج IBM Data Server Driver برای پلتفرمتان را از وبسایت IBM دانلود و نصب کنید.
- محتوای پکیج را در پوشهی home از حالت فشرده خارج و آن را با فرمانهای زیر نصب کنید:
cd /home/bitnami/dsdriver
bash installDSDriver
- ماژول PDO_IBM را کامپایل کنید:
wget https://pecl.php.net/get/PDO_IBM-1.3.6.tgz
tar xzf PDO_IBM-1.3.6.tgz
cd PDO_IBM-1.3.6
phpize
./configure
make
sudo make install
- متغیر محیطی زیر را به رانتایم PHP اضافه کنید:
export LD_LIBRARY_PATH=/home/bitnami/dsdriver/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
نکته: با توجه به نوع اپلیکیشنتان، متغیر محیطی را باید در محلهای زیر اضافه کنید:
رویکرد A (آن دسته از اپلیکیشنهایی که از پکیجهای سیستمی لینوکس استفاده میکنند): /opt/bitnami/scripts/php-env.sh
رویکرد B (اپلیکیشنهای Self-contained): /opt/bitnami/scripts/setenv.sh
- ماژول PDO_IBM را با اضافه کردن خط زیر به فایل php.ini فعال کنید:
extension=pdo_ibm.so
- با اجرای فرمان زیر بررسی کنید که ماژول فعال شده باشد:
/opt/bitnami/php/bin/php -m
- سرور را دوباره راهاندازی کنید:
sudo /opt/bitnami/ctlscript.sh restart apache
- دوباره بررسی کنید که ماژول فعال باشد. اگر فعال باشد، نباید پیغام هشداری نمایش داده شود.
/opt/bitnami/php/bin/php -m | grep ibm
Pdo_pgsql
این ماژول در استکهای بیتنامی قرار دارد، اما به صورت پیشفرض فعال نیست. برای فعالسازی ماژول pdo_pgsql، فایل php.ini را ویرایش و خط زیر را به آن اضافه کنید:
extension=pdo_pgsql.so
Redis
افزونهی phpredis یک API برای ارتباط با پایگاه دادهی کلید پایهی (Key-value store) Redis ارائه میدهد. برای نصب آن مراحل زیر را دنبال کنید:
- پکیجهای زیر را نصب کنید:
- Debian:
sudo apt-get update
sudo apt-get install -y autoconf
-
- CentOS:
sudo yum groups mark install "Development Tools"
- آخرین نسخهی سورس کد ماژول را دانلود، از حالت فشرده خارج و کامپایلش کنید.
wget https://pecl.php.net/get/redis-VERSION.tgz
tar xzf redis-VERSION.tgz
cd redis-VERSION
phpize
./configure
make
sudo make install
نکته: به جای VERSION شمارهی نسخهی Redis خودتان را بنویسید.
- ماژول را با اضافه کردن خط زیر به انتهای فایل /opt/bitnami/php/etc/php.ini فعال کنید:
extension=redis.so
- با اجرای دستور زیر بررسی کنید که آیا ماژول به درستی نصب شده است یا نه:
php -m | grep redis
برای اطلاعات بیشتر به مستندات رسمی در آدرس https://github.com/phpredis/phpredis مراجعه کنید.
Solr
افزونهی Apache Solr PHP کتابخانهای بسیار سریع، سبک و با قابلیتهای فراوان است که این امکان را برای اپلیکیشنهای PHP فراهم میکند که با استفاده از یک API شیءگرا، تعامل آسان و موثری با سرور Apache Solr داشته باشند.
اگر این ماژول در استک شما وجود نداشت با طی مراحل زیر آن را به صورت دستی نصب کنید:
- پکیجهای زیر را نصب کنید:
- Debian:
sudo apt-get update
sudo apt-get install build-essential libtool autoconf unzip wget libcurl4-openssl-dev libxml2-dev
sudo ln -s /usr/include/x86_64-linux-gnu/curl /usr/include/curl
-
- CentOS:
sudo yum groups mark install "Development Tools"
sudo yum install openssl-devel curl-devel libxml2-devel
- آخرین نسخهی سورس کد ماژول را دانلود، از حالت فشرده خارج و کامپایلش کنید:
wget http://pecl.php.net/get/solr-VERSION.tgz
tar xzf solr-VERSION.tgz
cd solr-VERSION
- ماژول را کامپایل کنید. با توجه به نوع اپلیکیشنتان، یکی از دستورات زیر را اجرا کنید:
- رویکرد A (آن دسته از اپلیکیشنهایی که از پکیجهای سیستمی لینوکس استفاده میکنند):
phpize
./configure --enable-solr
make
sudo make install
-
- رویکرد B (اپلیکیشنهای Self-contained):
phpize
./configure --enable-solr --with-curl=/opt/bitnami/common --with-libxml-dir=/opt/bitnami/common
make
sudo make install
- ماژول را در فایل php.ini فعال کنید:
...
extension=solr.so
...
SSH2
به منظور نصب ماژول SSH2 برای PHP، مراحل زیر را طی کنید:
- پکیجهای زیر را نصب کنید:
- Debian:
sudo apt-get update
sudo apt-get install libssl-dev
-
- CentOS: پکیج libssl-dev به صورت پیشفرض نصب است. شما میتوانید با اجرای دستور yum info openssl این موضوع را بررسی کنید.
- Libssh2 و ssh2 را دانلود و کامپایل کنید:
cd /tmp
wget http://www.libssh2.org/download/libssh2-1.9.0.tar.gz
tar vxzf libssh2-1.9.0.tar.gz
cd libssh2-1.9.0
./configure
make
sudo make install
cd /tmp
wget http://pecl.php.net/get/ssh2-1.2.tgz
tar xzf ssh2-1.2.tgz
cd ssh2-1.2
phpize
./configure --with-ssh2
make
sudo make install
- فایل php.ini را اصلاح و خط زیر را به آن اضافه کنید:
...
extension=ssh2
...
Tidy
Tidy افزونهای لازم برای قابلیت پاکسازی و تعمیر Tidy HTML است که به شما اجازه میدهد علاوه بر پاکسازی و دستکاری اسناد HTML، درختِ سند را نیز مرور کنید. این ماژول به صورت پیشفرض فعال است. با فرمان زیر اطمینان حاصل کنید که ماژول فعال باشد:
sudo /opt/bitnami/php/bin/php -m | grep tidy
tidy
ZipArchive
ZipArchive یک کلاس از ماژول zip پیاچپی است. این ماژول به صورت پیشفرض فعال است. با فرمان زیر این موضوع را بررسی کنید:
sudo /opt/bitnami/php/bin/php -m | grep zip
zip
در ادامه اسکریپتی به نام sample.php آورده شده که لیست محتوای فایل زیپی به نام sample.zip را نمایش میدهد:
<?php
$za = new ZipArchive();
$za->open('sample.zip');
for( $i = 0; $i < $za->numFiles; $i++ ){
$stat = $za->statIndex( $i );
print_r( basename( $stat['name'] ) . PHP_EOL );
}
?>
برای استفاده از این اسکریپت یک فایل sample.zip بسازید و اسکریپت را در پنجرهی فرمان سرور، مطابق زیر، اجرا کنید:
/opt/bitnami/php/bin/php sample.php