php简介
WEB资源类型:
- 静态资源:原始形式与响应内容一致,在客户端浏览器执行
动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
Web相关语言
客户端技术: html,javascript
服务器端技术:php, jsp,python,aspweb服务器中html语言由于只能是静态展示,而不能动态展示。而php程序可以解决html不能动态展示的问题,php是嵌入在html中的,扩展了html的功能
PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
php:脚本语言解释器
配置文件:/etc/php.ini, /etc/php.d/*.ini
配置文件在php解释器启动时被读取- 对配置文件的修改生效方法
- Modules:重启httpd服务 #apache的子模块,扩展了apache功能,php以模块方式应用在httpd服务中,模块名 php
- FastCGI:重启php-fpm服务 #php以一个独立的服务运行 安装包名php-fpm
- /etc/php.ini配置文件格式: #ini格式
- [foo]:Section Header #段落名称
- directive = value #键值对
- 注释符:较新的版本中,已经完全使用;进行注释
- #:纯粹的注释信息
- ;:用于注释可启用的directive #指令用;注释掉
php的加速器
php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode 缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
XCache
快速而且稳定的PHPl,,,opcode缓存,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/,收录EPEL源
快速部署LAMP
CentOS 7:
Modules:httpd, php, php-mysql, mariadb-server
FastCGI:httpd, php-fpm, php-mysql, mariadb-server
~~
CentOS 6:
Modules:httpd, php, php-mysql, mysql-server
FastCGI:默认不支持
1. /etc/php.ini配置文件
max_execution_time= 30 #最长执行时间30s
memory_limit 128M #生产不够,可调大
display_errors off #调试使用,不要打开,否则可能暴露重要信息
display_startup_errors off #建议关闭
post_max_size 8M #最大上传数据大小,生产可能临时要调大,比下面项要大
upload_max_filesize 2M #最大上传文件,生产可能要调大
max_file_uploads = 20 #同时上传最多文件数
date.timezone =Asia/Shanghai #指定时区
short_open_tag=on 开启短标签,如<? phpinfo();?> #原来是<?php phpinfo();?>
以下都是基于php的moduels方式
fastcgi模式见下一篇博客
1、php之Modules(php)
php.ini配置选项列表 http://php.net/manual/zh/ini.list.php
[root@centos7:~]# yum install php #模块module方式安装php
[root@centos7:~]# ll /etc/php.ini #php配置文件
-rw-r--r-- 1 root root 64945 Apr 13 03:04 /etc/php.ini
[root@centos7:~]# rpm -qf /etc/php.ini
php-common-5.4.16-45.el7.x86_64
[root@centos7:~]# rpm -ql php #模块放死php的文件
/etc/httpd/conf.d/php.conf #php模块配置,对apache的修改
/etc/httpd/conf.modules.d/10-php.conf #php模块加载脚本
/usr/lib64/httpd/modules/libphp5.so #php模块
/usr/share/httpd/icons/php.gif
/var/lib/php/session
[root@centos7:~]# vim /etc/httpd/conf.d/php.conf
<FilesMatch \.php$>
SetHandler application/x-httpd-php #.php结尾的由httpd-php模块处理
</FilesMatch>
DirectoryIndex index.php #index.php为主页面
[root@centos7:~]# cat /etc/httpd/conf.modules.d/10-php.conf
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c> #只支持MPM中的prefork方式
LoadModule php5_module modules/libphp5.so #让apache加载php模块
</IfModule>
#multi-processing module多路处理模块
#apache的众多模块,每个模块实现不同的功能
[root@centos7:~]# ls /usr/lib64/httpd/modules/
[root@centos7:conf]# rpm -qi php
Name : php
Version : 5.4.16
2、php连接数据库的4中测试方式
[root@cos7-1:~]# yum install mariadb-server -y
[root@cos7-1:~]# mysql
MariaDB [(none)]> create database phptest;
MariaDB [(none)]> grant all on phptest.* to phpuser@'192.168.31.%' identified by 'centos';
[root@centos7:html]# cd /var/www/html
1第一种方式Php使用mysql扩展连接数据库
[root@centos7:html]# vim mysql1.php #第一种方式Php使用mysql扩展连接数据库
<?php
$conn = mysql_connect('192.168.31.17','phpuser','centos');
if ($conn)
echo "OK";
else
echo "Failure";
\#echo mysql_error();
mysql_close();
?>
[root@centos7:html]# yum install mariadb -y #安装客户端数据库
[root@centos7:html]# yum install php-mysql -y #安装php连接mysql包
[root@centos7:html]# mysql -uphpuser -pcentos -h192.168.31.17
#测试一下可以连接
[root@centos7:html]# rpm -ql php-mysql
/etc/php.d/mysql.ini #php连接数据库第一种方式配置文件
/etc/php.d/mysqli.ini #php连接数据库第二种方式配置文件
/etc/php.d/pdo_mysql.ini #php连接数据库第三种方式配置文件
/usr/lib64/php/modules/mysql.so #第一种方式的模块
/usr/lib64/php/modules/mysqli.so #第二种方式的模块
/usr/lib64/php/modules/pdo_mysql.so #第三种方式的模块,内容较多
[root@centos7:html]# cat /etc/php.d/mysql.ini
; Enable mysql extension module
extension=mysql.so
[root@centos7:html]# cat /etc/php.d/mysqli.ini
; Enable mysqli extension module
extension=mysqli.so
[root@centos7:html]# systemctl restart httpd
#第一种php方式即modules,依赖httpd
在浏览器中输入192.168.31.7/mysql1.php,可以看到ok
[root@cos7-1:~]# systemctl stop mariadb #停掉数据库服务器服务
在浏览器中输入192.168.31.7/mysql1.php,可以看到Failure
2第二种方式Php使用mysqli扩展连接数据库的测试代码
[root@centos7:html]# vim mysqli.php
#第二种方式Php使用mysqli扩展连接数据库的测试代码
<?php
$mysqli=new mysqli("192.168.31.17","phpuser","centos");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo “OK";
$mysqli->close();
?>
3第三种方式使用pdo扩展连接数据库的测试代码1
[root@centos7:html]# vim pdo.php #第三种方式使用pdo扩展连接数据库的测试代码1
<?php
$dsn='mysql:host=192.168.31.17;dbname=phptest';
$username='phpuser';
$passwd='centos';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>
在浏览器中输入192.168.31.7/pdo.php,可以看到object(PDO)#1 (0) { }
4使用pdo扩展连接数据库的测试代码2
[root@centos7:html]# vim pdo1.php #使用pdo扩展连接数据库的测试代码2
<?php
try {
$user='phpuser';
$pass='centos';
$dbh = new PDO('mysql:host=192.168.31.17;dbname=phptest', $user, $pass);
foreach($dbh->query('SELECT * from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
2、数据库测试
[root@cos7-1:~]# mysql #往phptest数据库里面复制一些内容
MariaDB [(none)]> use phptest;
Database changed
MariaDB [phptest]> create table test select * from hellodb.students;
在浏览器中输入192.168.31.7/pdo1.php,可以看到phptest数据库的内容
上述使用php方式一modules内嵌脚本到httpd,即依赖于httpd;
php连接数据库的三种方式,前两种是用来连接mysql,而php连接数据库的第三种方式pdo(php data object),不仅仅局限于mysql,如oracle等也支持,功能更强;pdo扩展方式
基于php的网站
1、PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的 MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
2、WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL 数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系 统(CMS)来使用
3、PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、CMS、博客、SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团
4、Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自 2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。 2010年8月23日,与腾讯达成收购协议
5、ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。 系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。2006年6月, ECShop推出第一个版本1.0
1、phpmyadmin数据库管理安装
https://www.phpmyadmin.net/downloads/
[root@cos7-1:~]# rpm -qi mariadb
Name : mariadb
Epoch : 1
Version : 5.5.56
[root@centos7:html]# rpm -qi php
Name : php
Version : 5.4.16
~~
phpMyAdmin 4.0.10.20
Released 2017-03-29, see release notes for details.
Older version compatible with PHP 5.2 and MySQL 5. Does not support PHP 5.5 or
newer. Was supported until April 1, 2017.
http://192.168.31.7/pma
http://192.168.31.7/wordpress
http://192.168.31.7/discuz
安装PhpMyAdmin数据库管理工具
[root@centos7:html]# unzip phpMyAdmin-4.0.10.20-all-languages.zip
[root@centos7:html]# ls
index.php pdo.php phpMyAdmin-4.0.10.20-all-languages.zip
mysql1.php phpMyAdmin-4.0.10.20-all-languages
[root@centos7:html]# mv phpMyAdmin-4.0.10.20-all-languages/ pma
[root@centos7:pma]# ls
config.sample.inc.php *省略*
[root@centos7:pma]# mv config.sample.inc.php config.inc.php
[root@centos7:pma]# vim config.inc.php
$cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
*省略*
$cfg['Servers'][$i]['host'] = 'localhost'; #连接本机数据库
$cfg['Servers'][$i]['extension'] = 'mysqli'; #第二中数据连接方法
#上述只更改了密码为123456 ,其余没动。另在本机192.168.31.7机器上装一个数据库服务mariadb-server
[root@centos7:pma]# yum install mariadb-server -y
[root@centos7:pma]# systemctl start mariadb
浏览器打开,如图1
需要安装mbstring
[root@centos7:pma]# yum search mbstring
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
[root@centos7:pma]# yum install php-mbstring -y
[root@centos7:pma]# rpm -ql php-mbstring
/etc/php.d/mbstring.ini
/usr/lib64/php/modules/mbstring.so #扩展了php功能的模块
/usr/share/doc/php-mbstring-5.4.16
/usr/share/doc/php-mbstring-5.4.16/libmbfl_LICENSE
/usr/share/doc/php-mbstring-5.4.16/oniguruma_COPYING
/usr/share/doc/php-mbstring-5.4.16/ucgendat_LICENSE
[root@centos7:pma]# systemctl reload httpd
空口令不让登录,需要设置数据库口令
[root@centos7:pma]# mysql
MariaDB [(none)]> set password for root@’localhost’=password(‘centos’);
或者输入安全脚本
如图2
2、wordpress博客安装
https://cn.wordpress.org/download/
1、数据库账号创建
[root@centos7:pma]# mysql -uroot -pcentos -e "create database wpdb;grant all on wpdb.* to wpuser@'192.168.31.%' identified by 'centos'"
2、wordpress
[root@centos7:html]# pwd
/var/www/html
[root@centos7:html]# tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@centos7:html]# ls
index.php pdo.php pma wordpress-4.9.4-zh_CN.tar.gz
mysql1.php phpMyAdmin-4.0.10.20-all-languages.zip wordpress
[root@centos7:html]# cd wordpress/
[root@centos7:wordpress]# ls
index.php wp-admin wp-content wp-load.php wp-signup.php
license.txt wp-blog-header.php wp-cron.php wp-login.php wp-trackback.php
readme.html wp-comments-post.php wp-includes wp-mail.php xmlrpc.php
wp-activate.php wp-config-sample.php wp-links-opml.php wp-settings.php
[root@centos7:wordpress]# mv wp-config-sample.php wp-config.php
[root@centos7:wordpress]# vim wp-config.php
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'centos');
/** MySQL主机 */
define('DB_HOST', '192.168.31.7');
浏览器打开192.168.31.7/wordpress,如图3
3、discuz论坛
http://www.discuz.net/thread-3796882-1-1.html
[root@centos7:html]# unzip Discuz_X3.3_SC_UTF8.zip
Discuz_X3.3_SC_UTF8.zip phpMyAdmin-4.0.10.20-all-languages.zip utility
index.php pma wordpress
mysql1.php readme wordpress-4.9.4-zh_CN.tar.gz
pdo.php upload
生成了3个文件 readme upload utility
浏览器打开192.168.31.7/upload 如图4
#目录没有权限,加上权限即可,如下
[root@centos7:html]# setfacl -R -m u:apache:rwx upload/
[root@centos7:html]# mysql -uroot -pcentos
MariaDB [(none)]> create database ultrax;
MariaDB [(none)]> grant all on ultrax.* to ultrax@localhost identified by 'centos';
如图5
4、性能测试和xcache加速试验
性能测试,wordpress基于php,php动态页面
xcahe加速 , http://xcache.lighttpd.net/
[root@cos7-2:~ ]# ab -c 10 -n 100 http://192.168.31.7/wordpress
[root@centos7:html]# yum search xcache
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
xcache-admin.noarch : XCache Administration
php-xcache.x86_64 : Fast, stable PHP opcode cacher
[root@centos7:html]# yum install php-xcache -y
[root@centos7:html]# rpm -qi php-xcache
Name : php-xcache
Version : 3.1.1
Release : 1.el7
Architecture: x86_64
[root@centos7:html]# rpm -ql php-xcache
/etc/php.d/xcache.ini #配置文件
/usr/lib64/php/modules/xcache.so #php调用此文件
/usr/share/doc/php-xcache-3.1.1
/usr/share/doc/php-xcache-3.1.1/AUTHORS
/usr/share/doc/php-xcache-3.1.1/COPYING
/usr/share/doc/php-xcache-3.1.1/ChangeLog
/usr/share/doc/php-xcache-3.1.1/README
/usr/share/doc/php-xcache-3.1.1/THANKS
[root@centos7:html]# vim /etc/php.d/xcache.ini
extension = xcache.so
[root@centos7:html]# ll /usr/lib64/php/modules #php用到的所有模块
[root@centos7:html]# systemctl restart httpd
[root@cos7-2:~ ]# ab -c 10 -n 100 http://192.168.31.7/wordpress #加速效果未加速
实际此版本的xchace太旧,需要下载新版本
> [root@centos7:html]# tar xf xcache-3.2.0.tar.gz
[root@centos7:html]# ls
Discuz_X3.3_SC_UTF8.zip pma wordpress-4.9.4-zh_CN.tar.gz
index.php readme xcache-3.2.0
mysql1.php upload xcache-3.2.0.tar.gz
pdo.php utility
[root@centos7:xcache-3.2.0]# pwd
/var/www/html/xcache-3.2.0
phpMyAdmin-4.0.10.20-all-languages.zip wordpress
[root@centos7:xcache-3.2.0]# cat INSTALL
\# vim:ts=4:sw=4
Installtion:
$ phpize --clean && phpize #生成config脚本
$ ./configure --help
$ CFLAGS='your cflags' ./configure --enable-xcache --enable...
$ make
$ su
# make install
(update php.ini, restart php)
#编译安装一下xcache-3.2.0 ,开发包组安装
[root@centos7:xcache-3.2.0]# phpize --clean && phpize
Cleaning..
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
Complete!
[root@centos7:xcache-3.2.0]# yum install php-devel -y
[root@centos7:xcache-3.2.0]# phpize --clean && phpize
Cleaning..
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
[root@centos7:xcache-3.2.0]# ls #生成了 configure
[root@centos7:xcache-3.2.0]# ./configure --enable-xcache
[root@centos7:xcache-3.2.0]# make && make install
**省略***
Libraries have been installed in:
/var/www/html/xcache-3.2.0/modules #倒数行数的横线下面,把此模块拷贝走
[root@centos7:xcache-3.2.0]# yum remove php-xchace #卸载旧版本的xcache
[root@centos7:xcache-3.2.0]# cp modules/xcache.so /usr/lib64/php/modules/ #拷贝编译的模块
cp: overwrite ‘/usr/lib64/php/modules/xcache.so’? y
[root@centos7:xcache-3.2.0]# cp xcache.ini /etc/php.d/
cp: overwrite ‘/etc/php.d/xcache.ini’? y
[root@centos7:xcache-3.2.0]# systemctl restart httpd
[root@cos7-2:~ ]# ab -c 10 -n 100 http://192.168.31.7/wordpress #加速快了一点
总结
部署phpMyadmin数据库管理web
yum -y install httpd mariadb-server php php-mysql
systemctl start httpd
systemctl start mariadb
mysql_secure_installation
下载:https://www.phpmyadmin.net/downloads/
tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz cd /var/www/html
cd phpadmin/
cp config.sample.inc.php config.inc.php
yum -y install php-mbstring
systemctl reload httpd
布署wordpress博客
官网:https://cn.wordpress.org/
解压缩WordPress博客程序到网页站点目录下
unzip wordpress-4.3.1-zh_CN.zip
新建wpdb库和wpuser用户
mysql> create database wpdb;
mysql> grant all privileges on wpdb.* to wpuser@’%’ identified by “wppass”;
打开http://webserver/wordpress进行页面安装
注意wordpress目录权限
Setfacl –R –m u:apache:rwx wordpress
部署discuz论坛
http://www.discuz.net/thread-3796882-1-1.html
解压缩discuz论坛程序到网页站点目录下
unzip Discuz_X3.3_SC_UTF8.zip
设置目录权限,以便客户端安装程序时检查,
setfacl -R -m u:apache:rwx upload/
安装完成后删除目录权限
setfacl -b upload/
xcache编译安装
官网:http://xcache.lighttpd.net/wiki/ReleaseArchive
安装方法
rpm包:来自epel源
编译安装
编译安装
yum -y install php-devel
下载并解压缩xcache-3.2.0.tar.bz2
phpize 生成编译环境
cd xcache-3.2.0
./configure –enable-xcache –with-php-config=/usr/bin/php-config
make && make install
cp xcache-3.2.0/xcache.ini /etc/php.d/
systemctl restart httpd.service