Saya memigrasikan server yang sangat lama (Debian etch) ke Debian Stretch dan setiap aplikasi yang dikembangkan memiliki masalah PHP, seperti yang diharapkan. Beberapa dapat diperbaiki, beberapa tidak dapat (karena beberapa situs drupal 6). Di masa depan aplikasi tunggal akan dilayani di bawah PHP7.0 tetapi sampai hari itu tiba saya perlu PHP5.3 melayani mereka.
Saya tahu bahwa Debian stretch memiliki semacam dukungan "asli" untuk versi PHP yang dapat diinstal bersama tetapi semua contoh yang saya temukan adalah dengan PHP5.6 (versi Jessie): https://pehapkari.cz/blog/2017/03/27 / multiple-php-versi-cara-mudah /
Juga, saya telah menemukan beberapa contoh PHP5.3 dan PHP5.4 atau PHP5.6 bekerja bersama di Debian Jessie, Wheezy, dll tetapi tidak untuk Debian Stretch (PHP7.0): /superuser/913792 / php-5-3-10-on-debian-jessie
Jadi, pertama, saya perlu tahu apakah mungkin untuk memiliki PHP7.0 dan PHP5.3 bekerja bersama pada apache2 pada Debian Stretch.
Kedua, saya perlu mencari tahu bagaimana ini bisa dilakukan .
Saya tidak sysadmin sehingga pengetahuan debian saya tumbuh hari demi hari dari awal.
Terima kasih.
Jawaban:
Saya menemukan masalah yang sama dan berhasil membuatnya bekerja.
Saya harus menginstal server dengan debian 9 / nginx / php5.4, jadi walaupun tidak sama persis dengan prasyarat Anda, saya menganggap solusinya mirip. Saya akan membuat daftar langkah-langkah yang saya ambil yang menyelesaikannya untuk saya.
Pada dasarnya, Anda perlu menginstal php dari sumber, dan ini menimbulkan masalah jika Anda memerlukan dukungan openssl (--with-openssl), karena PHP versi lama (<7.0) tidak mendukung openssl> = 1.1.0, yang merupakan default di debian 9. Jadi, Anda harus membangun versi openssl yang lebih lama (saya mengambil 1.0.1u).
Tapi mari kita instal beberapa dependensi terlebih dahulu.
Kemudian kita akan membangun openssl.
Sebagai reaksi berantai, Anda harus membangun libcurl dan libc-client (untuk dukungan imap) dengan openssl yang baru Anda buat. Kami akan mulai dengan libcurl.
Kemudian, libc-client. Saya benar-benar menggunakan sumber dari debian 8, karena itu termasuk beberapa tambalan. Build itu sendiri gagal tetapi masih menghasilkan c-client.a, yang saya butuhkan.
Dengan ini, saya memiliki semua yang saya butuhkan untuk membangun PHP5.4. Harap dicatat bahwa saya memiliki peringatan untuk binding postgresql dalam kompilasi (karena sistem vs versi lokal tidak cocok dengan versi openssl), jadi saya pikir Anda harus membuat libpq Anda sendiri jika Anda ingin menggunakannya.
Satu-satunya hal yang tersisa adalah pembuatan file php.ini dan php-fpm.conf, yang keduanya sepele, konfigurasi soket php-fpm dan pembuatan skrip init (ada banyak contoh online, saya tidak dapat memposting file lengkap di sini), dan konfigurasi server web Anda (fastcgi pada socket).
sumber
/usr/local/imap-2007f/ipopd/ipop2d.c
Satu minggu kemudian saya berhasil membuatnya bekerja tetapi dengan cara yang berbeda. Saya berhenti bermain-main dengan tuan rumah dan mulai belajar bagaimana Docker dapat menyelamatkan hidup saya.
Posting ini memberi saya kunci: Docker - Jalankan Apache pada host dan wadah untuk situs web yang berbeda
Baca iniciatic saya tentang buruh pelabuhan adalah ini: PHP Web Development dengan Docker
Meringkas, saya tidak perlu menginstal apache2.2 & PHP5.3 di server host saya, saya dapat memiliki wadah terisolasi di mana saya dapat menginstal apa pun yang saya butuhkan (biasanya satu layanan) dan melupakan kemungkinan tidak kompatibel dengan versi OS host. Docker mengelola semuanya. Jadi saya dapat memiliki satu wadah dengan apache 2.2 + PHP 5.3 karena akan berada dalam OS squeeze debian. Wadah lain dengan apache 2.2 + PHP 5.4 karena akan berada dalam Wheezy, yang lain dengan apache 2.4 + PHP7.0 seperti dalam peregangan dan sebagainya. Semua bekerja sebagai waktu yang sama dan melayani berbagai domain. Untuk mencapai yang terakhir, buat apache / nginx pada host agar berfungsi sebagai proxy terbalik yang mengarahkan ulang setiap domain ke wadah apache-php yang berbeda berkat pemetaan port docker. Anda bahkan tidak perlu memiliki apache / nginx pada host, bisa juga dalam wadah.
Cara buruh pelabuhan adalah memiliki masing-masing layanan (mikro) dalam sebuah wadah, sehingga Anda dapat memiliki mariaDB di wadah lain, dll.
Langkah-langkah saya (dirangkum): ( Saya tidak dapat memposting lebih dari ke tautan, ketika saya mendapatkan reputasi yang cukup, saya akan mengedit dan menambahkannya )
0 - Baca tentang buruh pelabuhan (semakin banyak semakin baik): cara membuat gambar dengan Dockerfile , praktik terbaik , jaringan di dalam buruh pelabuhan, ...
1 - Instal Docker: ikuti panduan resmi selalu.
2 - Buat dir dengan nama gambar masa depan Anda (misalnya / home / user / docker / images / apache22php53), di dalam buat Dockerfile Anda dan konfigurasi (virtualhost conf dalam hal ini) Dockerfile saya adalah:
Di dalam dir, letakkan file conf virtualhost di dalam path: conf / apache / virtualhosts /
3 - membangun gambar dengan (cd sebelumnya di dalam dir):
4 - luncurkan wadah dengan:
Docker akan memetakan (-p) 2253 port host ke 80 port container. Kami sedang memasang (-v) juga root dokumen host kami (/ var / www / html) di root dokumen apache-container (dalam squeeze adalah / var / www). Pengaturan are juga nama wadah (--name).
5 - ssh ke wadah dengan:
dan mulai apache jika diperlukan (seperti dalam kasus saya). "keluar" untuk kembali ke host cli.
6 - navigasikan ke ... yourvhostdomain.com:253 dan Anda akan melihat apache Anda berjalan dengan PHP5.3 dimuat.
Ini adalah dasar-dasarnya. Setelah itu Anda akan belajar tentang cara me-mount data host (www, database, dll) di dalam kontainer, bagaimana kontainer dapat berkomunikasi di antara mereka dan dengan host (IP privat dalam jaringan buruh pelabuhan), cara menggunakan komposisi buruh pelabuhan untuk mengatur beberapa wadah sekaligus (web, database, dll), membalikkan proxy untuk beberapa webserver wadah, dll.
sumber