Membina php 7 daripada sumber. Pemasangan pada sistem Unix. Perisian yang Diperlukan

Php ialah bahasa pengaturcaraan web dan pembangunan laman web yang popular. Dengan setiap versi baharu, bahasa itu menjadi semakin menarik, semuanya bermula dengan bahasa pengaturcaraan berorientasikan fungsi mudah yang sesuai hanya untuk mencipta halaman web, dan akhirnya Php 5 kini diletakkan sebagai bahasa skrip berorientasikan objektif berciri penuh. php 7 membawa banyak penambahbaikan dan pembaikan yang menarik, seperti pengoptimuman prestasi keseluruhan dan penambahan berbilang benang, tetapi hari ini kita tidak bercakap tentang itu; anda boleh mendapatkan ulasan ciri php 7 di internet.

Arahan ini akan menerangkan pemasangan php 7 pada Linux; ia bertujuan terutamanya untuk pengguna Ubuntu, tetapi juga sesuai untuk pengedaran lain. Kami akan melihat pemasangan daripada PPA pada Ubuntu dan membina daripada sumber.

Repositori PPA membenarkan pembangun pihak ketiga untuk mengedarkan pakej perisian mereka, memintas repositori rasmi Ubuntu. Biasanya anda boleh mendapatkan program versi terbaharu atau beta daripada PPA. Selepas keluaran rasmi php 7, PPA telah dibuat untuk Ubuntu. Mari tambahkannya ke sistem:

$ sudo add-apt-repository ppa:ondrej/php-7.0

sudo apt-get kemas kini

Dan anda boleh memasang:

sudo apt-get install php7.0

Untuk menyokong mysql anda perlu memasang perpustakaan:

sudo apt-get install php7.0-mysql

Untuk memasang php sebagai modul fpm, jalankan:

sudo apt-get install php7.0-fpm

Membina php 7 daripada sumber

Mula-mula, mari kita pasang alat dan perpustakaan yang kita perlukan:

sudo apt-get install git autoconf bison libxml2 libxml2-dev opessllibcurl4-openssl-dev libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libmcrypt-dev-dev libmysqlibps-dev

Mari buat folder yang berfungsi:

Mari kita menyegerakkan sumber php dari repositori git:

git klon https://git.php.net/repository/php-src.git

Kami meneruskan terus ke pemasangan dan pemasangan, program akan dipasang dalam folder semasa - ~/tmp:

cd php-src
$ sudo ./buildconf
$sudo./configure\
--enable-mbstring\
--dayakan-zip\
--enable-bcmath\
--enable-pcntl\
--enable-ftp\
--enable-exif \
--dayakan-kalendar\
--enable-sysvmsg\
--enable-sysvsem\
--enable-sysvshm\
--dayakan-wddx\
--with-curl\
--dengan-mcrypt\
--with-iconv\
--dengan-gmp\
--with-pspell\
--dengan-gd\
--with-jpeg-dir=/usr\
--with-png-dir=/usr\
--with-zlib-dir=/usr\
--with-xpm-dir=/usr\
--with-freetype-dir=/usr\
--with-t1lib=/usr\
--enable-gd-native-ttf\
--dayakan-gd-jis-conv\
--with-openssl\
--with-mysql=/usr \
--with-pdo-mysql=/usr \
--with-gettext=/usr\
--with-zlib=/usr\
--with-bz2=/usr\
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config
$ buat

Buat folder untuk fail konfigurasi:

mkdir $HOME/tmp/usr/etc

Buat fail konfigurasi php dengan kandungan berikut:

nano $HOME/tmp/usr/etc/php.ini

max_execution_time=600
had_memori=128J
error_reporting=0
display_errors=0
log_errors=0
user_ini.filename=
realpath_cache_size=2M
cgi.check_shebang_line=0
zend_extension=opcache.so
opcache.enable_cli=1
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.use_cwd=1
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.memory_consumption=128
opcache.consistency_checks=0

Simpan, dan php 7 dipasang dan dikonfigurasikan, anda boleh meneruskan ujian.

Menguji

Mari lihat versi php:

Atau jalankan skrip:

nano ~/tmp/script.php

sapi/cli/php ~/tmp/script.php

Dan akhirnya penanda aras:

sapi/cli/php Zend/bench.php
$ sapi/cli/php Zend/micro_bench.php

Selalunya pakej yang diperlukan hanya boleh didapati dalam bentuk sumber; artikel ini menerangkan kaedah untuk memasang pakej daripada kod sumber.

