GNU/Linux >> Belajar Linux >  >> Cent OS

Cara menginstal SuPHP di CentOS 7.2

SuPHP adalah modul apache yang memungkinkan PHP berada di bawah pengguna Linux yang berbeda dari pengguna apache. Ini meningkatkan keamanan situs web yang dihosting karena Anda dapat menjalankan skrip PHP dari setiap situs web di bawah pengguna yang berbeda. Tutorial ini menjelaskan penginstalan SuPHP pada centOS 7.2 dari sumber karena tidak ada paket SuPHP yang tersedia untuk CentOS 7.2.

Prasyarat

Anda harus memiliki server yang telah menginstal CentOS 7.2 atau yang lebih baru, saya akan menggunakan tutorial ini sebagai dasar untuk penyiapan saya. Pada bab pertama, saya akan menginstal server web Apache. Jika Anda sudah menginstal Apache, segera mulai dengan bab 2.

Server saya akan menggunakan nama host server1.example.com dan alamat IP 192.168.1.100. Ganti nilai ini dengan nama host dan IP server Anda di mana pun nilai tersebut muncul dalam tutorial berikut.

Saya sarankan untuk menginstal firewall untuk alasan keamanan, jika Anda belum menginstal firewalld, maka Anda dapat menginstalnya dengan perintah ini:

yum -y install firewalld

mulai firewall dan aktifkan untuk dimulai saat boot.

systemctl start firewalld.service
systemctl aktifkan firewalld.service

Selanjutnya, buka port SSH Anda untuk memastikan bahwa Anda dapat terhubung ke server dengan SSH.

firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload

1 Instalasi Apache 2.4 dan PHP 5

Apache dan PHP tersedia di repositori dasar CentOS, jadi kami dapat menginstal kedua paket perangkat lunak dengan yum.

Instal Apache dan paket pengembangan Aapache yang berisi file yang diperlukan untuk kompilasi SuPHP nanti.

yum -y install httpd httpd-devel

Instalasi PHP (Saya telah menambahkan beberapa modul PHP yang sering digunakan):

yum -y install php php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring curl

Kita harus mengaktifkan Apache untuk memulai saat boot dan memulai layanan.

systemctl start httpd.service
systemctl aktifkan httpd.service

Kita harus membuka port HTTP (80) dan HTTPS (443) agar server web dapat diakses dari komputer lain. Jalankan perintah berikut untuk mengonfigurasi firewall.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

2 Instalasi SuPHP

Kami akan mengkompilasi SuPHP dari sumber pada langkah ini. Instal alat pengembangan untuk menyiapkan rantai pembangunan yang diperlukan.

yum -y groupinstall 'Alat Pengembangan'

Dan wget untuk mengunduh file sumber dan editor nano.

yum -y install wget nano

Unduh arsip tar.gz sumber SuPHP dan buka kemasannya.

cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

CentOS 7 menggunakan Apache 2.4, jadi kita harus menambal suphp sebelum kita dapat mengkompilasinya dengan Apache. Patch diterapkan seperti ini:

wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 cd suphp-0.7.2
autoreconf -if
[[email protected] suphp-0.7.2]# autoreconf -if
libtoolize:meletakkan file tambahan di AC_CONFIG_AUX_DIR, `config'.
libtoolize:menyalin file `config/ltmain.sh'
libtoolize:Pertimbangkan untuk menambahkan `AC_CONFIG_MACRO_DIR([m4])' ke configure.ac dan
libtoolize:menjalankan kembali libtoolize, untuk mempertahankan makro libtool yang benar di dalam pohon.
libtoolize:Pertimbangkan untuk menambahkan `-I m4' ke ACLOCAL_AMFLAGS di Makefile.am.
configure.ac:9:peringatan:AM_INIT_AUTOMAKE:formulir dua dan tiga argumen tidak digunakan lagi. Untuk info lebih lanjut, lihat:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :menginstal 'config/config.guess'
configure.ac:24:menginstal 'config/config.sub'
configure.ac:9:menginstal 'config/install-sh'
configure .ac:9:menginstal 'config/missing'
src/Makefile.am:menginstal 'config/depcomp'
[[email protected] suphp-0.7.2]#

Perintah autoreconf menerapkan patch, sekarang kita dapat mengkonfigurasi sumber baru sebagai berikut. CATATAN: Perintah configure adalah satu baris!

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid -mode=owner --with-logfile=/var/log/httpd/suphp_log

Kemudian kompilasi dan instal SuPHP.

make
make install

Kemudian tambahkan modul suPHP ke konfigurasi Apache dengan menambahkan file suphp.conf baru.

nano /etc/httpd/conf.d/suphp.conf

Dengan konten berikut.

LoadModule suphp_module modules/mod_suphp.so

... dan buat file /etc/suphp.conf sebagai berikut:

