最近在 Ubuntu 14.04 LTS 安装 LNMP 一键安装包的时候出现了问题,PHP 5 服务没有启动,只好使用 Ubuntu 官方源进行安装:php
Nginx (读音 “engine x”)免费、开源、高效的 HTTP 服务。Nginx 是以稳定著称,功能丰富,结构简单,低资源消耗。本教程将演示如何在ubuntu 14.04 服务器中安装 nginx、PHP5(php-fpm)、MySQL。html
本文采用的主机名称: server1.example.com ,IP地址: 192.168.0.100。可能与你的主机有所不一样,自行修改。mysql
安装中咱们使用root帐户,先进行用户切换:nginx
sudo susql
安装 MySQL 运行命令:数据库
apt-get install mysql-server mysql-clientapache
安装过程当中会询问创建 Root 帐户密码,连续输入两次:ubuntu
New password for the MySQL “root” user: <– 输入你的密码
Repeat password for the MySQL “root” user: <– 再输入一次浏览器
在安装 Nginx 以前,若是你已经安装 Apache2 先删除在安装 nginx:缓存
service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
apt-get install nginx
启动 nginx 服务:
service nginx start
试试安装是否成功,在浏览器输入IP或主机地址 (e.g. http://192.168.0.100),以下图所示,说明安装成功:
在 Ubuntu 14.04 中默认的根目录为 /usr/share/nginx/html.
咱们必须经过 PHP-FPM 才能让PHP5正常工做,安装命令:
apt-get install php5-fpm
php-fpm是一个守护进程。
使用Vi打开配置文件/etc/nginx/nginx.conf :
vi /etc/nginx/nginx.conf
配置不是很容易明白,能够参考: http://wiki.nginx.org/NginxFullExample和 http://wiki.nginx.org/NginxFullExample2
咱们须要调整工做进程数设置,以下面的值设置:
[...] worker_processes 4; [...] keepalive_timeout 2; [...] |
默认虚拟主机设置文件 /etc/nginx/sites-available/default 按以下设置:
vi /etc/nginx/sites-available/default
[...] server { listen 80; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /.ht { deny all; } } [...] |
取消同时侦听 IPv4 和 IPv6 的80端口。
server_name _; 默认主机名 (固然你能够修改,例如修改成: www.example.com).
index主页这一行咱们加入 index.php。
PHP 重要配置配置 location ~ .php$ {} 这几行咱们须要启动,反注释掉。另外再添加一行:try_files $uri =404。
(其余配置查看http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP 和 http://forum.nginx.org/read.php?2,88845,page=3).
保存文件并从新加载 nginx 命令:
service nginx reload
若是加载失败,直接用删除全部配置内容,用上面的信息替换。
打开配置文件 /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini
从新加载 PHP-FPM:
service php5-fpm reload
如今建立一个探针文件保存在 /usr/share/nginx/html目录下
vi /usr/share/nginx/html/info.php
<?php phpinfo(); ?> |
浏览器下访问探针文件 (e.g. http://192.168.0.100/info.php):
正如你看到的 PHP5 正在运行,而且是经过 FPM/FastCGI,向下滚动,咱们看看那些模块已经启动,MySQL是没有列出这意味着咱们没有MySQL支持PHP5。
先搜索一下,看看那些模块支持:
apt-cache search php5
而后使用下面的命令安装:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APC是一个自由和开放的PHP操做码缓存器缓存和优化PHP的中间代码。这是相似于其余PHP操做码cachers,如eAccelerator、XCache。这是强烈建议有一个安装加速你的PHP页面。
使用下面的命令安装 APC:
apt-get install php-apc
如今从新加载 PHP-FPM:
service php5-fpm reload
刷新 http://192.168.0.100/info.php 向下滚动看看模块是否支持:
默认状况下 PHP-FPM 侦听的是 /var/run/php5-fpm.sock,要让 PHP-FPM 使用 TCP 链接,须要打开编辑配置文件 /etc/php5/fpm/pool.d/www.conf…
vi /etc/php5/fpm/pool.d/www.conf
按照下面的修改信息
[...] ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...] |
这将使php-fpm侦听端口9000上的IP 127.0.0.1(localhost)。确保你使用的端口不在你的系统上使用。
从新加载 PHP-FPM:
service php5-fpm reload
下面经过配置 nginx 修改主机,更改这一行注释掉 fastcgi_pass unix:/var/run/php5-fpm.sock; 这一行反注释 fastcgi_pass 127.0.0.1:9000;,按照下面的设置:
vi /etc/nginx/sites-available/default
[...] location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: fastcgi_pass 127.0.0.1:9000; # With php5-fpm: #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } [...] |
从新加载 nginx:
service nginx reload
若是你想 Nginx支持 CGI/Perl 脚本服务,可阅读此教程 Serving CGI Scripts With Nginx On Debian Squeeze/Ubuntu 11.04