Membuka kotak

Program biasanya diedarkan dalam arkib berpakej, ini adalah fail dengan sambungan

.tar.gz (kadang-kadang .tgz) .tar.bz2

Anda perlu memahami perbezaan antara pengarkib dan pembungkus.

Program ini digunakan untuk mengarkib direktori dan fail tar; hasil kerjanya ialah fail dengan sambungan .tar. Secara kasarnya, ini adalah salinan sistem fail - direktori dan fail dengan atribut dan hak aksesnya, diletakkan dalam satu fail.

Saiz fail ini akan lebih besar sedikit daripada jumlah saiz fail yang diarkibkan. Oleh itu (atau mungkin atas sebab lain) mereka menggunakan pembungkus - program yang membolehkan anda mengurangkan saiz fail tanpa kehilangan data.

Program tar boleh bongkar, jadi tak perlu call gunzip, atau anda boleh memberitahu program tersebut tar bahawa fail mesti dibongkar dahulu. Sebagai contoh, arahan

tar -xvf< some_app_name>.tar.gz

akan segera membongkar dan membuka zip. Perbezaan antara fail dan sambungan

.tar.gz

.tar.bz2

cuma pembungkus yang berbeza digunakan, program itu tar menentukan kaedah mampatan secara automatik dan tiada pilihan tambahan diperlukan dalam kes ini.

Selepas membongkar, anda perlu pergi ke direktori yang terhasil; semua arahan yang diterangkan di bawah dilaksanakan dalam direktori dengan kod sumber pakej.

CD< имя_пакета>*

Membina pakej

Untuk membina program dalam GNU/Linux, anda menggunakan (kebanyakannya) program buat, yang menjalankan arahan daripada Makefile, tetapi memandangkan terdapat banyak pengedaran GNU/Linux, dan semuanya berbeza, untuk membina program, untuk setiap pengedaran anda perlu menentukan secara berasingan laluan di mana perpustakaan dan fail pengepala berada. Pengaturcara tidak boleh mengkaji setiap pengedaran dan mencipta secara berasingan untuk setiap pengedaran Makefile. Oleh itu, mereka menghasilkan konfigurator yang "mengkaji" sistem dan, mengikut pengetahuan yang diperoleh, mencipta Makefile. Tetapi mereka tidak berhenti pada configurator dan muncul dengan configurators configurators...di situlah mereka berhenti

Untuk membina kita memerlukan penyusun: ia dinyatakan dalam kebergantungan pakej bina-penting, jadi sudah cukup untuk memasangnya dengan semua kebergantungan. Masih diperlukan autoconf Dan automake.

Jadi, untuk membina sesuatu daripada sumber, anda perlu membina configurator terlebih dahulu; cara membina configurator diterangkan dalam fail configure.in. Untuk membina configurator anda perlu jalankan

./ bootstrap ./ autogen.sh

Jika tiada skrip sedemikian dalam arkib, anda boleh menjalankan arahan berikut mengikut urutan:

autoheader aclocal automake --gnu --tambah-tiada --salin --autokonf asing -f -Wall

Semua arahan ini menggunakan fail configure.in. Selepas melaksanakan arahan ini, fail akan dibuat mengkonfigurasi. Selepas ini, anda perlu menjalankan configurator untuk memeriksa kehadiran semua kebergantungan, serta memasang pilihan binaan tambahan (jika boleh) dan melihat hasil pemasangan (pilihan - mungkin tidak hadir)

./ konfigurasi

Konfigurator akan membina Makefile berdasarkan pengetahuan yang diperoleh dan fail makefile.am. Anda boleh menghantar kepada configurator pilihan yang disediakan dalam sumber program, yang membolehkan anda mendayakan/melumpuhkan ciri program tertentu; biasanya anda boleh mengetahui tentangnya dengan arahan

./ configure --help

Terdapat juga satu set pilihan standard, seperti

Awalan=

Yang menentukan direktori mana yang hendak digunakan untuk pemasangan. Biasanya untuk Ubuntu

--prefix =/ usr --prefix =/ usr/ local

TANPA tetak di hujungnya! Kini anda boleh memulakan proses membina program itu sendiri dengan arahan

buat

Keistimewaan pengguna biasa sudah memadai untuk dibina. Penghujung binaan boleh dianggap sebagai saat apabila arahan dalam konsol berhenti dilaksanakan "secara rawak" dan tiada perkataan kesilapan. Sekarang semuanya disusun dan sedia untuk dipasang.

Pemasangan

