GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat SuPHP na CentOS 7.2

SuPHP je modul Apache, který umožňuje PHP pracovat pod jiným uživatelem Linuxu, než je uživatel Apache. To zlepšuje bezpečnost hostovaných webových stránek, protože můžete spouštět PHP skripty každé webové stránky pod jiným uživatelem. Tento tutoriál popisuje instalaci SuPHP na centOS 7.2 ze zdroje, protože pro CentOS 7.2 nejsou k dispozici žádné balíčky SuPHP.

Předpoklady

Budete mít server s nainstalovaným CentOS 7.2 nebo novějším, tento návod použiji jako základ pro své nastavení. V první kapitole nainstaluji webový server Apache. Pokud již máte apache nainstalovaný, začněte hned s kapitolou 2.

Můj server bude používat název hostitele server1.example.com a adresu IP 192.168.1.100. Nahraďte tyto hodnoty názvem hostitele a IP vašeho serveru, kdekoli se v následujícím tutoriálu vyskytují.

Z bezpečnostních důvodů doporučuji mít nainstalovaný firewall, pokud ještě firewall nainstalovaný nemáte, můžete jej nainstalovat pomocí těchto příkazů:

yum -y install firewalld

spusťte bránu firewall a povolte její spuštění při spouštění.

systemctl spustit firewalld.service
systemctl povolit firewalld.service

Dále otevřete svůj port SSH, abyste se ujistili, že se budete moci připojit k serveru pomocí SSH.

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

1 Instalace Apache 2.4 a PHP 5

Apache a PHP jsou dostupné v základním úložišti CentOS, takže oba softwarové balíčky můžeme nainstalovat pomocí yum.

Nainstalujte Apache a vývojový balíček Aapache, který obsahuje soubory, které jsou později vyžadovány pro kompilaci SuPHP.

yum -y install httpd httpd-devel

Instalace PHP (přidal jsem několik často používaných modulů PHP):

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

Musíme povolit Apache, aby se spustil při bootování a spustil službu.

systemctl spustit httpd.service
systemctl povolit httpd.service

Aby byl webový server přístupný z jiných počítačů, musíme otevřít porty HTTP (80) a HTTPS (443). Spusťte následující příkazy pro konfiguraci brány firewall.

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

2 Instalace SuPHP

V tomto kroku zkompilujeme SuPHP ze zdroje. Nainstalujte vývojové nástroje pro nastavení požadovaného řetězce sestavování.

yum -y groupinstall 'Development Tools'

A wget si stáhne zdrojové soubory a nano editor.

yum -y install wget nano

Stáhněte si zdrojový archiv SuPHP tar.gz a rozbalte jej.

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 používá Apache 2.4, takže musíme opravit suphp, než jej budeme moci zkompilovat proti Apache. Oprava se aplikuje takto:

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:vkládání pomocných souborů do AC_CONFIG_AUX_DIR, `config'.
libtoolize:kopírování souboru `config/ltmain.sh'
libtoolize:Zvažte přidání `AC_CONFIG_MACRO_DIR([m4])' do configure.ac a
libtoolize:opětovné spuštění libtoolize, abyste zachovali správná makra libtool ve stromu.
libtoolize:Zvažte přidání `-I m4' do ACLOCAL_AMFLAGS v Makefile.am.
configure.ac:9:varování:AM_INIT_AUTOMAKE:formuláře se dvěma a třemi argumenty jsou zastaralé. Další informace najdete na:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :instalace 'config/config.guess'
configure.ac:24:instalace 'config/config.sub'
configure.ac:9:instalace 'config/install-sh'
configure .ac:9:instalace 'config/missing'
src/Makefile.am:instalace 'config/depcomp'
[[email protected] suphp-0.7.2]#

Příkaz autoreconf aplikuje opravu, nyní můžeme nakonfigurovat nový zdroj následovně. POZNÁMKA: Příkaz configure je jeden řádek!

./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

Poté zkompilujte a nainstalujte SuPHP.

provést
provést instalaci

Poté přidejte modul suPHP do konfigurace Apache přidáním nového souboru suphp.conf.

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

S následujícím obsahem.

LoadModule suphp_module modules/mod_suphp.so

... a vytvořte soubor /etc/suphp.conf následovně:

