在服务器上怎么安装配置PHP-FPM和Nginx

发布时间:2021-09-06 02:25:04 作者:chen
来源:亿速云 阅读:165

这篇文章主要介绍“在服务器上怎么安装配置PHP-FPM和Nginx ”,在日常操作中,相信很多人在在服务器上怎么安装配置PHP-FPM和Nginx 问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在服务器上怎么安装配置PHP-FPM和Nginx ”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

PHP-FPM

PHP-FPM(PHP FastCGI Process Manager),是用于管理 PHP 进程池的软件,用于接收和处理来自 Web 服务器(如Nginx)的请求。PHP-FPM会创建一个主进程(通常以操作系统中根用户的身份运行),控制何时以及如何把 HTTP 请求转发给一个或多个子进程处理。PHP-FPM 主进程还控制着什么时候创建和销毁 PHP 子进程。PHP-FPM 进程池中的每个进程存在的时间都比单个 HTTP 请求长,可以处理10、50、100或更多的 HTTP 请求。

安装

# Ubuntu
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php-5.6
sudo apt-get update
sudo apt-get install php5-fpm php5-cli php5-curl \
     php5-gd php5-json php5-mcrypt php5-mysqlnd

全局配置

在 Ubuntu 中,PHP-FPM 的主配置文件是 /etc/php5/fpm/php-fpm.conf

下面是 PHP-FPM 最重要的全局配置,建议把默认值改成下面的值:

这两个配置是 PHP-FPM 进程的基本安全保障,能解决简单的问题,但是不能解决由拙劣的 PHP 代码引起的重大问题。

配置进程池

PHP-FPM 配置文件的其它配置内容是一个名为 Pool Definitions 的区域,这个区域里的配置用于设置每个 PHP-FPM 进程池,PHP-FPM 进程池是一系列相关的 PHP 子进程。通常,一个 PHP 应用有自己的一个 PHP-FPM 进程池。

在 Ubuntu 中,Pool Definitions 区域只有下面这行内容:

include=/etc/php5/fpm/pool.d/*.conf

这行代码的作用是让 PHP-FPM 加载 /etc/php5/fpm/pool.d 目录中的各个进程池定义文件。进入这个目录,应该会看到一个名为 www.conf 的文件,这是名为 www 的默认 PHP-FPM 进程池配置文件。

各个 PHP-FPM 进程池都以指定的操作系统用户和用户组的身份运行。我们要配置默认的 wwwPHP-FPM 进程池,让它以 deploy 用户和用户组的身份运行:

编辑之后保存文件,然后重启 PHP-FPM 主进程:

sudo service php5-fpm restart

Nginx

Nginx 是 Web 服务器,类似 Apache,不过更容易配置,而且运行时占用内存更少。这里我们不深入探讨 Nginx,只是告诉你如何安装,以及如何把相应的请求转发给 PHP-FPM 进程池。

安装

# Ubuntu
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx

# CentOS
sudo yum install nginx
sudo systemctl enable nginx.service
sudo systemctl start nginx.service

虚拟主机

接下来,我们需要为 PHP 应用配置一个虚拟主机。虚拟主机是一系列设置,用于告知 Nginx PHP 应用的域名、在文件系统中的位置,已经如何把 HTTP 请求转发给 PHP-FPM 进程池:

server {
    listen 80;
    server_name example.com;
    index index.php
    client_max_body_size 50M;
    error_log /home/deploy/apps/logs/example.error.log;
    access_log /home/deploy/apps/logs/example.access.log;
    root /home/deploy/apps/example.com/current/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }
}

下面简要说明下每个虚拟主机设置:

除了上述设置外,还有两个 location 块,这两个 location 块的作用是告诉 Nginx 如何处理匹配指定 URL 模式的 HTTP 请求:

location / {} 使用 try_files 指令查找匹配所请求 URI 的文件,如果没有找到,再查找匹配所请求 URI 的目录,如果目录也没有找到,则把 HTTP 请求的 URI 重写为 /index.php,如果有查询字符串的话,还会把查询字符串附加到 URI 的末尾,这个重写的 URL,以及所有以 .php 结尾的URI,都由 location ~ \.php {} 块管理。

location ~ \.php {} 块把 HTTP 请求转发给 PHP-FPM 进程池进行处理,在这个块中我们把 PHP 请求转发到端口 9000 让 PHP-FPM 处理请求。

在 Ubuntu 中我们必须执行以下命令,在 /etc/nginx/sites-enable 目录下创建虚拟主机配置文件的符号链接:

sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf;

最后,执行下述命令,重启 Nginx:

# Ubuntu
sudo service nginx restart

# CentOS
sudo systemctl restart nginx.service

现在服务器可以运行 PHP 应用了。Nginx 配置有很多种,这里只是最基本的配置,更多配置信息,请参考以下资源:

http://nginx.org
http://www.nginx.cn
https://github.com/h6bp/server-configs-nginx

自动配置服务器

配置服务器是个很漫长的过程,而且很枯燥,如果手动配置很多服务器,这种感觉会更强烈。幸好,有些工具可以帮我们自动配置服务器,下面是几个流行的服务器配置工具:

Puppet:https://puppet.com/
Chef:https://www.chef.io/
Ansible:https://www.ansible.com/
SaltStack:https://www.ansible.com/

各个工具之间有所差别,但是目标是一致的 —— 根据精确的规则自动配置新服务器。如果要管理多台服务器,我强烈建议研究使用配置工具,这样可以节省大量时间。

到此,关于“在服务器上怎么安装配置PHP-FPM和Nginx ”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Nginx服务器的安装配置和优化
  2. php-fpm安装配置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 服务器 nginx

上一篇:PHP网络七层协议的详细介绍

下一篇:PHP中生成器的优点及用法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》