centos   LAMP第三部分php,mysql配置 php配置文件   配置php的error_log  配置php的open_basedir 安装php的扩展模块 phpize  mysql配置第二十一节课

主配置文件:/usr/local/apache2/conf/httpd.conf
虚拟主机配置文件:/usr/local/apache2/conf/extra/httpd-vhosts.conf

php.ini配置文件:/usr/local/php/etc/php.ini

php执行的两种方法:1在浏览器里显示  2 /usr/local/php/bin/php  1.php

php文件和php.ini文件都使用分号; 做注释 ,而不是#号 

注意:php没有像apache那样的检测配置文件php.ini 的命令

上半节课

php配置文件
配置php的error_log
配置php的open_basedir

下半节课

安装php的扩展模块
mysql配置(部分常用的参数)
phpize

php配置

#php配置文件
查找php配置文件php.ini所在位置
/user/local/php/bin/php -i |head
/user/local/php/etc/php.ini

最好的方法是使用1.php,打印出phpinfo
cd /data/www/
vi  1.php

//phpinfo页面
vi 1.php
<?php
phpinfo();
?>

访问: www.123.com/1.php

找到php.ini配置文件后继续下面的配置

1. 配置disable_function(禁用php的一些危险的功能 disable_functions,改完之后生效)
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

最后重启: /usr/local/apache2/bin/apachectl restart (如果是lnmp:  /etc/init.d/php-fpm reload)


2. 配置error_log (PHP的好处是免编译,php页面里面的代码有错误只需要修改了就可以,不需要任何编译或重编译)
display_error=Off    //不将错误显示在浏览器,只打印在错误日志里
log_errors=On
error_log=/path/to/logfile      //路径必须是一个已存在路径,不存在自己创建,比如:/usr/local/php/logs/phperror.log
error_reporting = E_ALL | E_STRICT     //| 或者  & 和  ~ 取反

新建目录: mkdir -p /usr/local/php/logs

赋予error目录的权限,目录要有执行权限,否则进不去: chown -R daemon:daemon /usr/local/php/logs && chmod /usr/local/php/logs

最后重启: /usr/local/apache2/bin/apachectl restart (如果是lnmp: service php-fpm restart )

应用

vi  .php  //在www目录下vi一个1.php
<?php
sdfsdflkjl
?>
cat /usr/local/php/logs/phperror.log
[-Oct- :: Asia/Chongqing] PHP Notice: Use of undefined constant sdfsdflkjl - assumed 'sdfsdflkjl' in /data/www/.php on line
[-Oct- :: Asia/Chongqing] PHP Notice: Use of undefined constant sdfsdflkjl - assumed 'sdfsdflkjl' in /data/www/.php on line

错误级别参考 http://www.aminglinux.com/bbs/thread-6973-1-1.html

配置error_log
1,关闭显示
2,打开错误日志
3,设定日志路径
4,定义日志级别
5,重启APACHE


3. 配置open_basedir(一个apache下跑多个网站vhost,vhost网站目录隔离)
php.ini: open_basedir = /dir1/:/dir2
httpd-vhosts.conf:php_admin_value open_basedir "/dir1/:/dir2/"

open_basedir相当于chroot,限制用户在某个目录

应用

//把网站目录限制在/data/www2/,但是实际上没有/data/www2/目录,浏览器输入www.123.com会显示500错误
vi /usr/local/php/etc/php.ini
open_basedir = /data/www2/:/tmp/ //tmp目录一般缓存用户cookies,最好加上
/usr/local/apache2/bin/apachectl restart
curl 'http://www.123.com/1.php' -I
cat /usr/local/php/logs/phperror.log //会看到错误

应用

//不同虚拟主机使用不同的open_basedir,假设有三个vhost
vi /usr/local/php/etc/php.ini
open_basedir = /data/www/:/tmp/
open_basedir = /data/www2/:/tmp2/ //open_basedir是可以添加的
open_basedir = /data/www3/:/tmp3/ vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:>
DocumentRoot "/data/www"
ServerName www..com
php_admin_value open_basedir "/data/www/:/tmp/"
</VirtualHost>
<VirtualHost *:>
DocumentRoot "/data/www2"
ServerName www..com
php_admin_value open_basedir "/data/www2/:/tmp2/"
</VirtualHost>
<VirtualHost *:>
DocumentRoot "/data/www3"
ServerName www..com
php_admin_value open_basedir "/data/www3/:/tmp3/"
</VirtualHost> /usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart (如果是lnmp service php-fpm restart )