nano /etc/suphp.conf
[global];Cesta k logfilelogfile=/var/log/httpd/suphp.log;Loglevelloglevel=info;Uživatel Apache běží aswebserver_user=apache;Cesta všech skriptů musí být indocroot=/;Cesta k chroot() do před spuštěním skriptu;chroot=/mychroot; Security optionsallow_file_group_writeable=trueallow_file_others_writeable=falseallow_directory_group_writeable=trueallow_directory_others_writeable=false;Zkontrolujte, zda je skript uvnitř proměnné DOCUMENT_ROOTcheck_vhost_docroot=true;Odesílejte menší chybové zprávy do browseru/errors_to_browsk_proměnná do_prohlížeče/binuma. 0077; Minimální UIDmin_uid=100; Minimální GIDmin_gid=100[handlers];Handler pro php-scriptsx-httpd-suphp="php:/usr/bin/php-cgi";Handler pro CGI-scriptsx-suphp-cgi="execute:!self"

Nakonec restartujeme Apache:

systemctl restart httpd.service

3 Konfigurace Apache Vhost pomocí SuPHP

V této kapitole ukážu, jak můžete přidat virtuálního hostitele v Apache, na kterém běží PHP pod samostatným uživatelem. Použiji název domény www.example.com pro web a PHP poběží jako uživatel a skupina "web1 ", kořen dokumentu pro web je /var/www/example.com

Nejprve přidejte nového uživatele a skupinu „web1“.

useradd web1

Přidejte kořenový adresář webu.

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

Nyní přidejte konfigurační soubor virtuálního hostitele do adresáře apache conf.d.

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

s tímto obsahem:


DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [e-mail chráněný]


SetHandler Žádný



suPHP_Engine na

SetHandler x-httpd-suphp

suPHP_AddHandler x-httpd-suphp

Nahraďte název domény svou vlastní doménou v řádcích ServerName a ServerAdmin.

Poté restartujte apache, abyste použili změny konfigurace.

systemctl restart httpd.service

4 Otestujte nastavení SuPHP

V této kapitole vám ukážu několik metod testování PHP na tomto webu. Nejprve vytvořím soubor, který pomocí funkce phpinfo() ukáže, zda PHP funguje a zda nyní běží v režimu CGI.

Vytvořte soubor info.php pomocí nano:

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

a do nového souboru přidejte následující řádky:

phpinfo();

Poté změňte vlastníka souboru na uživatele a skupinu web1.

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

Otevřete URL souboru http://example.com/info.php ve webovém prohlížeči, zobrazí se následující stránka.

Důležité je ServerAPI řádek, který zobrazuje CGI/FastCGI . což ukazuje, že PHP se spouští přes SuPHP a ne pomocí mod_php.

Nyní otestuji, zda PHP běží pod správným uživatelem (web1). Jak SuPHP ví, kterého uživatele má používat? SuPHP přepne PHP na uživatele, který vlastní skript PHP, takže je důležité, aby všechny soubory PHP v naší webové kořenové složce /var/www/example.com vlastnil uživatel a skupina web1.

Jak tedy otestovat, zda PHP používá správného uživatele? Jedním ze způsobů je provést příkaz „whoami“, který vrátí uživatelské jméno.

Vytvořím nový skript testuser.php v kořenovém adresáři webu:

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

s tímto obsahem:

system('whoami');

Poté změňte vlastníka souboru na uživatele a skupinu web1.

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

Otevřete http://example.com/testuser.php ve webovém prohlížeči, výsledek bude : web1

SuPHP je nakonfigurován a spouští soubory PHP jako uživatel tohoto webu. Odstraňte testovací soubory z adresáře webu a začněte přidávat skripty webu.

5 Stáhnout tento server CentOS 7.2 jako virtuální počítač

Toto nastavení je dostupné jako stažení virtuálního stroje ve formátu ova/ovf (kompatibilní s VMWare a Virtualbox) pro předplatitele howtoforge.

Přihlašovací údaje pro virtuální počítač

  • Heslo uživatele root je:howtoforge
  • Heslo uživatele „administrátor“ je:howtoforge

Při prvním přihlášení změňte obě hesla.

  • IP adresa virtuálního počítače je 192.168.1.100

  • CentOS
  • Webový server Apache
  • SuPHP

Cent OS
  1. Jak nainstalovat Apache Kafka na CentOS 8

  2. Jak nainstalovat Apache Tomcat 8 na CentOS

  3. Jak nainstalovat phpMyBackupPro na CentOS 6

  1. Jak nainstalovat Apache Cassandra na CentOS 8

  2. Jak nainstalovat Apache na CentOS 7

  3. Jak nainstalovat Apache Maven na CentOS 7

  1. Jak nainstalovat Apache Cassandra na CentOS 7

  2. Jak nainstalovat Apache na CentOS 8

  3. Jak nainstalovat Apache Maven na CentOS 8