初学者的 Linux 安装 Nginx PHP fpm 配置教程
网上的很多 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
Nginx 会被安装在 /usr/local/nginx 目录下.
启动 Nginx
sudo /usr/local/nginx/sbin/nginx
停止 Nginx
sudo /usr/local/nginx/sbin/nginx -s stop
验证 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
PHP 的可执行文件(php, php-cgi)会被安装到 /usr/local/bin 目录下. 配置文件是 /usr/local/lib/php.ini, 这个文件并不存储, 你需要自己创建.
验证 PHP 是否已经安装成功
php -v
上面的命令应该有版本信息输出.
创建 php.ini 配置文件
sudo cp php.ini-production /usr/local/lib/php.ini
不过, 现在你还用不上, 等用的时候再修改这个文件.
修改 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; }
然后重启 Nginx
sudo /usr/local/nginx/sbin/nginx -s reload
这时候, Nginx + PHP 还不能工作, 你还需要启动 php-cgi 进程.
启动 php-cgi
/usr/local/bin/php-cgi -b 9000
验证 Nginx + PHP 已经正常工作
首先, 你需要创建一个 PHP 脚本, 新建一个文件 /usr/local/nginx/html/index.php, 这个文件的内容只有一行:
<?php phpinfo();
然后修改它的文件属性
sudo chmod ugo+rwx -R /usr/local/nginx/html
然后, 用浏览器访问 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
然后修改 /usr/local/etc/php-fpm.conf, 将
;pid = run/php-fpm.pid
前面的分号(注释)去掉.
创建 nobody 用户
sudo groupadd nobody sudo useradd -g nobody nobody
启动和停止 php-fpm
# 启动 sudo /usr/local/sbin/php-fpm # 停止 sudo kill `cat /usr/local/var/run/php-fpm.pid`
这时候, 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/
然后修改 php.ini 配置文件, 找到
;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;;
在其后面加上
extension=sockets.so
然后重启 php-fpm. 这样, sockets 模块就已经安装成功了.
Related posts:
- Nginx + PHP 配置和启动脚本
- Nginx 499 错误码以及 AJAX 调用失败
- Linux+Keepalived双机互备
- nginx-push-stream-module 笔记
- HBase 在 Linux 下安装和配置
你现在看的文章是: 初学者的 Linux 安装 Nginx PHP fpm 配置教程
Linode VPS - 美国虚拟主机 | IT牛人博客聚合网站

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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 ...

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: 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: � ...

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.

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 ...

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 ...

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 ...

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 ...