Usaha yang dibelanjakan untuk pemasangan yang betul akan membuahkan hasil pada masa hadapan jika perisian yang dipasang dialih keluar atau dikemas kini.

Pemasangan yang betul (Pilihan No. 1)

Pemasangan menggunakan utiliti semak pemasangan. Untuk memasang:

sudo apt-get install checkinstall

Kelemahan kaedah ini: semak pemasangan tidak memahami semua sumber, kerana pengarang program boleh menulis skrip pemasangan khas dan semak pemasangan tidak akan memahami mereka.

Untuk membuat dan memasang pakej deb yang anda perlu jalankan

sudo checkinstall

Pemasangan yang betul (Pilihan No. 2)

Cepat buat pakej deb secara manual.

Perbezaan utama daripada kaedah sebelumnya ialah dalam kes ini anda membuat pakej secara manual dan menjejaki semua perubahan yang anda buat. Kaedah ini juga sesuai dengan anda jika sumber tidak menyokong membina pakej dengan semak pemasangan.

    Kami memasang dalam direktori sementara, di mana kami mendapat keseluruhan set fail yang dipasang:

fakeroot membuat pemasangan DESTDIR=`pwd`/tempinstall

    Mari buat direktori DEBIAN dalam "akar pakej" dan tambahkan senarai semua fail yang harus masuk ke /etc ke dalam DEBIAN/conffiles:

cd tempinstall mkdir DEBIAN cari dll | sed "s/^/\//" > DEBIAN/ conffiles

    Kemudian kami mencipta fail DEBIAN/kawalan dengan kandungan berikut:

Pakej: package_name Versi: 1.2.3 Architecture: amd64/i386/armel/all Penyelenggara: Anda boleh masukkan nama anda, anda boleh sampah, tetapi jika anda biarkan kosong, maka dpkg akan bersumpah Bergantung: Di sini anda boleh memasukkan senarai pakej dipisahkan dengan koma. Keutamaan: pilihan Penerangan: Anda juga perlu memasukkan sesuatu supaya tiada amaran

    Jika perlu, anda juga boleh membuat skrip preinst, postinst, prerm dan postrm di sana.

    Kami mencipta pakej deb, yang kami laksanakan:

dpkg -b tempinstall

    Outputnya ialah tempinstall.deb, yang kami pasang

sudo dpkg -i tempinstall.deb

Pemasangan (pilihan No. 3)

Pemasangan yang salah

Kelemahan kaedah ini ialah jika anda memasang terus melalui make install, kemungkinan besar anda tidak akan dapat mengalih keluar atau mengemas kini pakej seperti biasa. Selain itu, memasang versi baharu berbanding versi lama kemungkinan besar akan menimpa perubahan anda dalam konfigurasi. make install melakukan apa yang disuruh lakukan - ia memasang fail di tempat yang betul, mengabaikan hakikat bahawa sesuatu sudah ada. Selepas proses ini, adalah mustahil untuk mendapatkan sebarang maklumat tentang apa yang diletakkan di mana dan dalam bentuk yang boleh dihadam. Kadangkala, sudah tentu, Makefile menyokong tindakan nyahpasang, tetapi ini tidak begitu biasa, dan ia bukan fakta bahawa ia berfungsi dengan betul. Di samping itu, anda perlu menyimpan pokok sumber yang tidak dibungkus dan membina peraturan untuk menyahpasang.

Untuk memasang anda perlu lakukan

sudo buat pemasangan

Untuk mengalih keluar pakej yang dipasang menggunakan kaedah ini, anda mesti melaksanakannya dalam direktori akar sumber program (di mana anda menjalankan make install).

sudo buat nyahpasang

Kesilapan

Selalunya pada peringkat konfigurasi, configurator melaporkan bahawa perpustakaan tertentu tiada. Nama perpustakaan yang dilaporkan tidak selalu sepadan dengan nama pakej dalam Ubuntu. Daripada pengalaman saya sendiri, saya boleh menasihati anda untuk mencari Synaptic untuk pakej yang diperlukan, tidak termasuk awalan lib. Jika anda menemui beberapa pakej yang berbeza dengan awalan -dev dalam nama, maka anda perlu memasang pakej -dev (biasanya ia juga memerlukan pakej bukan dev). Anda juga boleh mencari menggunakan http://packages.ubuntu.com/ dengan memasukkan nama perpustakaan ke dalam carian kandungan pakej, begitu juga, jika anda menemui dev dan bukan dev, anda memerlukan kedua-duanya. Baiklah, atau cari sahaja di Google.

