安装、配置php
一、安装、配置apache、php
下载2.x版本的Apache,并且根据上文选择合适版本的 PHP 下载。本向导仅包含最基础的内容,只能让 Apache 2.x 和 PHP 能够正常工作。
“NN”替换为相应的版本号。
1.从上面列出的地方获取 Apache 源码包,然后解压:
gzip -d httpd-2_x_NN.tar.gz tar -xf httpd-2_x_NN.tar
2.同样,获取 PHP 源码包并解压:
gunzip php-NN.tar.gz tar -xf php-NN.tar
3.编译并安装 Apache。请参考 Apache 安装文档了解编译 Apache 的更多细节。
cd httpd-2_x_NN ./configure --enable-so make make install
4.现在已经将 Apache 2.x.NN 安装在 /usr/local/apache2。本安装支持可装载模块 和标准的 MPM prefork。之后,可以使用如下命令启动 Apache 服务器:
/usr/local/apache2/bin/apachectl start
如果成功,可以停止 Apache 服务器并继续安装 PHP:
/usr/local/apache2/bin/apachectl stop
5.现在需要配置并编译 PHP。
在这里可以用各种各样的参数来自定义 PHP,例如启动哪些扩展功能包的支持等。
用 ./configure --help 命令可以列出当前可用的所有参数。
在此例中,将给出一个在有 MySQL 支持的 Apache 2 上进行配置的范例。
如果按照上面的说明从源代码编译了 Apache,下面的例子会正确匹配 apxs 的路径。
如果通过其他方式安装了 Apache,需要相应的调整 apxs 的路径。
注意,在有些发行版本中,可能将 apxs 更名为 apxs2。
cd ../php-NN ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql make make install
如果决定在安装后改变配置选项,只需重复最后的三步 configure,make,以及 make install,然后需要重新启动 Apache 使新模块生效。Apache 不需要重新编译。
请注意,除非明确有提示,否则“make install”命令将安装 PEAR、各种 PHP 工具诸如 phpize,并安装 PHP CLI 等等。
6.配置 php.ini
cp php.ini-development /usr/local/lib/php.ini
可以编辑 php.ini 来设置 PHP 运行时的选项。
如果想要把此文件放到另外的位置,需要在步骤 5 添加 --with-config-file-path=/path 选项。
如果选择了 php.ini-production,请务必阅读其中的变更列表,它们将影响 PHP 的执行。
7.编辑 httpd.conf 文件以调用 PHP 模块。
LoadModule 达式右边的路径必须指向系统中的 PHP 模块。
以上的 make install 命令可能已经完成了这些,但务必要检查。
LoadModule php5_module modules/libphp5.so
8.告知 Apache 将特定的扩展名解析成 PHP,例如,让 Apache 将扩展名 .php 解析成 PHP。
为了避免潜在的危险,例如上传或者创建类似 exploit.php.jpg 的文件并被当做 PHP 执行,我们不再使用 Apache 的 AddType 指令来设置。
参考下面的例子,你可以简单的将需要的扩展名解释为 PHP。我们演示为增加.php。
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
或者,你也想将 .php,.php2,.php3,.php4,.php5,.php6,以及 .phtml 文件都当做 PHP 来运行,我们无需额外的设置,仅需按照下面这样来:
<FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch>
然后,可以将 .phps 文件由 PHP 源码过滤器处理,使得其在显示时可以高亮源码,设置如下:
<FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>
mod_rewrite 也有助于将那些不需要运行的 .php 文件的源码高亮显示,而并不需要将他们更名为 .phps 文件:
RewriteEngine On RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
不要在正式生产运营的系统上启动 PHP 源码过滤器,因为这可能泄露系统机密或者嵌入的代码中的敏感信息。
9.按照通常的方式启动 Apache 服务:
/usr/local/apache2/bin/apachectl start
或者
service httpd restart
按照上面的步骤便可以使 Apache 2.x 将 PHP 作为 SAPI 模块了。当然 Apache 和 PHP 都还有很多配置选项,可以在相应的源代码目录中使用./configure --help 获得更多信息。
假如要编译一个多线程版本的 Apache,可在编译时选择用 worker MPM 来替换标准的 prefork MPM。只需在上面的第 3 步使用:
--with-mpm=worker
如果不是很明确这样做的后果并且大概理解其含义的话,最好不要进行这一步。更多信息请参考 Apache 文档中关于 » MPM-Modules 的部分。
Note:
Apache MultiViews 常见问题中讨论了在 PHP 中使用 MultiViews。
Note:
要编译多线程版本的 Apache,系统必须支持多线程。这也意味着需要将 PHP 编译为正处在试验阶段的 Zend Thread Safety(ZTS),因此并不是所有的扩展都可以使用了。推荐编译 Apache 使用标准的 prefork MPM-Module。
原文 地址:http://php.net/manual/zh/install.unix.apache2.php
二、安装、配置nginx、php
本文档仅包含 Nginx 服务器的基本配置,它将通过 80 端口提供 PHP 应用的处理能力。 如果您需要超出本文档范围的安装配置指导,建议您查阅 Nginx 和 PHP-FPM 的文档。
1.建议您访问 Nginx Wiki » 安装 页面以获取并在您的系统上安装 Nginx。
2.获取并解压 PHP 源代码:
tar zxf php-x.x.x
3.配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP,例如启用某些扩展等。 运行 ./configure --help 命令来获得完整的可用选项清单。 在本示例中,我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。
cd ../php-x.x.x ./configure --enable-fpm --with-mysql make sudo make install
4.创建配置文件,并将其复制到正确的位置。
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
5.需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:
vim /usr/local/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0
6.在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。
vim /usr/local/etc/php-fpm.conf
找到以下内容并修改:
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data
然后启动 php-fpm 服务:
/usr/local/bin/php-fpm
本文档未涵盖对 php-fpm 进行进一步配置的信息,如果您需要更多信息,请查阅相关文档。
7.配置 Nginx 使其支持 PHP 应用:
vim /usr/local/nginx/conf/nginx.conf
修改默认的 location 块,使其支持 .php 文件:
location / {
root html;
index index.php index.html index.htm;
}
下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
重启 Nginx。
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
8. 创建测试文件。
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
打开浏览器,访问 http://localhost,将会显示 phpinfo() 。
通过以上步骤的配置,Nginx 服务器现在可以以 SAPI SAPI 模块的方式支持 PHP 应用了。 当然,对于 Nginx 和 PHP 的配置,还有很多可用的选项, 请在对应的源代码目录执行 ./configure --help 来查阅更多配置选项。
posted on 2019-02-22 14:05 myworldworld 阅读(184) 评论(0) 收藏 举报
浙公网安备 33010602011771号