LAMP环境搭建与配置
一.安装MySQL
- 下载软件包或上传MySQL压缩包
- 初始化
cd /usr/local/src/
tar -xzvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz//解压MySQL压缩包
mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql //移动MySQL包到/usr/local/mysql
cd /usr/local/mysql/ //进入mysql文件
useradd -s /sbin/nologin mysql //建立MySQL用户
mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql //创建一个存放数据库的文件,并将这个文件的所有这者所属组都设定为mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //执行一个块脚本,执行后无需自行编译
(-bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器: 没有那个文件或目录)出现错误,进行安装yum install -y perl-Module-Install无法安装,经将yum源移动回来后安装成功。再次执行# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ )
yum -y install perl perl-devel
有时会用到一个特殊符号&& 他的意思是当前面的命令执行成功时,才会执行后面,类似于if判断。
最后一条执行完出现两个OK 代表成功 ,或者用echo $?查看,看输出结果是否为0
3.配置MySQL
cp support-files/my-default.cnf /etc/my.cnf //将拷贝文件放到etc下面,会询问是否覆盖,确认覆盖y
vi /etc/my.cnf //修改配置内容
basedir = /usr/local/mysql //basedir表示MySQL包所在路径
datadir = /data/mysql //datadir表示定义存放数据的位置
port = 3306 //port表示定义MySQL服务监听的端口号,默认3306
server_id = 155 //server_id表示该MySQL服务的ID号
socket = /tmp/mysql.sock //socket定义MySQL服务监听的套接字地址
cp support-files/mysql.server /etc/init.d/mysqld //拷贝启动脚本
vi /etc/init.d/mysqld //修改启动脚本
basedir=/usr/local/mysql
datadir=/data/mysql
chkconfig --add mysqld //将mysql加到服务项
chkconfig mysqld on //设定开机自启
service mysqld start //启动mysql (如果显示是SUCCESS则启动成功)
ps -ef | grep mysqld //查看它的进程
netstat -ltunp | grep 3306 //查看它的端口
(失败就安装yum install net-tools)
二.安装Apache
上传压缩包
解压压缩包tar -zxvf httpd-2.4.39.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf apr-1.6.5.tar.gz
cd /usr/local/src/apr-1.6.5 //进入apr
./configure --prefix=/usr/local/apr //编译出make文件 (有依赖包报错就安装依赖包,yum install -y libtool* //安装libtool依赖包。除了依赖包可能出现错误意外还有可能出现无法编译的情况。如果出现gcc编译器报错,则安装yum install -y gcc)
./configure --prefix=/usr/local/apr //重新启动看是否出错
make &&make install //安装
echo $?
cd //退出当前目录
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install (报错xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录yum install -y expat-devel //安装这个包)
make && make install //再次运行make
echo $?
cd /usr/local/src/httpd-2.4.39
./configure \
--prefix=/usr/1ocal/apache2.4 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-so \
--enable-mods-shared=most \ \\执行./configure命令,命令运行结束后会出现报错,和之前的一样会显示缺少一个依赖包。安装yum install -y pcre-devel
./configure --prefix=/usr/1ocal/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most //再次执行确认报错是否消失
echo $? //查看返回值是否为零
make && make install //安装make (这个地方可能会出错。先将两个apr文件复制到httpd...文件中的srclib中 cd cd /usr/local/src/ cp -r apr-1.6.5 httpd-2.4.39/srclib/apr
cp -r apr-util-1.6.1 httpd-2.4.39/srclib/apr-util复制完成后进入httpd文件后进行make clean清理一下,之后再执行make && make install,如果还会出现错误就./configure --prefix=/usr/1ocal/apache2.4 --enable-so --with-pcre --with-included-apr -enable-modules=most --enable-mpms-shared=all --with-mpm=prefork再次执行make -j4 && make install)
/usr/local/apache2.4/bin/apachectl -M 查看加载了那些模块。
(报错:有时进入apache2.4进不去,目录不存在,需要进入httpd-2.4.39中,make install,运行后复制/usr/local/路径进行tab补全才能进入)
三.安装PHP
(1)下载
(2)解压
#cd /usr/local/src
#tar -zxvf php-5.6.30.tar.gz
(3)安装和配置编译参数
# yum install -y libxml2-devel
# yum install -y openssl openssl-devel
# yum install -y bzip2 bzip2-devel
# yum install -y libpng libpng-devel
# yum install -y freetype freetype-devel
# yum install -y epel-release
# yum install -y libmcrypt-devel
//为防止配置时出错提前安装库文件
# cd php-5.6.30
#./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2.4/bin/apxs \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql \
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2 \
--with-openssl \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-sockets \
--enable-exif \
#make && make install
//编译安装
(4)复制配置文件
cp php.ini-production /usr/local/php/etc/php.ini
四.配置httpd支持PHP
cd /usr/local/apache2.4/conf/httpd.conf //进入httpd的主配置文件
编辑文件:#vim /usr/local/apache2.4/conf/httpd.conf
搜索 ServerName,把 ServerName www.example.com:80 前#去掉;找到:
<Directory />
AllowOverride none
Require all denied
</Directory>
改成:
<Directory />
AllowOverride none
Require all granted
</Directory>
//修改他的目的是,允许所有请求,如果不设置该行,则访问时会报403错。
搜 索 AddType application/x-gzip .gz .tgz , 在下面添加一行 AddType
application/x-httpd-php .php;找到 /
DirectoryIndex index.html
</IfModule>
改成:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
五.测试LAMP是否成功
1.测试配置文件是否正确
启动httpd前需要先检验配置文件是否正确
# /usr/local/apache2.4/bin/apachectl -t
正确显示Syntax OK ,错误继续修改httpd.conf
启动 httpd 命令 :/usr/local/apache2.4/bin/apachectl start
查看是否启动 :netstat -lnp |grep httpd
或使用 curl 命令简单测试:curl localhost
显示了<html><body><h1>It works!<h1><body><html> 就是成功
2.测试是否正确解析PHP
编写测试脚本:#vim /usr/local/apache2.4/htdocs/1.php
<?
echo “php 解析正确”
?>
#curl localhost/1.php
php 解析正确
//如显示此信息则 PHP 解析正确
六.Httpd配置
1.默认虚拟主机
虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
域名解析服务器IP地址,是由DNS服务器来完成的
#vim /usr/local/apache2.4/conf/httpd.conf //搜索关键词httpd-vhost,找到这行把前面的井号删除
保存主配置文件,编辑虚拟主机配置文件
vim /usr/local/apa
che2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@aminglinux.com
DocumentRoot "/data/wwwroot/aming.com"
ServerName aming.com
ServerAlias www.aming.com
ErrorLog "logs/aming.com-error_log"
CustomLog "logs/aming.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
</VirtualHost>
//ServerAdmin 指定管理员邮箱,
//DocumentRoot 为该虚拟主机站点的根目录,网站程序在这个目录下
//ServaerName 为网站的域名 ,但后面的域名不支持写多个
//ServerAlias 为网站的第二域名,他后面可以写多个,用空格分隔
//ErrorLog 为站点的错误日志
//CustomLog 为站点的访问日志
mkdir -p /data/wwwroot/aming.com /data/wwwroot/www.123.com
echo "aming.com" > /data/wwwroot/aming.com/index.html
//网站默认的主页就是 index.html
echo "www.123.com" > /data/wwwroot/www.123.com/index.html
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
curl -x127.0.0.1:80 aming.com
curl -x127.0.0.1:80 www.123.com
curl -x127.0.0.1:80 www.abc.com
2.用户认证
#vim /usr/local/apache2.4/conf/extra/httpd-vhost.conf //编辑虚拟主机
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<Directory /data/wwwroot/www.123.com> // 指定认证的目录
AllowOverride AuthConfig // 这个相当于打开认证的开关
AuthName "www.123.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为 Basic
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user // 指定需要认证的用户为全部可用用户
</Directory>
</VirtualHost>
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd test
//htpasswd 为创建用户的工具,-c 为 creat ,-m 为指定密码加密的方式为 MD5,data/.htpasswd 为密码文件, test为创建的用户。第一次执行需加-c ,第二次不用加,否则密码文件会重置
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK //验证配置文件是否有问题
#/usr/local/apache2.4/bin/apachectl graceful
配 置 完 可 在 Windows 上 访 问 地 址 www.123.com , 文件在
C:\Windows\System32\drivers\etc\hosts。打开文件在最后一行输入:#你的 IP www.123.com
然后,去浏览器访问会有弹窗出现。(关闭防火墙:setenforce 0
systemctl stop firewalld)
3.配置域名跳转
当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就
会用到域名跳转。
把 123.com 域名跳转为 www.123.com:
<VirtualHost * :80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
<IfModule mod_rewrite.c> //- 需要 mod_ _rewrite 模块 支持
RewriteEngine on
// 打开 rewrite 功能
RewriteCond %{HTTP_HOST} !^www.123.com$
//定义 rewrite 的条件,当主机名不是 www.testdomain.com 时满足
条件
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
//定义 rewrite 规则,满足条件,规则才会执行。RewriteRule 后面分为三个部分,第一部分
为当前网址,第二部分为要跳转的网址,第三部分是选项,需要方括号括起来,301位为状态码,称作永久重定向,302为临时重定向 L为last,跳转一次就结束
</IfModule>
</VirtualHost>
要实现跳转,需要 rewrite 模块的支持,所以查看是否安装该模块。如果没
有则还需要一些配置:
/usr/local/apache2.4/bin/apachectl -M |grep -i rewrite //如果没有输出则需要继续编辑
vim /usr/local/apache2.4/conf/httpd.conf //搜索 rewrite,把前面#去掉
/usr/local/apache2.4/bin/apachectl graceful
/usr/local/apache2.4/bin/apachectl -M |grep -i rewrite
Rewrite_module(share) //有这行输出,说明正常加载 rewrite 模块
curl -x127.0.0.1:80 -I 123.com //测试,可以看见状态码 301,跳转的网址是 www.123.com
4.配置访问日志
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发
生时帮助我们定位问题
vim /usr/local/apache2 .4/conf/httpd.conf //搜索LogFormat
%h为访问网站的ip,%1为远程登录名,这个字段基本上为“-”,%u为用户名,%t为时间,%r为请求动作,%s为请求的状态码,写成%>s为最后的状态码,%b为传输数据大小,%{Referer}i为Referer信息,%{User-Agent}i为浏览器标识
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
//把 123.com 虚拟主机改写如下 。配置
<VirtualHost *: 80>
DocumentRoot " /data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www. 123. com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
</IfModule>
CustomLog "1ogs/123.com-access_log" combined
</VirtualHost>
保存配置文件后,测试语法并重新加载配置:
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#curl -x127.0.0.1:80 -I 123.com
#tail /usr/local/apache2.4/logs/www.123.com-access_log
访问日记不记录静态文件;访问日记切割
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.123.com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
</IfModule>
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400” combined env=!image-request
</VirtualHost>
先定义了一个 image-request 环境变量,把 gif,jpg,png, bmp,swf,js,css 等格式
文件全归类到image-request里,后面的env=!image-request有用到一个“!”,相当于取反,意思是吧image-request以外的类型文件记录到日志里
rotatelogs为httpd自带切割工具的日志,86400单位是秒相当于一天
保存配置后,测试配置文件是否正确,没有错误重新加载服务:
/usr/local/apache2.4/bin/apachectl -t
Syntax OK
/usr/local/apache2.4/bin/apachectl graceful
配置验证:
curl -x127.0.0.1:80 -I 123.com
ls /usr/local/apache2.4/logs/
测试:
5.配置静态元素过期时间
在 httpd 上我们可以控制文件过期时间,配置如下:
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.123.com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
</IfModule>
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!image-request
<IfModule mod_ expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
这里 gif,jpeg, png 格式的文件过期时长为 1 天,css. js. flash 格式的文件
过期时长为 2 小时,其他时长为0,就是不缓存。
保存配置后,测试配置文件是否正确,没有错误重新加载服务:
/usr/local/apache2.4/bin/apachectl -t
Syntax OK
/usr/local/apache2.4/bin/apachectl graceful
检查 httpd 是否加载 expires 模块:
/usr/local/apache2.4/bin/apachectl -M |grep -i expires
//没有输出则说明当前 httpd 并不支持 expires 模块,所以需要修改配置文
件
vim /usr/local/apache2.4/conf/httpd.conf //搜索关键词 expires,找到这一行
LoadModule expires_ module modules/mod_ expires .so //把前面#删掉
/usr/local/apache2.4/bin/apachectl graceful //重新加载服务
/usr/local/apache2.4/bin/apachectl -M|grep -i expires
expires_module(share) //有这行输出说明正确加载 expires 模块
测试
curl -x127.0.0.1:80 -I www.123.com/aming.txt
curl -x127.0.0.1:80 -I www.123.com/aming.jpg
//max-age=86400 说明将缓存 86400 秒,max-age=0 说明没有该类型缓存
文件
6.配置防盗链
防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的
是图片、视频、歌曲、文档等
配置防盗链先编辑主机配置文件:
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@aminglinux.com
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.123.com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
</IfModule>
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined
<Directory /data/wwwroot/www.123.com>
SetEnvIfNoCase Referer "http://www.123.com" local_ref
SetEnvIfNoCase Referer "http://www.123.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
</VirtualHost>
首先定义允许访问链接的 referer,其中^$为空 referer,当直接在浏览器里输入图片地址去访问它时,它的 referer 就为空。 然后使用filesmatch来定义需要保护的文件类型,访问txt,doc,mp3,zip,rar,jpg,gif格式的文件,当访问这样的类型的文件时就会被限制
/usr/local/apache2.4/bin/apachectl -t
Syntax OK
/usr/local/apache2.4/bin/apachectl graceful
curl -x127.0.0.1:80 -I -e “ http://www.123.com/123.txt ” http://www.123.com/aming.jpg
//用-e来定义,referfer不用http://开头不管用
curl -x127.0.0.1:80 -I -e "http://www.1234.com/1.txt" http://www.123.com/aming.jpg
curl -x127.0.0.1:80 -I -e "http://www.1234.com/1.txt" http://www.123.com/index.html
7.访问控制
访问控制限制白名单 IP,针对文件和目录。
对于一些比较重要网站内容,除了可以使用用户认证限制访问之外,还可以用比如限制ip,user_agent。
目录配置:
限制 IP 访问,编辑配置文件:
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@aminglinux.com
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
CustomLog "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined
<Directory /data/wwwroot/testdomain.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
</VirtualHost>
Directory 是用来指定限制访问的目录,order定义控制顺序
验证过程:
mkdir /data/wwwroot/www.123.com/admin/ //创建 admin 目录,模拟网站后台
echo “admin" > /data/wwwroot/www.123.com/admin/index.html //在后台目录下创建文件,并写入内容
> /usr/local/apache2. 4/1ogs/123.com-access_20201120.1og //清空当天访问日志
配置验证 :
curl -x192.168.134.130:80 -I www.123.com/admin/index.html
curl -x127.0.0.1:80 -I www.123.com/admin/index.html
cat /usr/local/apache2.4/logs/123.com-access_20201120.log
针对文件配置:
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias www.123.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
<Directory /data/wwwroot/www.123.com>
<Filesmatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Filesmatch>
</Directory>
</VirtualHost>
禁止解析PHP代码,配置:
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias www.123.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
<Directory /data/wwwroot/www.123.com/upload>
php_admin_flag engine off
</Directory>
</VirtualHost>
验证
/usr/local/apache2. 4/bin/apachectl -t
Syntax OK
/usr/local/apache2 .4/bin/ apachectl graceful
cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/www.123.com/upload/
curl -x127.0.0.1:80 www.123.com/upload/1.php
针对user_agent来做访问控制:
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias www.123.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>
</VirtualHost>
七.PHP配置
查看 PHP 配置文件得位置
/usr/local/php/bin/php -i |grep -i "loaded configuration file"
vim /usr/local/php/etc/php.ini
- PHP的disable_functions
/usr/local/php/bin/php -i |grep -i "loaded configuration file"
vim /usr/local/php/etc/php.ini
搜索 disable_functions,编辑如下:
2.配置error_log
# vim /usr/local/php/etc/php. ini
//记录错误日志:搜索 log_errors, 改成如下
log_errors=On
//记录错误日志目录位置:搜索 error. log,改为
error_log = /var/log/php/php_errors.log
//记录错误日志级别:搜索 error_reporting 改为
error_reporting = E ALL & ~E_ NOTICE
//再搜索 display_errors,改为
display_errors = Off
配置完 php.ini,可以额外配置:
mkdir /var/log/php
chmod 777 /var/log/php
/usr/local/apache2.4/bin/apachectl graceful
下面做一个演示:
vim /data/wwwroot/www.123.com/test.php
<?php
echo 111
curl -A "123" -I -x127.0.0.1:80 www.123.com/test .php
cat /var/1og/php/php_errors.log
//显示错误日志
3.配置open_basedir
先在 php.ini 中设置 open_basedir:
vim /usr/local/php/etc/php.ini //搜索 open_basedir,改成如下
open_ basedir = /tmp:/data/wwwroot/www.123.com
因为限制了 PHP只能在/tmp 和/data/wwwroot/www.123.com 两个目录下面活
动,演示如下:
/usr/1ocal/apache2.4/bin/ apachectl graceful
cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/www.123.com/
curl -x127.0.0.1:80 -I www.123.com/1.php
vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/.com"
ServerName www.123.com
ServerAlias www.123.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs
-l
logs/123.com-access_%Y%m%d.1og 86400"combined
php_admin_value open_basedir "/data/wwwroot/ www.123.com/:/tmp/"
</VirtualHost>
//起作用的是 php_admin_value,它定义了 php.ini 的参数
八.PHP动态扩展模块安装
/usr/local/php/bin/php -m //查看 PHP 加载了哪些模块
cd /usr/local/src
wget http://pecl.php.net/get/redis-2.2.5.tgz
//安装一个新的 redis
tar -zxvf redis-2.2.5.tgz
cd redis-2.2.5
(yum install -y autoconf
//因为有一处错误需要安装 )
/usr/local/php/bin/phpize //目的生成 configure 文件
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
Installing shared extensions: /usr/local/php/lib/ php/extensions/ no-debug- zts -
20131226/ //make install 时候编译好的就会放在这个目录里
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ //可以看到 redis.so
vim /usr/local/php/etc/php.ini //增加一行配置(可以放在文件最后一行)
extension = redis.so
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
/usr/local/php/bin/php -m |grep redis
//查看是否加载了 redis 模块