Table des matières
安装 Ubuntu Server
安装依赖软件
源码安装 Nginx
编译 Nginx
启动 Nginx
停止 Nginx
验证 Nginx 是否已经启动
源码安装 PHP fpm fastcgi
编译 PHP
验证 PHP 是否已经安装成功
创建 php.ini 配置文件
修改 Nginx 配置文件支持 PHP
启动 php-cgi
验证 Nginx + PHP 已经正常工作
用 fpm 方式启动 php-cgi 进程
创建 php-fpm.conf
创建 nobody 用户
启动和停止 php-fpm
单独编译安装 PHP 模块
Related posts:
Maison php教程 php手册 初学者的 Linux 安装 Nginx PHP fpm 配置教程

初学者的 Linux 安装 Nginx PHP fpm 配置教程

Jun 06, 2016 pm 08:11 PM
fpm linux nginx php 初学者 安装 配置

网上的很多 Linux 操作系统下安装 Nginx + PHP 的教程都很老, 而且各种依赖, 对于初学者来说比较容易混淆, 所以, 我重新写了此篇博客, 用于介绍最简单的 Linux 下安装 Nginx + PHP 的方法. 此文会经常更新, 保持与时俱进. 如果你不是在 ideawu.net 网站看到

网上的很多 Linux 操作系统下安装 Nginx + PHP 的教程都很老, 而且各种依赖, 对于初学者来说比较容易混淆, 所以, 我重新写了此篇博客, 用于介绍最简单的 Linux 下安装 Nginx + PHP 的方法.

此文会经常更新, 保持与时俱进. 如果你不是在 ideawu.net 网站看到本文, 请访问 ideawu.net, 阅读最新的版本.

安装 Ubuntu Server

你可能听过别的 Linux 发行版, 但如果你是初学者, 并且对 Nginx + PHP 安装不了解, 我建议你安装 Ubuntu Server. 请到 Ubuntu 的官网下载最新版本的 ISO 文件, 我用的是 12.04.3-server-amd64.iso.

安装依赖软件

在 Ubuntu 下安装软件, 可以用 sudo aptitude 命令. 这是一个类似图形界面的软件, 启动后, 按 “/” 输入软件名进行搜索, 选中后按 “+”, 再按 “g” 即可安装.

需要安装的依赖软件包是: libpcre3-dev, libxml2-dev, zlib1g-dev.

源码安装 Nginx

编译 Nginx

到 Nginx 的官网下载最新版本的 Nginx 源码, 当前(2013-11-11)的最新版本是 1.5.6, 未来会有升级, 所以下载的 wget 只是一个示例, 你应该替换成最新的版本.

wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xzf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure
make
sudo make install
Copier après la connexion

Nginx 会被安装在 /usr/local/nginx 目录下.

启动 Nginx

sudo /usr/local/nginx/sbin/nginx
Copier après la connexion

停止 Nginx

sudo /usr/local/nginx/sbin/nginx -s stop
Copier après la connexion

验证 Nginx 是否已经启动

打开浏览器, 访问 http://127.0.0.1/ 看看网页是否能打开. 如果你在另一台机器上访问, 把 127.0.0.1 换成 Ubuntu 服务器的 IP 地址即可. 如下图

图

更多的 Nginx 配置文件的修改, 等我们安装完 PHP 之后再关心, 先使用默认的配置文件运行起来. 默认的配置文件在 /usr/local/nginx/conf/nginx.conf 文件.

源码安装 PHP fpm fastcgi

编译 PHP

同样, 到 PHP 的官网下载最新版本的 PHP 源码.

wget http://us1.php.net/get/php-5.5.5.tar.bz2/from/cn2.php.net/mirror
tar xjf mirror
cd php-5.5.5
./configure --enable-fpm
make
sudo make install
Copier après la connexion

PHP 的可执行文件(php, php-cgi)会被安装到 /usr/local/bin 目录下. 配置文件是 /usr/local/lib/php.ini, 这个文件并不存储, 你需要自己创建.

验证 PHP 是否已经安装成功

php -v
Copier après la connexion

上面的命令应该有版本信息输出.

创建 php.ini 配置文件

sudo cp php.ini-production /usr/local/lib/php.ini
Copier après la connexion

不过, 现在你还用不上, 等用的时候再修改这个文件.

修改 Nginx 配置文件支持 PHP

编译 Nginx 的配置文件 /usr/local/nginx/conf/nginx.conf, 加入下面的内容. 原配置文件里有类似的内容, 你加在那段内容的紧跟后面即可.

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
Copier après la connexion

然后重启 Nginx

sudo /usr/local/nginx/sbin/nginx -s reload
Copier après la connexion

这时候, Nginx + PHP 还不能工作, 你还需要启动 php-cgi 进程.

启动 php-cgi

/usr/local/bin/php-cgi -b 9000
Copier après la connexion

验证 Nginx + PHP 已经正常工作

