php7.1 PHP-FPM多实例配置及nginx对应配置 9000,9001,9002
[ 2019-12-24 12:37:29 | 作者: admin ]
本文主要针对如何通过配置php7.1的php-fpm多实例,及nginx对多实例负载均衡之配置,不涉及安装。
1、负载均衡服务器(server)查看nginx配置文件 。
可以看到此处user使用的是nginx
2、应用服务器(web)查看 php-fpm配置文件
发现这里php-fpm中的user是apache
修改user=nginx 由于应用服务器没有nginx用户所以启动失败。
3、web服务器添加用户nginx;
#useradd nginx;
4、web服务器php-fpm配置文件 www.conf修改详情如下 :
一、修改user=apache 为nginx
二、修改listen端口地址为:listen = 0.0.0.0:9000
三、添加allowed_clients地址:listen.allowed_clients = 127.0.0.1,server的ip地址
5、修改php-fpm最大线程数(由于web服务器内存8G,所以这里我最多开了三个php-fpm)
从实践来看,单实例最多可以开到200-300左右的进程,开到500以上就容易出错了。
每个进程占用的内存在5M-15M左右,按平均10M计算,500个进程也只有5G,而现在很多高性能机都是64G甚至128G的内存,这样单实例是无法全面使用上内存资源的。
pm.max_children = 256
6、修改启动时开启的线程数
pm.start_servers = 20
至此php-fpm基本配置完毕。
6、将php-fpm配置文件www.conf复制www1.conf,www2.conf 修改监听端口为:9001,9002 。
7、启动多实例。
php-fpm --config-php /etc/php-fpm.d/www.conf
php-fpm --config-php /etc/php-fpm.d/www1.conf
php-fpm --config-php /etc/php-fpm.d/www2.conf
8、#ps -ef|grep php-fpm
查看到启动了有多个php-fpm进程 。表示Php-fpm多实例启动成功。
下面进行nginx相关配置。
在/etc/nginx/conf.d中增加配置文件myserver.conf 内容如下:
来源:https://blog.csdn.net/liushimiao0104/article/details/82755648
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2638
1、负载均衡服务器(server)查看nginx配置文件 。
可以看到此处user使用的是nginx
2、应用服务器(web)查看 php-fpm配置文件
发现这里php-fpm中的user是apache
修改user=nginx 由于应用服务器没有nginx用户所以启动失败。
3、web服务器添加用户nginx;
#useradd nginx;
4、web服务器php-fpm配置文件 www.conf修改详情如下 :
一、修改user=apache 为nginx
二、修改listen端口地址为:listen = 0.0.0.0:9000
三、添加allowed_clients地址:listen.allowed_clients = 127.0.0.1,server的ip地址
5、修改php-fpm最大线程数(由于web服务器内存8G,所以这里我最多开了三个php-fpm)
从实践来看,单实例最多可以开到200-300左右的进程,开到500以上就容易出错了。
每个进程占用的内存在5M-15M左右,按平均10M计算,500个进程也只有5G,而现在很多高性能机都是64G甚至128G的内存,这样单实例是无法全面使用上内存资源的。
pm.max_children = 256
6、修改启动时开启的线程数
pm.start_servers = 20
至此php-fpm基本配置完毕。
6、将php-fpm配置文件www.conf复制www1.conf,www2.conf 修改监听端口为:9001,9002 。
7、启动多实例。
php-fpm --config-php /etc/php-fpm.d/www.conf
php-fpm --config-php /etc/php-fpm.d/www1.conf
php-fpm --config-php /etc/php-fpm.d/www2.conf
8、#ps -ef|grep php-fpm
查看到启动了有多个php-fpm进程 。表示Php-fpm多实例启动成功。
下面进行nginx相关配置。
在/etc/nginx/conf.d中增加配置文件myserver.conf 内容如下:
upstream myfastcgi {
server 192.168.1.10:9000 weight=1; #fpm实例
server 192.168.1.10:9001 weight=1;
server 192.168.1.10:9002 weight=1;
}
server {
listen 80 ;
root 指向fpm实例机服务器的文件夹目录绝对地址,末尾文件夹不带斜杠; #指向fpm实例机服务器的文件夹目录
#禁止Scrapy等爬虫工具的抓取
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
return 403;
}
#禁止指定UA及UA为空的访问
#if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|bingbot|NET|CLR|^$" )
#{
# return 403;
#}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
#还有加一些针对特殊的user_agent的访问
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}
#静态文件配置
location /ev{
# autoindex on;#配置是否显示目录
expires 1d;#客户端缓存文件1天
alias 静态文件地址,末尾不带斜杠,本服务器的地址;
}
location / {
proxy_buffer_size 1M;
proxy_buffers 12 1M;
proxy_busy_buffers_size 6M;
proxy_temp_file_write_size 6M;
proxy_set_header Host $host; #如果不想改变请求头“Host”的值,可以这样来设置:proxy_set_header Host $http_host;但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
proxy_set_header X-Real-IP $remote_addr; #把真实的客户端ip发送给后端的web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #把真实的客户端ip发送给后端的web服
index index.php;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
proxy_buffer_size 1M;
proxy_buffers 12 1M;
proxy_busy_buffers_size 6M;
proxy_temp_file_write_size 6M;
proxy_set_header Host $host; #如果不想改变请求头“Host”的值,可以这样来设置:proxy_set_header Host $http_host;但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
proxy_set_header X-Real-IP $remote_addr; #把真实的客户端ip发送给后端的web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #把真实的客户端ip发送给后端的web服
fastcgi_pass myfastcgi;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to .htaccess files
error_log /var/log/nginx/site_error.log;
access_log /var/log/nginx/site_access.log;
}
server 192.168.1.10:9000 weight=1; #fpm实例
server 192.168.1.10:9001 weight=1;
server 192.168.1.10:9002 weight=1;
}
server {
listen 80 ;
root 指向fpm实例机服务器的文件夹目录绝对地址,末尾文件夹不带斜杠; #指向fpm实例机服务器的文件夹目录
#禁止Scrapy等爬虫工具的抓取
if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
return 403;
}
#禁止指定UA及UA为空的访问
#if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|bingbot|NET|CLR|^$" )
#{
# return 403;
#}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
#还有加一些针对特殊的user_agent的访问
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}
#静态文件配置
location /ev{
# autoindex on;#配置是否显示目录
expires 1d;#客户端缓存文件1天
alias 静态文件地址,末尾不带斜杠,本服务器的地址;
}
location / {
proxy_buffer_size 1M;
proxy_buffers 12 1M;
proxy_busy_buffers_size 6M;
proxy_temp_file_write_size 6M;
proxy_set_header Host $host; #如果不想改变请求头“Host”的值,可以这样来设置:proxy_set_header Host $http_host;但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
proxy_set_header X-Real-IP $remote_addr; #把真实的客户端ip发送给后端的web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #把真实的客户端ip发送给后端的web服
index index.php;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
proxy_buffer_size 1M;
proxy_buffers 12 1M;
proxy_busy_buffers_size 6M;
proxy_temp_file_write_size 6M;
proxy_set_header Host $host; #如果不想改变请求头“Host”的值,可以这样来设置:proxy_set_header Host $http_host;但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
proxy_set_header X-Real-IP $remote_addr; #把真实的客户端ip发送给后端的web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #把真实的客户端ip发送给后端的web服
fastcgi_pass myfastcgi;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to .htaccess files
error_log /var/log/nginx/site_error.log;
access_log /var/log/nginx/site_access.log;
}
来源:https://blog.csdn.net/liushimiao0104/article/details/82755648
[最后修改由 admin, 于 2019-12-24 12:40:21]

这篇日志没有评论。
此日志不可发表评论。