• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在CentOS 7.2上安装SuPHP的详细方法

    CentOS 7上PHP默认是以apache或者nobody的身份运行的,这种方式下由于PHP运行需要的权限比较大,会有安全隐患,还可能会受到服务器其他用户影响。

    SuPHP是一个apache模块,允许PHP在与Apache用户不同的Linux用户之下。 这可以提高托管网站的安全性,因为您可以在其他用户下运行每个网站的PHP脚本。 本教程介绍了从源代码安装的CentOS 7.2上的SuPHP,因为CentOS 7.2没有可用的SuPHP软件包。

    先决条件

    您将安装CentOS 7.2或更高版本的服务器,我将使用本教程作为我的设置的基础。 在第一章中,我将安装Apache Web服务器。 如果您已经安装了apache,请立即从第2章开始。

    我的服务器将使用hostname server1.example.com和IP地址192.168.1.100。 在以下教程中将这些值替换为服务器的主机名和IP地址。

    为安全起见,建议安装防火墙,如果您还没有安装防火墙,可以使用以下命令进行安装:

    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

    1、安装Apache 2.4和PHP 5

    Apache和PHP在CentOS基础存储库中可用,因此我们可以使用yum安装这两个软件包。

    安装Apache和Aapache开发包,其中包含以后的SuPHP编译所需的文件。

    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)端口,使得Web服务器可以从其他计算机访问。 执行以下命令配置防火墙。

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

    2、安装SuPHP

    在此步骤中,我们将从源代码编译SuPHP。 安装开发工具来设置所需的构建链。

    yum -y groupinstall 'Development Tools'

    并且wget可以下载源文件和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

    CentOS 7使用Apache 2.4,所以我们必须补丁suphp,然后我们可以编译它aganst Apache。 补丁应用如下:

    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

    [root @ server1 suphp-0.7.2]#autoreconf -if
    libtoolize:将辅助文件放在AC_CONFIG_AUX_DIR,`config'中。
    libtoolize:复制文件`config / ltmain.sh'
    libtoolize:考虑将`AC_CONFIG_MACRO_DIR([m4])'添加到configure.ac和
    libtoolize:重新运行libtoolize,以保持正确的libtool宏in-tree。
    libtoolize:考虑在Makefile.am中的ACLOCAL_AMFLAGS中添加`-I m4'。
    configure.ac:9:warning:AM_INIT_AUTOMAKE:不支持双参数和三参数形式。 有关更多信息,请参阅:
    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'
    [root @ server1 suphp-0.7.2]#

    autoreconf命令应用补丁,现在我们可以如下配置新的源。 注意: configure命令是一行!

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

    3、使用SuPHP配置Apache Vhost

    在本章中,我将介绍如何在单独的用户下运行PHP的apache中添加虚拟主机。 我将使用域名www.example.com作为网站,PHP将作为用户和组“ web1 ”运行,网站的文档根目录是/var/www/example.com

    首先,添加一个新的用户和组“web1”。

    useradd web1

    添加网站根目录。

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

    现在在apache conf.d目录中添加虚拟主机配置文件。

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

    为此内容:

    <VirtualHost *>
     DocumentRoot /var/www/example.com
     ServerName example.com
     ServerAdmin webmaster@example.com
     
     <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

    4、测试SuPHP设置

    在本章中,我将向您展示在本网站测试PHP的几种方法。 首先,我将创建一个使用phpinfo()函数来显示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,它将显示以下页面。

    重要的是显示CGI / FastCGI的ServerAPI行。 这表明PHP是通过SuPHP而不是mod_php运行的。

    现在我将测试PHP是否运行在正确的用户(web1)下。 SuPHP如何知道使用哪个用户? SuPHP将PHP切换到拥有PHP脚本的用户,因此我们的Web根文件夹/var/www/example.com中的所有PHP文件都由web1用户和组拥有非常重要。

    那么,如何测试PHP是否使用正确的用户? 一种方法是执行返回用户名的“whoami”命令。

    我将在网站root中创建一个新脚本testuser.php:

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

    与此内容:

    <?php
    system('whoami');

    然后将文件的所有者更改为web1用户和组。

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

    在web浏览器中打开http://example.com/testuser.php,结果应该是: web1

    SuPHP被配置并作为本网站的用户执行PHP文件。 从网站目录中删除测试文件,并开始添加您的网站脚本。

    5、将此CentOS 7.2服务器下载为虚拟机

    此设置可用于以ova / ovf格式(与VMWare和Virtualbox兼容)的虚拟机下载,以了解用户的身份。

    VM的登录详细信息

    root密码是:howtoing
    “管理员”用户的密码是:howtoing
    请在第一次登录时更改两个密码。

    虚拟机的IP地址为192.168.1.100

    6、链接

    CentOS

    Apache Web服务器

    SuPHP

    上一篇:解决linux ftp匿名上传、下载开机自启问题
    下一篇:CentOS 7上为PHP5安装suPHP的方法(彭哥)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在CentOS 7.2上安装SuPHP的详细方法 在,CentOS,7.2,上,安装,SuPHP,