3#### 一、PHP的安装部署
网址导航:https://www.php.net/
PHP简介:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP-FPM简介:
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的。
Memcache:
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。memcached是一个开源的、高性能的,具有分布式内存对象的缓存系统。memcached是通过在事先规划好的内存空间中缓存数据库中的数据,达到减少数据库的高并发访问,从而达到提升数据库的访问性能,加速动态应用服务的能力。在memcacahed中每条数据都是以key-value的形式存在。
OpenResty:
OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
1. 安装
wget http://172.25.28.250/pub/docs/lamp/php-7.4.12.tar.bz2
tar jxf php-7.4.12.tar.bz2
cd /root/php-7.4.12
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-inline-optimization --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd --with-mhash 编译
yum install -y systemd-devel libxml2-devel sqlite-devel libcurl-devel libpng-devel 根据编译提示安装依赖性
wget http://172.25.28.250/pub/docs/lamp/oniguruma-6.8.2-1.el7.x86_64.rpm 系统仓库中没有此安装包,所以从网上下载
wget http://172.25.28.250/pub/docs/lamp/oniguruma-devel-6.8.2-1.el7.x86_64.rpm 系统仓库中没有此安装包,所以从网上下载
yum install -y oniguruma-devel-6.8.2-1.el7.x86_64.rpm oniguruma-6.8.2-1.el7.x86_64.rpm 安装依赖性
./configer 重新编译
make
make install
2. 部署:拷贝php-fpm配置文件
1)php-fpm.conf
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
2)www.conf
cd /usr/local/php/etc/php-fpm.d/
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vim /usr/local/php/etc/php-fpm.d/www.confpid = run/php-fpm.pid ##取消注释
3)php.ini
cp /root/php-7.4.12/php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.inidate.timezone = Asia/Shanghai ##取消注释
4)php-fpm.service,读取并开启服务
cp /root/php-7.4.12/sapi/fpm/php-fpm.service /usr/lib/systemd/system
vim /usr/lib/systemd/system/php-fpm.service ##php-fpm启动文件#ProtectSystem=full ##注释掉
systemctl daemon-reload
systemctl start php-fpm.service
二、nginx结合php-fpm
1、修改nginx配置文件
切入配置目录,编辑配置文件,注释之前的设定,取消php的注释。
vim /usr/local/nginx/conf/nginx.conflocation / {root html;index index.html index.htm index.php;}location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi.conf;}
vim /usr/local/nginx/html/index.php<?phpphpinfo()?>
nginx -s reload
宿主机浏览器访问172.25.28.1/index.php,出现php的测试页面表示成功
2、添加环境变量
cd
vim .bash_profile PATH=$PATH:$HOME/bin:/usr/local/php/bin
source .bash_profile
which php ##/usr/local/php/bin/php
which phpize ##/usr/local/php/bin/phpize
三、php添加memcache功能模块
Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。
它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。
Memcache官方网站:http://www.danga.com/memcached,更多详细的信息可以来这里了解
1、安装部署php的memcache
wget http://pecl.php.net/get/memcache-4.0.5.2.tgz 二选一
wget http://172.25.28.250/pub/docs/lamp/memcache-4.0.5.2.tgz 二选一
tar zxf memcache-4.0.5.2.tgz
cd memcache-4.0.5.2/
phpize 执行phpize,提醒缺少依赖。phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。
yum install -y autoconf automake.noarch 安装依赖性
phpize 扩展成功./configure --enable-debug 对memcache进行源码编译,configure--make--make install 三步曲。makemake install
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ 查看memcache.so是否存在
vim /usr/local/php/etc/php.ini ;;;;;;;;;;;;;;;;;;;;;;; Dynamic Extensions ; 在这个位置;;;;;;;;;;;;;;;;;;;;;;extension=memcache 连接php与memcache服务,938行插入
systemctl reload php-fpm.service
php -m | grep memcache 出现memcache表示添加成功
2、添加memcache功能模块
yum install -y memcached 安装memcached
systemctl start memcached.service 开启服务
cat /etc/sysconfig/memcached 11211端口PORT="11211"
netstat -antlp | grep 11211 查看有无11211端口
cp /root/memcache-4.0.5.2/example.php /usr/local/nginx/html/
cp /root/memcache-4.0.5.2/memcache.php /usr/local/nginx/html/
vim /usr/local/nginx/html/memcache.phpdefine('ADMIN_PASSWORD','westos'); // Admin Password 设定密码$MEMCACHE_SERVERS[] = '172.25.24.1:11211'; // add more as an array server1IP#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array 注释
nginx -s reload
systemctl start php-fpm.service
systemctl start memcached.service
宿主机浏览器测试:
用户memcache,密码westos
四、配置php加载模块openresty,构建nginx高速缓存
基于openresty(构建高效透明的缓存机制) 访问,能将缓存放在nginx中,速度更快。
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制。
如果需要做到高速缓存,nginx可以跳过php直接向memcache存储,但是只能做静态存储 ,如果需要动态存储,还是要调用php,因此两种缓存策略时同时在进行的。
1、安装部署
wget https://openresty.org/download/openresty-1.19.3.1.tar.gz 二选一
wget http://172.25.28.250/pub/docs/lamp/openresty-1.19.3.1.tar.gz 二选一
tar zxf openresty-1.19.3.1.tar.gz
cd openresty-1.19.3.1/
./configure --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install
2、软件配置
编辑配置文件,拷贝配置文件,重启服务。
vim /usr/local/openresty/nginx/conf/nginx.confuser nginx;worker_processes 1;events {worker_connections 65535;}location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi.conf;}
cp /usr/local/nginx/html/example.php /usr/local/openresty/nginx/html/
cp /usr/local/nginx/html/index.php /usr/local/openresty/nginx/html/
/usr/local/openresty/nginx/sbin/nginx
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload
3. 进一步配置来提升性能
vim /usr/local/openresty/nginx/conf/nginx.confhttp {upstream memcache {server 127.0.0.1:11211;keepalive 512; ##保持512个不立即关闭的连接用于提升性能}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}location /memc {internal; ##表示只接受内部访问memc_connect_timeout 100ms;memc_send_timeout 100ms;memc_read_timeout 100ms;set $memc_key $query_string; ##使用内置的$query_string来作为keyset $memc_exptime 300; ##表示缓存失效时间memc_pass memcache;}
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload
在真机进行测试。
ab -c10 -n 5000 http://172.25.24.1/example.phpComplete requests: 5000Failed requests: 0Total transferred: 1425000 bytesHTML transferred: 580000 bytes##可以看到压测速度很快,且没有报错,速度很快。
ab -c10 -n 5000 http://172.25.24.1/index.phpComplete requests: 5000Failed requests: 492(Connect: 0, Receive: 0, Length: 492, Exceptions: 0)Total transferred: 358824457 bytesHTML transferred: 357979457 bytes##传输量大幅度提升