一、PHP的安装部署
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.conf
pid = 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.ini
date.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.conf
location / {
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
<?php
phpinfo()
?>
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 三步曲。
make
make 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.php
define('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.conf
user 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.conf
http {
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来作为key
set $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.php
Complete requests: 5000
Failed requests: 0
Total transferred: 1425000 bytes
HTML transferred: 580000 bytes
##可以看到压测速度很快,且没有报错,速度很快。
ab -c10 -n 5000 http://172.25.24.1/index.php
Complete requests: 5000
Failed requests: 492
(Connect: 0, Receive: 0, Length: 492, Exceptions: 0)
Total transferred: 358824457 bytes
HTML transferred: 357979457 bytes
##传输量大幅度提升
|