实现LAMP架构

实现LAMP架构

主要内容

1. PHP连接MySQL的方式

1.1 使用mysql扩展连接数据库

使用mysql扩展模块mysql.so连接数据,此方式已经在php 7版后淘汰

范例:php使用mysql扩展连接数据库的测试代码

<?php
$conn = mysql_connect('mysqlserver','username','password');
if ($conn)
	echo "OK";
else
	echo "Failure";
	#echo mysql_error();
	mysql_close();
?>

1.2 使用mysqli扩展连接数据库

使用mysqli扩展模块mysqli.so连接数据,此方式只能连接MySQL数据库,不支持其它数据库,故使用此方式不多

范例:php使用mysqli扩展连接数据库的测试代码

<?php
$mysqli=new mysqli("mysqlserver", "username", "password");
if(mysqli_connect_errno()){
    echo "Failure";
    $mysqli=null;
    exit;
}
echo "OK";
$mysqli->close();
?>

1.3 使用PDO(PHP Data Object)扩展连接数据库

使用PDO扩展模块pdo_mysql.so连接数据库,此方式可以支持连接MySQL,Oracle等多种数据库,较为常用。

范例:php使用pdo扩展连接数据库的测试代码

<?php
try {
$user='root';
$pass='magedu';
$dbh = new PDO('mysql:host=mysqlhost;dbname=mysql', $user, $pass);
foreach($dbh->query('SELECT user,host from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>

2. yum方式实现wordpress部署个人博客

2.1 centos8以CGI方式实现部署wordoress

安装yum包
[root@centos8 ~]# dnf -y install httpd php php-json php-mysqlnd mariadb-server
创建wordpress数据库和账号
[root@centos8 ~]# systemctl start mariadb.service
[root@centos8 ~]# mysql
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> grant all on wordpress.* to wordpress@'localhost' identified by 'magedu';
Query OK, 0 rows affected (0.000 sec)
配置php模块和httpd

因为centos8的php默认开启fpm功能,所以要关闭fpm,让httpd加载php模块

[root@centos8 ~]# vim /etc/httpd/conf.d/php.conf
#将以下全部注释
#<IfModule !mod_php5.c>
#  <IfModule !mod_php7.c>
#    # Enable http authorization headers
#    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
#
#    <FilesMatch \.(php|phar)$>
#        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
#    </FilesMatch>
#  </IfModule>
#</IfModule>

查看php模块的配置文件

[root@centos8 ~]# vim /etc/httpd/conf.modules.d/15-php.conf 

<IfModule !mod_php5.c>
  <IfModule prefork.c>
    LoadModule php7_module modules/libphp7.so
  </IfModule>
</IfModule>

发现要加载php模块httpd必须要工作在prefork模式

[root@centos8 ~]# httpd -M | grep mpm
 mpm_event_module (shared)
 # centos8默认是event模式
 [root@centos8 ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf
 #注释下面一行
 #LoadModule mpm_event_module modules/mod_mpm_event.so
 #对下面一行取消注释
 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
 [root@centos8 ~]# httpd -M | grep mpm
 mpm_prefork_module (shared)

再次查看发现php模块已经加载

[root@centos8 ~]# httpd -M | grep php
 php7_module (shared)
 # 若未加载则重启httpd

下载最新版wordpress到服务器,官网下载即可,需要翻墙

[root@centos8 data]# tar xf wordpress-5.3-zh_CN.tar.gz -C /var/www/html/
[root@centos8 data]# chown -R apache.apache /var/www/html/wordpress/

然后浏览器访问http://服务器ip/wordpress

img

点击现在开始

img

根据提示输入数据库用户名和密码,点击提交

img

点击现在安装

img

根据提示填写,最后点击安装wordpress

img

设置完成,再次访问http://服务器ip/wordpress即可

2.2 php-fpm模式实现LAMP

2.2.1 各种OS版本对fastcgi的支持

centos 8:

默认使用fpm模式

centos 7:

httpd-2.4:默认rpm包支持fcgi模块
php-fpm包:专用于将php运行于fpm模式

centos 6:

PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
解决方案:编译安装httpd-2.4, php-5.3.3+

2.2.2 安装php-fpm

centos8默认安装的php-fpm版本已经很新了,不用再单独安装

centos7使用清华大学yum源安装较新版的PHP-FPM

yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-
7.rpm
#安装php-fpm5.6版
yum install php56-php-fpm php56-php-mysql
#安装php-fpm7.3版
yum install php73-php-fpm php73-php-mysql
2.2.3 php-fpm配置文件
[root@centos8 data]# rpm -ql php-fpm
/etc/httpd/conf.d/php.conf
/etc/logrotate.d/php-fpm
/etc/nginx/conf.d/php-fpm.conf
/etc/nginx/default.d/php.conf
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/systemd/system/php-fpm.service.d
/run/php-fpm
/usr/lib/.build-id
/usr/lib/.build-id/54
/usr/lib/.build-id/54/336c4d18722eb06945e653dfba427c6c7aaaee
/usr/lib/systemd/system/httpd.service.d/php-fpm.conf
/usr/lib/systemd/system/nginx.service.d/php-fpm.conf
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm
/usr/share/doc/php-fpm/php-fpm.conf.default
/usr/share/doc/php-fpm/www.conf.default
/usr/share/fpm
/usr/share/fpm/status.html
/usr/share/licenses/php-fpm
/usr/share/licenses/php-fpm/fpm_LICENSE
/usr/share/man/man8/php-fpm.8.gz
/var/lib/php/opcache
/var/lib/php/session
/var/lib/php/wsdlcache
/var/log/php-fpm
php-fpm主要配置文件
  • /etc/php-fpm.conf
  • /etc/php-fpm.d/*.conf
php-fpm常见配置
  • daemonize = no //是否将程序运行在后台
  • listen = 127.0.0.1:9000 //FPM 监听地址
  • listen = /var/run/php.sock //UDF模式使用,指定生成的unix socket文件的路径
  • listen.owner = apache //UDF模式使用,指定生成的unix socket文件的所有者
  • listen.group = apache //UDF模式使用,指定生成的unix socket文件的所属组
  • listen.mode= 0666 //UDF模式使用,,指定生成的unix socket文件的权限
  • listen.acl_users = apache,nginx //指定用户访问unix socket文件,listen.owner 和listen.group
    将无效
  • listen.backlog = -1 //等待队列的长度 -1表示无限制
  • listen.allowed_clients = 127.0.0.1 //仅允许哪些主机访问
  • pm = dynamic|static //static 固定数量的子进程, //dynamic子进程数据以动态模式管理
  • pm.max_childen //static 固定数量的子进程
  • pm.start_servers
  • pm.min_spare_servers
  • pm.max_spare_servers
  • pm.max_requests = 500
  • php_value[session.save_handler] = files
  • php_value[session.save_path] = /var/lib/php/session //设置session存放位置
session目录

确保运行php-fpm进程的用户对session目录有读写权限

mkdir /var/lib/php/session

chown apache.apache /var/lib/php/session

php-fpm配置生产范例:

cat /etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000 #监听地址及IP
listen.allowed_clients = 127.0.0.1 #允许客户端从哪个源IP地址访问,要允许所有行首加 ;注释
即可
user = apache #php-fpm启动的用户和组,会涉及到后期文件的权限问题
group = apache
pm = dynamic #动态模式进程管理
pm.max_children = 500 #静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进
程数
pm.start_servers = 100 #动态模式下初始进程数,必须大于等于pm.min_spare_servers和小于等
于pm.max_children的值。
pm.min_spare_servers = 100 #最小空闲进程数
pm.max_spare_servers = 200 #最大空闲进程数
pm.max_requests = 500000 #进程累计请求回收值,会重启
pm.status_path = /pm_status #状态访问URL
ping.path = /ping #ping访问动地址
ping.response = ping-pong #ping返回值
slowlog = /var/log/php-fpm/www-slow.log #慢日志路径
php_admin_value[error_log] = /var/log/php-fpm/www-error.log #错误日志
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files #phpsession保存方式及路径
php_value[session.save_path] = /var/lib/php/session #当时使用file保存session的文件
路径
2.2.4 实现php-fcgi

安装php-fcgi包

[root@centos8 ~]# yum install php-fpm

因为fcgi模式不依赖与prefork模式,所以将mpm改回event模式

[root@centos8 ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
#这行取消注释,剩下的全部注释

修改php-fpm配置文件

[root@centos8 ~]# vim /etc/php-fpm.d/www.conf
listen = /run/php-fpm/www.sock   #因为在本机,所以选择sock文件方式
;listen = 127.0.0.1:9000  #也可选用ip加端口方式
user = apache
group = apache
listen.owner = apache
listen.group = apache
listen.mode = 0666
listen.acl_users = apache,nginx

修改httpd配置文件

[root@centos8 ~]# vim /etc/httpd/conf.d/php.conf
<IfModule !mod_php5.c>
  <IfModule !mod_php7.c>
    # Enable http authorization headers
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
  </IfModule>
</IfModule>

将这些全部取消注释

然后重启服务

[root@centos8 ~]# systemctl restart php-fpm.service
[root@centos8 ~]# systemctl restart httpd

浏览器访问http://服务器ip/wordpress

img

3. 实现xcache加速php5.x

编译php-xcache加速访问,支持php 5.6版以下

范例:

[root@centos7 ~]#yum -y install
https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
[root@centos7 ~]#yum install php56-php php56-php-mysqlnd mariadb-server
[root@centos7 ~]#systemctl enable --now httpd mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service
to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service
to /usr/lib/systemd/system/mariadb.service.
[root@centos7 ~]#mysql
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> grant all on wordpress.* to wordpress@'localhost' identified
by 'magedu';
[root@centos7 ~]#tar xvf wordpress-5.2.4-zh_CN.tar.gz -C /var/www/html
[root@centos7 ~]#cd /var/www/html
[root@centos7 ~]#chown -R apache.apache wordpress/
[root@centos7 ~]#yum -y install gcc php-devel
#下载并解压缩xcache-3.2.0.tar.bz2
[root@centos7 ~]#tar xf xcache-3.2.0.tar.gz
#生成编译环境
[root@centos7 ~]#cd xcache-3.2.0/
[root@centos7 xcache-3.2.0]#/opt/remi/php56/root/usr/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@centos7 xcache-3.2.0]#./configure --enable-xcache --with-phpconfig=/
opt/remi/php56/root/usr/bin/php-config
[root@centos7 xcache-3.2.0]#make && make install
...省略...
Installing shared extensions: /opt/remi/php56/root/usr/lib64/php/modules/

[root@centos7 xcache-3.2.0]#cat xcache.ini >> /opt/remi/php56/root/etc/php.ini
#安装base源中执行即可cp xcache.ini /etc/php.d/
[root@centos7 ~]#systemctl restart httpd.service

#测试性能
[root@centos7 ~]#ab -c10 -n 100 http://LAMP服务器/wordpress

4. opcaache加速php7.x

范例:

[root@centos8 ~]#dnf install php-opcache
[root@centos8 ~]#rpm -ql php-opcache
/etc/php.d/10-opcache.ini
/etc/php.d/opcache-default.blacklist
/usr/lib/.build-id
/usr/lib/.build-id/71
/usr/lib/.build-id/71/55ebb00f7ebcab9d708c1d5c7b7e634cce259c
/usr/lib64/php/modules/opcache.so
[root@centos8 ~]#grep opcache /etc/php.d/10-opcache.ini
zend_extension=opcache
opcache.enable=1
...省略...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值