nano /etc/suphp.conf
[global];Jalur ke logfilelogfile=/var/log/httpd/suphp.log;Loglevelloglevel=info;Pengguna Apache menjalankan aswebserver_user=apache;Jalur semua skrip harus indocroot=/;Jalur ke chroot() ke sebelum menjalankan skrip;chroot=/mychroot; Opsi keamananallow_file_group_writeable=trueallow_file_others_writeable=falseallow_directory_group_writeable=trueallow_directory_others_writeable=false;Periksa apakah skrip berada di dalam DOCUMENT_ROOTcheck_vhost_docroot=true;Kirim pesan kesalahan kecil ke browsererrors_to_browser=false:/PATH 0077; Minimum UIDmin_uid=100; Minimum GIDmin_gid=100[handlers];Handler for php-scriptsx-httpd-suphp="php:/usr/bin/php-cgi";Handler for CGI-scriptsx-suphp-cgi="execute:!self"

Terakhir, kita restart Apache:

systemctl restart httpd.service

3 Konfigurasi Apache Vhost dengan SuPHP

Dalam bab ini, saya akan menunjukkan bagaimana Anda dapat menambahkan host virtual di Apache yang menjalankan PHP di bawah pengguna yang terpisah. Saya akan menggunakan nama domain www.example.com untuk situs web dan PHP akan dijalankan sebagai pengguna dan grup "web1 ", root dokumen untuk situs web adalah /var/www/example.com

Pertama, tambahkan pengguna dan grup baru "web1".

penggunatambahkan web1

Tambahkan direktori root situs web.

mkdir /var/www/example.com
chown web1:web1 /var/www/example.com

Sekarang tambahkan file konfigurasi virtual host di direktori apache conf.d.

nano /etc/httpd/conf.d/example.com.conf

dengan konten ini:


DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [dilindungi email]


SetHandler Tidak Ada



suPHP_Engine pada

SetHandler x-httpd-suphp

suPHP_AddHandler x-httpd-suphp

Ganti nama domain dengan domain Anda sendiri di baris ServerName dan ServerAdmin.

Kemudian restart Apache untuk menerapkan perubahan konfigurasi.

systemctl restart httpd.service

4 Uji penyiapan SuPHP

Dalam bab ini, saya akan menunjukkan kepada Anda beberapa metode untuk menguji PHP di situs web ini. Pertama, saya akan membuat file yang menggunakan fungsi phpinfo() untuk menunjukkan apakah PHP berfungsi dan apakah sekarang berjalan dalam mode CGI.

Buat file info.php dengan nano:

nano /var/www/example.com/info.php

dan tambahkan baris berikut ke file baru:

phpinfo();

Kemudian ubah pemilik file menjadi pengguna dan grup web1.

chown web1:web1 /var/www/example.com/info.php

Buka URL file http://example.com/info.php di web browser, maka akan muncul halaman berikut.

Penting adalah ServerAPI baris yang menunjukkan CGI/FastCGI . yang menunjukkan bahwa PHP dijalankan melalui SuPHP dan bukan mod_php.

Sekarang saya akan menguji apakah PHP berjalan di bawah pengguna yang benar (web1). Bagaimana SuPHP mengetahui pengguna mana yang akan digunakan? SuPHP mengalihkan PHP ke pengguna yang memiliki skrip PHP, jadi penting bahwa semua file PHP di folder root web kami /var/www/example.com dimiliki oleh pengguna dan grup web1.

Jadi, bagaimana cara menguji apakah PHP menggunakan pengguna yang tepat? Salah satu caranya adalah dengan menjalankan perintah "whoami" yang mengembalikan nama pengguna.

Saya akan membuat skrip baru testuser.php di root situs web:

nano /var/www/example.com/testuser.php

dengan konten ini:

system('whoami');

Kemudian ubah pemilik file menjadi pengguna dan grup web1.

chown web1:web1 /var/www/example.com/testuser.php

Buka http://example.com/testuser.php di browser web, hasilnya adalah: web1

SuPHP dikonfigurasi dan mengeksekusi file PHP sebagai pengguna situs web ini. Hapus file pengujian dari direktori situs web dan mulai tambahkan skrip situs web Anda.

5 Unduh server CentOS 7.2 ini sebagai mesin virtual

Pengaturan ini tersedia sebagai unduhan mesin virtual dalam format ova/ovf (kompatibel dengan VMWare dan Virtualbox) untuk pelanggan howtoforge.

Detail login untuk VM

  • Kata sandi root adalah:howtoforge
  • Kata sandi pengguna "administrator" adalah:howtoforge

Harap ubah kedua sandi saat login pertama.

  • Alamat IP VM adalah 192.168.1.100

  • CentOS
  • Server Web Apache
  • SuPHP

Cent OS
  1. Cara Menginstal Apache Kafka di CentOS 8

  2. Cara Menginstal Apache Tomcat 8 di CentOS

  3. Cara Menginstal phpMyBackupPro di CentOS 6

  1. Cara Instal Apache Cassandra di CentOS 8

  2. Cara Menginstal Apache di CentOS 7

  3. Cara Menginstal Apache Maven di CentOS 7

  1. Cara Instal Apache Cassandra di CentOS 7

  2. Cara Menginstal Apache di CentOS 8

  3. Cara Menginstal Apache Maven di CentOS 8