Linux企业化运维
实验所用系统为Redhat-rhel7.6。
Linux企业化运维–PHP配置、nginx结合php-fpm、memcache模块、openresty模块
一、PHP源码编译
1、软件下载
https://www.php.net/
或者
cd
lftp 172.25.254.250
> ls
> cd pub/docs/lamp/
> get php-7.4.12.tar.bz2
> exit
tar jxf php-7.4.12.tar.bz2
2、软件编译
还是configure--makefile--make 三步曲,首先configure ,但此时是不会成功,因为缺少依赖。
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --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
下载依赖,提示缺什么就安装什么。
yum install -y systemd-devel
yum install -y libxml2-devel
yum install -y sqlite-devel
yum install -y libcurl-devel
yum install libpng-devel -y
yum install oniguruma-devel -y
切入php目录,重新configure ,make ,make install 。
cd php-7.4.12/
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --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
make
make install
二、拷贝php-fpm配置文件
1、php-fpm.conf
cd /usr/local/lnmp/
cd php
cd etc/
ls
cp php-fpm.conf.default php-fpm.conf
ls
2、www.conf
cd php-fpm.d/
ls
cp www.conf.default www.conf
ls
对此配置文件进行更改。
cd ..
vim php-fpm.conf
///
pid = run/php-fpm.pid
///
3、php.ini
cd
cd php-7.4.12/
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cd /usr/local/lnmp/php/etc/
vim php.ini
///
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai
///
4、php-fpm.service,读取并开启服务
cd
cd php-7.4.12/
cd sapi/
ls
cd fpm/
cp php-fpm.service /usr/lib/systemd/system
cd /usr/lib/systemd/system
vim php-fpm.service
///
///
systemctl daemon-reload
systemctl start php-fpm.service
三、nginx结合php-fpm
1、修改nginx配置文件
切入配置目录,编辑配置文件,注释之前的设定,取消php 的注释。
cd /usr/local/nginx/conf/
vim nginx.conf
///
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
location / {
root html;
index index.php index.html index.htm;
}
///
编写一个php 发布文件,重启服务。
cd ..(nginx)
cd html/
vim index.php
///
<?php
phpinfo()
?>
///
nginx -s reload
在真机浏览器访问server1 。
在真机浏览器访问
http://172.25.24.1/index.php
2、添加环境变量
cd /usr/local/lnmp/php/sbin/
ls -> php-fpm
cd ..(php)
cd bin/
ls
pwd
cd
vim .bash_profile
///
PATH=$PATH:$HOME/bin:/usr/local/lnmp/php/bin
///
source .bash_profile
which php
which phpize
echo $PATH
四、php添加memcache功能模块
1、软件下载
http://pecl.php.net/package/memcache
或者
lftp 172.25.254.250
> ls
> cd pub/docs/lamp/
> get memcache-4.0.5.2.tgz
> exit
2、软件安装
解压软件包,切入目录,执行phpize ,提醒缺少依赖。phpize 是用来扩展php 扩展模块的,通过phpize可以建立php的外挂模块。
tar zxf memcache-4.0.5.2.tgz
cd memcache-4.0.5.2/
ls
phpize
安装依赖,重新执行phpize 。
yum install autoconf -y
yum install automake.noarch -y
phpize
对memcache 进行源码编译,configure--make--make install 三步曲。
./configure --enable-debug
make
make install
编辑php.ini ,然后重启服务,执行php -m 可以看到memcache 。
cd /usr/local/lnmp/php/etc/
ls
vim php.ini
///
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
938 extension=memcache
///
php -m | grep memcache
systemctl reload php-fpm.service
php -m
3、构建nginx高速缓存,添加memcache功能模块
使用memc-nginx 和srcache-nginx 模块构建高效透明的缓存机制。 先安装memcached ,并开启服务,查看端口。
yum install -y memcached
systemctl start memcached.service
netstat -antlp
cat /etc/sysconfig/memcached
切入memcache 目录,拷贝文件并编译,最后重启服务。
cd
cd memcache-4.0.5.2/
ls
cp example.php /usr/local/nginx/html/
cp memcache.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
ls
vim memcache.php
///
define('ADMIN_PASSWORD','westos'); // Admin Password
$MEMCACHE_SERVERS[] = '172.25.24.1:11211'; // add more as an array
///
nginx -s reload
systemctl start php-fpm.service
systemctl start memcached.service
在真机浏览器中试访问,172.25.24.1/example.php 。 将在缓存中读取数据。 此时服务配置成功,访问172.25.24.1/memcache.php 。用户名memcache ,密码westos 。 但此时我们可以观察到,当前的信息处理率不能达到百分百,需要进行优化。在真机中执行压力测试命令,对其进行优化。
ab -c20 -n 1000 http://172.25.24.1/example.php
刷新页面,可以看到信息处理率达到百分百。
五、配置php加载模块openresty
基于openresty (构建高效透明的缓存机制) 访问,能将缓存放在nginx 中,速度更快。
nginx -s stop
1、下载软件
https://openresty.org/cn/
或者
cd
lftp 172.25.254.250
> ls
> cd pub/docs/lamp
> get openresty-1.19.3.1.tar.gz
> exit
2、安装软件
tar zxf openresty-1.19.3.1.tar.gz
ls
cd openresty-1.19.3.1/
ls
./configure --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install
3、软件配置
编辑配置文件,拷贝配置文件,重启服务。
cd /usr/local/openresty/nginx.conf
vim 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;
include fastcgi.conf;
}
///
cd ..
cd html/
cp /usr/local/nginx/html/example.php .
cp /usr/local/nginx/html/index.php .
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload
进一步配置来提升性能。
cd /usr/local/openresty/nginx/conf
vim nginx.conf
///
http {
upstream memcache {
server 127.0.0.1:11211;
keepalive 512;
}
include mime.types;
default_type application/octet-stream;
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;
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
///
[注意]
/usr/local/openresty/nginx/sbin/nginx -s reload
报错 nginx: [error] invalid PID number "" in "/usr/local/openresty/nginx/logs/nginx.pid"
解决:使用nginx -c 的参数指定nginx.conf 文件的位置,conf文件的位置在nginx -t 的返回信息中
/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
/usr/local/openresty/nginx/sbin/nginx -s reload
|