4. 隐藏php版本号

vi /usr/local/php-fpm/etc/php.ini
expose_php = Off
/etc/init.d/php-fpm restart

修改之前

curl www.80ops.cn -I
HTTP/1.1 OK
Server: nginx/1.6.
Date: Tue, Mar :: GMT
Content-Type: text/html; charset=UTF-
Connection: keep-alive
X-Powered-By: PHP/5.4.
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=, must-revalidate
WP-Super-Cache: Served supercache file from PHP

修改之后

curl www.80ops.cn -I
HTTP/1.1 OK
Server: nginx/1.6.
Date: Tue, Mar :: GMT
Content-Type: text/html; charset=UTF-
Connection: keep-alive
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=, must-revalidate
WP-Super-Cache: Served supercache file from PHP

5. 安装php的扩展模块(memcache)
http://www.aminglinux.com/bbs/thread-45-1-1.html

显示已编译模块:/usr/local/php/bin/php -m

使用编译安装扩展模块的方式安装memcache

memcache客户端在php中编译(php调用memcache客户端的so文件连接memcached服务器端)

# yum install -y  autoconf
# cd /download && wget  -c http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz
# tar zxvf memcache-2.2.3.tgz
# cd memcache-2.2.3
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config &&make &&make install
# cp modules/memcache.so /usr/local/php/ext/ //把memcache.so 拷贝至php的extension_dir下,#查看php extension_dir的方法是 /usr/local/php/bin/php -i |grep extension_dir
修改扩展路径,在/usr/local/php/etc/php.ini中修改:
extension_dir = "/usr/local/php/ext"
然后在php.ini 中添加
extension = memcache.so 或者写绝对路径 保证不会出错 extension = /usr/local/php/ext/memcache.so

保存后可以利用 /usr/local/php/bin/php -m |grep memcache 检测和查看具体的参数

/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl  restart

memcached 的编译安装
cd /download && wget  -c http://syslab.comsenz.com/downloads/linux/memcached-1.4.5.tar.gz

tar zxvf memcached-1.2.8.tar.gz
cd memcached-1.2.8
./configure --prefix=/usr/local/memcached
make && make install

启动:

/usr/local/memcached/bin/memcached -m 2048 -p 11211 -l 127.0.0.1 -d -u www
-m 后边指定memecached使用多少内存,单位是M
-p 指定memcached 启动端口
-l 指定绑定的IP
-u 指定以某个账户的身份启动

加载不了模块需要查看错误日志

tail /usr/local/php/logs/phperror.log

公司安装脚本

tar -zxvf memcache-2.2..tgz
cd memcache-2.2.
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
cd ..
rm -fr memcache-2.2. tar -zxvf libevent-2.0.-stable.tar.gz
cd libevent-2.0.-stable
./configure --prefix=/usr/local/libevent && make && make install
cd ..
rm -fr libevent-2.0.-stable tar -zxvf memcached-1.4..tar.gz
cd memcached-1.4.
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make install
cd ..
rm -fr memcached-1.4. sed -i '8c\\n\extension = "memcache.so"\n' /usr/local/etc/php.ini

memcache基于libevent的事件处理《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

了解libevent的用户都知道,libevent是一套利用C开发的程序库,它将BSD系统的kqueue、Linux系统的epoll等事件处理功能封装成一个接口,确保即使服务器端的连接数增加也能发挥很好的性能。
Memcached利用这个库进行异步事件处理。关于这个库的详细内容,有兴趣的读者可以查看相关文档。


二. mysql配置(部分常用的参数)

mysql配置文件:vi /etc/my.cnf

[mysqld]
socket = /tmp/mysql.sock
# 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)

port = 3306
# 指定MsSQL侦听的端口

skip-name-resolve    类似于/etc/ssh/sshd_config 里面的UseDNS = no
#禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项, 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求.

key_buffer = 384M
# key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引被所有的线程共享,key_buffer的大小视内存大小而定。

table_open_cache = 512
# MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64, 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上.

max_allowed_packet = 4M  
# 接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或MySQLd必须返回大的结果行时MySQLd才会分配更多内存。 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出,可以调整到16M。

sort_buffer_size = 2M
# MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。如果不能,可以尝试增加sort_buffer_size变量的大小

read_buffer_size = 2M
# 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。 如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能.

join_buffer_size = 2M
# 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享

query_cache_size = 32M
# 指定MySQL查询结果缓冲区的大小

read_rnd_buffer_size = 2M
# 随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大

myisam_sort_buffer_size =64M
# MyISAM表发生变化时重新排序所需的缓冲