首先, 你需要创建一个 PHP 脚本, 新建一个文件 /usr/local/nginx/html/index.php, 这个文件的内容只有一行:

<?php phpinfo();
Copier après la connexion

然后修改它的文件属性

sudo chmod ugo+rwx -R /usr/local/nginx/html
Copier après la connexion

然后, 用浏览器访问 http://127.0.0.1/index.php 你应该能看到 PHP 的信息, 如下图

图

用 fpm 方式启动 php-cgi 进程

刚才的一行命令虽然启动了 php-cgi, Nginx + PHP 也正常工作了, 但这不是正式环境的做法, 只是一种临时方法. 正式的生产环境一般用 fpm 方式启动 php-cgi 为守护进程.

php-fpm 程序安装在 /usr/local/sbin/php-fpm.

创建 php-fpm.conf

PHP 默认安装了一个 php-fpm.conf.default 的模板文件, 需要将它改名:

sudo cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
Copier après la connexion

然后修改 /usr/local/etc/php-fpm.conf, 将

;pid = run/php-fpm.pid
Copier après la connexion

前面的分号(注释)去掉.

创建 nobody 用户

sudo groupadd nobody
sudo useradd -g nobody nobody
Copier après la connexion

启动和停止 php-fpm

# 启动
sudo /usr/local/sbin/php-fpm
# 停止
sudo kill `cat /usr/local/var/run/php-fpm.pid`
Copier après la connexion

这时候, php-cgi 已经作为守护进程启动了.

单独编译安装 PHP 模块

上面编译的 PHP 可能没有包含一些你需要的模块, 不过别担心, 你可以不必重新编译整个 PHP, 而是只编译和安装缺少的那个模块. 这也是 PHP 模块化的好处. 下面以单独安装 PHP 的 sockets 模块为例.

进入你的 PHP 源码的 ext/sockets 目录. ext 目录是所有模块的总目录. 然后执行

/usr/local/bin/phpize
./configure
make
sudo cp modules/sockets.so /usr/local/lib/php/extensions/no-debug-non-zts-20121212/
Copier après la connexion

然后修改 php.ini 配置文件, 找到

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
Copier après la connexion

在其后面加上

extension=sockets.so
Copier après la connexion

然后重启 php-fpm. 这样, sockets 模块就已经安装成功了.

  1. Nginx + PHP 配置和启动脚本
  2. Nginx 499 错误码以及 AJAX 调用失败
  3. Linux+Keepalived双机互备
  4. nginx-push-stream-module 笔记
  5. HBase 在 Linux 下安装和配置

初学者的 Linux 安装 Nginx PHP fpm 配置教程 你现在看的文章是: 初学者的 Linux 安装 Nginx PHP fpm 配置教程

Linode VPS - 美国虚拟主机 | IT牛人博客聚合网站

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Apr 01, 2025 pm 03:06 PM

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...

L'accès au fichier du site WordPress est restreint: pourquoi mon fichier .txt n'est-il pas accessible via le nom de domaine? L'accès au fichier du site WordPress est restreint: pourquoi mon fichier .txt n'est-il pas accessible via le nom de domaine? Apr 01, 2025 pm 03:00 PM

L'accès au fichier du site WordPress est restreint: dépannage de la raison pour laquelle le fichier .txt ne peut pas être accessible récemment. Certains utilisateurs ont rencontré un problème lors de la configuration du nom de domaine commercial du programme MINI: � ...

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Comment faire coexister PHP5.6 et PHP7 via la configuration Nginx sur le même serveur? Comment faire coexister PHP5.6 et PHP7 via la configuration Nginx sur le même serveur? Apr 01, 2025 pm 03:15 PM

Exécuter plusieurs versions PHP simultanément dans le même système est une exigence commune, en particulier lorsque différents projets dépendent de différentes versions de PHP. Comment être sur la même chose ...

Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Apr 01, 2025 pm 02:48 PM

De nombreux développeurs de sites Web sont confrontés au problème de l'intégration de Node.js ou des services Python sous l'architecture de lampe: la lampe existante (Linux Apache MySQL PHP) a besoin d'un site Web ...

L'interprète Python peut-il être supprimé dans le système Linux? L'interprète Python peut-il être supprimé dans le système Linux? Apr 02, 2025 am 07:00 AM

En ce qui concerne le problème de la suppression de l'interpréteur Python qui est livré avec des systèmes Linux, de nombreuses distributions Linux préinstalleront l'interpréteur Python lors de l'installation, et il n'utilise pas le gestionnaire de packages ...

Comment configurer la tâche de synchronisation APScheduler en tant que service sur macOS? Comment configurer la tâche de synchronisation APScheduler en tant que service sur macOS? Apr 01, 2025 pm 06:09 PM

Configurez la tâche de synchronisation APScheduler en tant que service sur la plate-forme MacOS, si vous souhaitez configurer la tâche de synchronisation APScheduler en tant que service, similaire à Ngin ...

See all articles