GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7.2にSuPHPをインストールする方法

SuPHPは、PHPがapacheユーザーとは異なるLinuxユーザーの下にいることを可能にするapacheモジュールです。これにより、各WebサイトのPHPスクリプトを異なるユーザーで実行できるため、ホストされているWebサイトのセキュリティが向上します。このチュートリアルでは、CentOS 7.2で使用できるSuPHPパッケージがないため、ソースからのCentOS7.2へのSuPHPのインストールについて説明します。

前提条件

CentOS 7.2以降がインストールされているサーバーが必要です。このチュートリアルを、セットアップの基礎として使用します。最初の章では、ApacheWebサーバーをインストールします。すでにapacheをインストールしている場合は、すぐに第2章から始めてください。

私のサーバーは、ホスト名server1.example.comとIPアドレス192.168.1.100を使用します。これらの値は、次のチュートリアルで発生するサーバーのホスト名とIPに置き換えてください。

セキュリティ上の理由からファイアウォールをインストールすることをお勧めします。firewalldをまだインストールしていない場合は、次のコマンドを使用してインストールできます。

yum -y install firewalld

ファイアウォールを起動し、起動時にファイアウォールを起動できるようにします。

systemctl start firewalld.service
systemctl enable firewalld.service

次に、SSHポートを開いて、SSHでサーバーに接続できることを確認します。

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

1Apache2.4およびPHP5のインストール

ApacheとPHPはCentOSベースリポジトリで利用できるため、yumを使用して両方のソフトウェアパッケージをインストールできます。

Apacheと、後でSuPHPのコンパイルに必要なファイルを含むAapache開発パッケージをインストールします。

yum -y install httpd httpd-devel

PHPのインストール(頻繁に使用するPHPモジュールをいくつか追加しました):

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

起動時にApacheを起動して、サービスを開始できるようにする必要があります。

systemctl start httpd.service
systemctl enable httpd.service

他のパソコンからウェブサーバーにアクセスできるようにするには、HTTP(80)ポートとHTTPS(443)ポートを開く必要があります。次のコマンドを実行してファイアウォールを構成します。

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

2SuPHPのインストール

このステップでは、ソースからSuPHPをコンパイルします。開発ツールをインストールして、必要なビルドチェーンをセットアップします。

yum -y groupinstall 'Development Tools'

そして、ソースファイルとnanoエディターをダウンロードしてください。

yum -y install wget nano

SuPHPソースのtar.gzアーカイブをダウンロードして解凍します。

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

CentOS7はApache2.4を使用するため、Apacheに対してコンパイルする前にsuphpにパッチを適用する必要があります。パッチは次のように適用されます:

wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
[[email protected] suphp-0.7.2]#autoreconf -if
libtoolize:補助ファイルをAC_CONFIG_AUX_DIR、 `config'に配置します。
libtoolize:ファイル` config /ltmain.sh'をコピーします
libtoolize:configure.acに `AC_CONFIG_MACRO_DIR([m4])'を追加することを検討してください。
libtoolize:libtoolizeを再実行して、正しいlibtoolマクロをツリー内に保持してください。
libtoolize:` -Im4'をに追加することを検討してください。 Makefile.amのACLOCAL_AMFLAGS。
configure.ac:9:警告:AM_INIT_AUTOMAKE:2引数および3引数のフォームは非推奨です。詳細については、以下を参照してください:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :インストール'config / config.guess'
configure.ac:24:インストール'config / config.sub'
configure.ac:9:インストール'config / install-sh'
configure .ac:9:'config/missing'のインストール
src/ Makefile.am:'config/depcomp'のインストール
[[emailprotected] suphp-0.7.2]#

autoreconfコマンドがパッチを適用するので、次のように新しいソースを構成できます。 注: configureコマンドは1行です!

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

次に、SuPHPをコンパイルしてインストールします。

make
make install

次に、新しいsuphp.confファイルを追加して、suPHPモジュールをApache構成に追加します。

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

次の内容で。

LoadModule suphp_module modules/mod_suphp.so

...そして次のようにファイル/etc/suphp.confを作成します:

nano /etc/suphp.conf
[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"
>

最後に、Apacheを再起動します:

systemctl restart httpd.service

3SuPHPを使用してApache仮想ホストを構成する

この章では、別のユーザーの下でPHPを実行するApacheに仮想ホストを追加する方法を示します。ドメイン名を使用しますwww.example.com ウェブサイトとPHPは、ユーザーおよびグループ「 web1」として実行されます。 "、ウェブサイトのドキュメントルートは/var/www/example.com

まず、新しいユーザーとグループ「web1」を追加します。

useradd web1

Webサイトのルートディレクトリを追加します。

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

次に、仮想ホスト構成ファイルをapacheconf.dディレクトリーに追加します。

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

このコンテンツで:

<VirtualHost *>
DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [email protected]

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler None
</FilesMatch>

<IfModule mod_suphp.c>
suPHP_Engine on
<FilesMatch "\.php[345]?$">
SetHandler x-httpd-suphp
</FilesMatch>
suPHP_AddHandler x-httpd-suphp
</IfModule>
</VirtualHost>

ServerName行とServerAdmin行でドメイン名を独自のドメインに置き換えます。

次に、apacheを再起動して、構成の変更を適用します。

systemctl restart httpd.service

4SuPHPセットアップをテストします

この章では、このWebサイトでPHPをテストするためのいくつかの方法を紹介します。まず、phpinfo()関数を使用して、PHPが機能しているかどうか、およびPHPがCGIモードで実行されているかどうかを示すファイルを作成します。

nanoでinfo.phpファイルを作成します:

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

新しいファイルに次の行を追加します。

<?php
phpinfo();

次に、ファイルの所有者をweb1ユーザーとグループに変更します。

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

ファイルhttp://example.com/info.phpのURLをWebブラウザで開くと、次のページが表示されます。

重要なのはServerAPI CGI / FastCGIを示す行 。これは、PHPがmod_phpではなくSuPHPを介して実行されていることを示しています。

次に、PHPが正しいユーザー(web1)で実行されるかどうかをテストします。 SuPHPはどのユーザーを使用するかをどのように知るのですか? SuPHPはPHPをPHPスクリプトを所有するユーザーに切り替えるため、Webルートフォルダー/var/www/example.com内のすべてのPHPファイルがweb1ユーザーとグループによって所有されていることが重要です。

では、PHPが適切なユーザーを使用しているかどうかをテストするにはどうすればよいでしょうか。 1つの方法は、ユーザー名を返す「whoami」コマンドを実行することです。

Webサイトのルートに新しいスクリプトtestuser.phpを作成します:

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

このコンテンツで:

<?php
system('whoami');

次に、ファイルの所有者をweb1ユーザーとグループに変更します。

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

ウェブブラウザでhttp://example.com/testuser.phpを開くと、結果は次のようになります。web1

SuPHPは、このWebサイトのユーザーとして構成され、PHPファイルを実行します。 Webサイトディレクトリからテストファイルを削除し、Webサイトスクリプトの追加を開始します。

5このCentOS7.2サーバーを仮想マシンとしてダウンロード

このセットアップは、howtoforgeサブスクライバー向けにova / ovf形式(VMWareおよびVirtualboxと互換性があります)の仮想マシンのダウンロードとして利用できます。

VMのログインの詳細

  • ルートパスワードは:howtoforge
  • 「管理者」ユーザーのパスワードは次のとおりです:howtoforge

最初のログイン時に両方のパスワードを変更してください。

  • VMのIPアドレスは192.168.1.100です

  • CentOS
  • ApacheWebサーバー
  • SuPHP

Cent OS
  1. CentOS8にApacheKafkaをインストールする方法

  2. CentOSにApacheTomcat8をインストールする方法

  3. CentOS6にphpMyBackupProをインストールする方法

  1. CentOS8にApacheCassandraをインストールする方法

  2. CentOS7にApacheをインストールする方法

  3. CentOS7にApacheMavenをインストールする方法

  1. CentOS7にApacheCassandraをインストールする方法

  2. CentOS8にApacheをインストールする方法

  3. CentOS8にApacheMavenをインストールする方法