thread_concurrency = 8
# 最大并发线程数,取值为服务器逻辑CPU数量×2

thread_cache = 8
#该值表示可以重新利用保存在缓存中线程的数量,当断开连接时若缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,若果缓存中是空的或者是新的请求,那么线程将被重新创建。设置规律为:1G内存设置为8,2G内存设置为16,4G以上设置为64

max_connections = 1000
#MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过'conn%'通配符查看当前状态的连接数量,以定夺该值的大小。

max_connect_errors = 6000
# 对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。

open_files_limit = 65535
# MySQL打开的文件描述符限制,默认最小1024

skip-locking
# 避免MySQL的外部锁定,减少出错几率增强稳定性。

wait_timeout = 8
# 表示空闲的连接超时时间,默认是28800s(8小时),这个参数是和interactive_timeout一起使用的,也就是说要想让wait_timeout 生效,必须同时设置interactive_timeout

interactive_timeout = 8

long_query_time = 1
#慢查询日志的超时时间

log_slow_queries = /path/to/slow_queries
# 慢查询日志路径,必须配合上面的参数一同使用

扩展部分:
php查看指定模块的信息 http://www.aminglinux.com/bbs/thread-7030-1-1.html
php.ini中最好要禁掉的一些函数 http://www.aminglinux.com/bbs/thread-5706-1-1.html
php开启短标签 http://www.aminglinux.com/bbs/thread-120-1-1.html
php.ini详解 http://legolas.blog.51cto.com/2682485/493917
mysql调优: http://www.aminglinux.com/bbs/thread-5758-1-1.html
mysql 配置详解: http://blog.linuxeye.com/379.html


http://php.net/manual/en/install.pecl.phpize.php

phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块,可以使用phpize,通过以下几步工作。

如何使用phpize?

http://www.2cto.com/kf/201111/110140.html

当php编译完成后,php的bin目录下会有phpize这个脚本文件。在编译你要添加的扩展模块之前,执行以下phpize就可以了;
比如现在想在php中加入memcache扩展模块:我们要做的只是如下几步

————————————————————————
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install

————————————————————————

注意./configure 后面可以指定的是php-config文件的路径,php-config是一个可执行文件

ls /usr/local/php-fpm/bin/php-config
/usr/local/php-fpm/bin/php-config

这样编译就完成了,还需要做的是在php.ini文件中加入extension值
extension = “memcache.so”


php扩展路径

/usr/local/php-fpm/bin/php -i |grep extension
/usr/local/php-fpm//bin/php -m |grep memcache
grep -i 'extension'  /usr/local/php-fpm/etc/php.ini

grep -i 'extension'  /usr/local/php-fpm/etc/php.ini
; Directives are variables used to configure PHP or PHP extensions.
; dynamically loaded extension (either a PHP extension or a Zend extension),
; you may only use these constants *after* the line that loads the extension.
; encodings.  To use this feature, mbstring extension must be enabled.
; leading '/'. You must also specify the file extension being used including
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; extension_dir = "ext"
; Dynamic Extensions ;
; If you wish to have an extension loaded automatically, use the following
;   extension=modulename.extension
;   extension=msql.dll
;   extension=msql.so
;   extension=/path/to/extension/msql.so
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
; Windows Extensions
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll

php-fpm的扩展路径Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
/usr/local/php-fpm/include/php/ext
# ll
total 68
drwxr-xr-x 3 root root 4096 Dec 18 14:56 date
drwxr-xr-x 2 root root 4096 Dec 18 14:56 dom
drwxr-xr-x 3 root root 4096 Dec 18 14:56 ereg
drwxr-xr-x 2 root root 4096 Dec 18 14:56 filter
drwxr-xr-x 3 root root 4096 Dec 18 14:56 gd
drwxr-xr-x 2 root root 4096 Dec 18 14:56 hash
drwxr-xr-x 2 root root 4096 Dec 18 14:56 iconv  使php支持iconv函数,实现utf-8和gb2312编码的转换。
drwxr-xr-x 2 root root 4096 Dec 18 14:56 json
drwxr-xr-x 2 root root 4096 Dec 18 14:56 libxml
drwxr-xr-x 4 root root 4096 Dec 18 14:56 mbstring
drwxr-xr-x 3 root root 4096 Dec 18 14:56 pcre
drwxr-xr-x 2 root root 4096 Dec 18 14:56 pdo
drwxr-xr-x 2 root root 4096 Dec 18 14:56 session
drwxr-xr-x 2 root root 4096 Dec 18 14:56 spl
drwxr-xr-x 3 root root 4096 Dec 18 14:56 sqlite3
drwxr-xr-x 2 root root 4096 Dec 18 14:56 standard
drwxr-xr-x 2 root root 4096 Dec 18 14:56 xml

