26.0 php与网站

php简介

WEB资源类型:

  • 静态资源:原始形式与响应内容一致,在客户端浏览器执行
  • 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
    Web相关语言
    客户端技术: html,javascript
    服务器端技术:php, jsp,python,asp

  • web服务器中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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值