Perisian yang Diperlukan

Pakej dengan mm pada akhir huraian ialah pakej untuk program C++. Senarai untuk bmpx, tetapi sesuai untuk hampir semua program GTK2/Gnome. Jadi jika anda tidak dapat memasangnya, lihat senarai ini dan bandingkan dengan apa yang telah anda pasang.

Susun:Masa jalan:
Xlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
Gladelibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
Alsalibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-storage1
Gaminlibgamin-devlibgamin0
Neonlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
Startup-Notifylibstartup-notification0-devlibstartup-notification0
Galakanlibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

Dalam tutorial ini kami akan menunjukkan kepada anda cara memasang PHP 7 pada Linux VPS. PHP ialah bahasa skrip sebelah pelayan yang digunakan untuk pembangunan web.

PHP 7 datang dengan banyak ciri baharu dan dipertingkatkan. Salah satu yang paling ketara ialah versi baharu Zend Engine. Di samping itu, terdapat peningkatan penting lain yang meningkatkan prestasi dan mengurangkan penggunaan memori dengan ketara. Jadi PHP 7 boleh dua kali lebih pantas daripada PHP 5.6.

Untuk memasang PHP 7 pada VPS Ubuntu, anda perlu log masuk ke pelayan anda melalui . Setelah anda log masuk, kemas kini semua perisian sistem kepada versi terkini menggunakan arahan berikut:

Sudo apt-get update && sudo apt-get -y upgrade

Juga, pastikan tempat sistem anda ditetapkan kepada UTF-8. PHP 7 PPA untuk Ubuntu disokong oleh Ondřej Suri. Kami akan menggunakan PPA ini untuk memasang PHP 7 pada Ubuntu 14.04.

Tambahkan PPA ke senarai sumber APT:

Sudo add-apt-repository ppa:ondrej/php-7.0

Jika anda menerima ralat bahawa arahan 'add-apt-repository' tidak dapat ditemui, kemungkinan besar sistem anda tidak disertakan dalam pakej 'software-properties-common'. Teruskan dan pasang pakej yang diperlukan.

Sudo apt-get install software-properties-common

Setelah pemasangan selesai, ulangi arahan untuk menambah PHP 7 PPA ke senarai sumber APT anda.

Kemas kini cache pakej tempatan menggunakan arahan:

Sudo apt-get kemas kini

Ini mungkin mengambil masa beberapa minit, dan setelah selesai anda akan bersedia untuk memasang pakej PHP 7.

Sudo apt-get install php7.0

Untuk memastikan bahawa versi stabil terkini PHP 7 dipasang pada pelayan anda, anda boleh menjalankan arahan:

Anda sepatutnya mendapat sesuatu seperti ini:

PHP 7.0.1-1+deb.sury.org~trusty+2 (cli) (NTS) Hak Cipta (c) 1997-2015 PHP Group Zend Engine v3.0.0, Hak Cipta (c) 1998-2015 Zend Technologies dengan Zend OPcache v7.0.6-dev, Hak Cipta (c) 1999-2015, oleh Zend Technologies

Untuk memasang modul PHP 7 tambahan, contohnya 'php7.0-MySQL', anda boleh menggunakan arahan di bawah:

Sudo apt-get install php7.0-mysql

Untuk mencari modul PHP7 yang tersedia, jalankan arahan berikut:

Sudo apt-cache carian php7

Jika anda ingin menguji cara PHP 7 berfungsi pada VPS Ubuntu anda, anda boleh membuat skrip ujian. Navigasi ke direktori akar dokumen pelayan web anda:

Cd /var/www/html/

Buat fail ujian:

Nano info.php

Masukkan kandungan berikut:

Simpan fail dan tutupnya. Perubahan hak:

Chown www-data: info.php

Kini anda boleh menggunakan alamat IP pelayan anda untuk mengakses fail. Buka pelayar web yang anda gunakan dan ikuti pautan:

Http://192.168.1.111/info.php

Alamat IP 192.168.1.111 digunakan untuk tujuan ujian, jadi pastikan anda menggunakan alamat IP pelayan anda. Anda seharusnya melihat halaman dengan maklumat PHP semasa seperti versi, pilihan kompilasi, sambungan, dsb.

PS. Jika anda menyukai siaran ini, sila kongsi dengan rakan anda di media sosial menggunakan butang di sebelah kiri siaran atau tinggalkan komen di bawah. Terima kasih terlebih dahulu.