# /usr/local/php-fpm/bin/php -i |grep extension
extension_dir => /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525 => /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20100525
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
sqlite3.extension_dir => no value => no value

f

centos LAMP第三部分php,mysql配置 php配置文件 配置php的error_log 配置php的open_basedir 安装php的扩展模块 phpize mysql配置第二十一节课的更多相关文章

  1. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  2. centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课

    centos   邮件服务  腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25  收邮件协议:pop3 端口110  iredmail安装配置 ...

  3. centos samba/squid 配置 samba配置 smbclient mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squid配置 3128 DNSPOD 第二十七节课

    centos  samba/squid 配置  samba配置 smbclient  mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squ ...

  4. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  5. centos 阶段复习 2015-4-6 dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史 /dev/zero 零发生器 /dev/null 黑洞 /dev/random 生成随机数 第十一节课

    centos 阶段复习 2015-4-6  dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史  /dev/zero 零发生器  /dev/nul ...

  6. 风炫安全web安全学习第三十一节课 命令执行以及代码执行演示

    风炫安全web安全学习第三十一节课 命令执行以及代码执行演示 参考: http://blog.evalshell.com/2020/12/20/风炫安全web安全学习第三十一节课-命令执行以及代/

  7. [ExtJS5学习笔记]第二十一节 Extjs5中使用config配置给ext.widget或者create方法传递参数

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39252805 官方例子:http://docs.sencha.com/extjs/5. ...

  8. 005-Spring Boot配置分析-配置文件application、EnvironmentPostProcessor、Profiles

    一.配置文件application 默认配置文件application.propertie或者application.yml,可同时存在 application.propertie增加配置:local ...

  9. centos LAMP第四部分mysql操作 忘记root密码 skip-innodb 配置慢查询日志 mysql常用操作 mysql常用操作 mysql备份与恢复 第二十二节课

    centos  LAMP第四部分mysql操作  忘记root密码  skip-innodb 配置慢查询日志 mysql常用操作  mysql常用操作 mysql备份与恢复   第二十二节课 mysq ...

随机推荐

  1. 验证手机号码的JS方法

    function Checkreg() { //验证电话号码手机号码,包含153,159号段 if (document.form.phone.value=="" && ...

  2. #include”* .h“ 在查找预编译头使用时跳过

    warning C4627: “#include <windows.h>”:  在查找预编译头使用时跳过 解决办法: 原因是没有在cpp文件最前一行添加没有添加 #include &quo ...

  3. 恢复VS2013窗口的默认布局

    打开VS2013   在菜单栏中找到“Window”即“窗口”选项   单击窗口中的“reset Window layout"   点击恢复窗口布局后会有如下提示,选择Yes即可   此时即 ...

  4. VC++ 6.0开发套件(自己收藏!)

    安装镜像ISO                     VC++ 6.0_SP6_Win7企业版(中英文集成).iso MSDN安装镜像ISO                 MSDN_Oct_200 ...

  5. js 去掉空格.回车.换行

    Jquery:$("#accuracy").val($("#accuracy").val().replace(/\ +/g,""));//去 ...

  6. 浅谈ITIL

    本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...

  7. Apache Prefork、Worker和Event三種MPM分析

    三種MPM介紹 Apache 2.X  支持插入式並行處理模塊,稱爲多路處理模塊(MPM).在編譯apache時必須選擇也只能選擇一個MPM,對類UNIX系統,有幾個不同的MPM可供選擇,它們會影響到 ...

  8. SuperSlide——再次接触

    原来自己很早之前就接触过SuperSlider这个神奇的插件,原谅自己又得了“健忘症”,因此昨天就把自己“坑”了一把: 前言: 交易一期的项目即将上线,在解决测试同事们提出的bug的时候,无意间看到页 ...

  9. 使用fetch出现unexpected end of input 解决方法

    传统的ajax(即xmlhttprequest)由于使用叫复杂,于是js新推出了fetch来获取后台数据,无需引进jq的$.ajax,也可以使用promise的链式用法去处理回调地狱,着实很方便,在谷 ...

  10. Swift - 实现tableView单选系统样式

    // 实现tableView单选 import UIKit class ViewController: UIViewController { var tableView: UITableView! o ...