在Debian 7上配置Nginx + php-FPM + apc + MariaDB(翻译)

配置 Debian 是做为Linux Web服务器,是一个很是不错的选择,她是当前仅次于Centos的最受欢迎的服务器操做系统。我很是喜好在系统上使用apt/dpkg/gedbi命令去安装和更新软件包,这很是方便。php

安装一个功能完善的php 服务器环境,你须要安装一整套的配套软件,包括一个网页服务器,一个数据库。在本篇文章中,咱们将安装配置nginx, php, php-fpm, apc 和 MariaDB。html

Nginx是一个新潮的网页服务器,它被设计成为能承受巨大网络流量并且使用最少的内存和CPU占用量。在Nginx出现以前,独步武林的网页服务器是Apache。然而,随着互联网的愈来愈流行,就须要一个更快速,效率更高的网页服务器。python

Nginx vs Apachemysql

Apache 的设计是模块化的,具拥有不少的功能,可是大部的功能在常规的网站中都是用不上的,它的设计多是为了迎合全部人的需求,可是最后的结果是制造了一个重量级的且包含大部分不经常使用功能的网页服务器。 Nginx 在另外一方面是很是时髦和极速的网页服务器,主要集中在速度、扩展性及性能上。关于它的强大的技术已经超出了本文的范围。咱们可能在后面做一些介绍。能告诉你的信息是,这个网站就是运行在Nginx上。 如今,抛开那些更深的讨论,让咱们开始吧!linux

  1. 在Debian下安装Nginx

Debian的官方包中已经有了Nginx包,因此你不须要再去其余地方找了,使用apt-get来安装它。nginx

apt-get install nginx

如今运行Nginxsql

service nginx start

这时在浏览器中打开如下网址来访问Nginx服务器数据库

http://localhost/

你将看到欢迎信息ubuntu

Welcome to nginx!

重要提示浏览器

为了更好的管理的Nginx服务器,这有几样东西须要你记住。Nginx的配置文件能在如下目录找到

/etc/nginx

root@localhost:/etc/nginx# ls
conf.d		koi-win		  naxsi.rules	scgi_params	 uwsgi_params
fastcgi_params	mime.types	  nginx.conf	sites-available  win-utf
koi-utf		naxsi_core.rules  proxy_params	sites-enabled

我建议你不要修改 nginx.conf 。咱们的替代方案是给每个虚拟主机/网站建立单独的配置文件保存在如下目录

/etc/nginx/sites-available
/etc/nginx/sites-enabled

这里和Apache类似,sites-enabled 包含的配置文件将会被启用,这些文件都是指向sites-available 文件夹下配置文件的符号连接。

配置一个虚拟主机

如今,咱们已经安装好了Nginx,是时候配置一个虚拟主机了。这就是在真实的网站服务器配置你的网站。 在 /etc/nginx/sites-available 文件夹里能看到一个名为default的文件,它是一个建立咱们本身的配置文件的模板文件。咱们只要拷贝它并命名为你的网站。

cp default binarytides.com
root@localhost:/etc/nginx/sites-available# ls
binarytides.com  default

咱们选择网站的名称做为配置文件的名称,这样咱们就能很容易的记住和维护。

如今打开binarytides.com这个配置文件,并根据你的需求进行修改。 你能看到一个server节点,以下

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /usr/share/nginx/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;

第一个要配置的就是server_name,这个就是你的网站网址,好比

server_name binarytides.com

或者

server_name binarytides.com www.binarytides.com

当有人在浏览器中打开binarytides.com,Nginx会根据HTTP header中包含的hostname去选择和搜索匹配的server节点,当找到匹配的server节点,将会使用这部分的配置。 网站另外一个要配置的东西是网站的根目录。默认的目录是/usr/share/nginx/www ,你可能但愿将它改成其余目录。

一般的作法是给每一个虚拟主机分别创建一个目录他,以下

/usr/share/nginx/www/binarytides.com/
/usr/share/nginx/www/google.com/

因此建立一个合适的目录而且将根目录设置指向到这个目录,如

...
root /usr/share/nginx/www/binarytides.com;
...

在完成以上修改后,保存配置文件,而且建立一个符号连接到 /etc/nginx/sites-enabled 目录。

root@localhost:/etc/nginx/sites-available# ls
binarytides.com  default
root@localhost:/etc/nginx/sites-available# cd ..
root@localhost:/etc/nginx# cd sites-enabled/
root@localhost:/etc/nginx/sites-enabled# ln -s ../sites-available/binarytides.com 
root@localhost:/etc/nginx/sites-enabled# ls
binarytides.com  default
root@localhost:/etc/nginx/sites-enabled#

如今测试一下你的配置文件

nginx -t
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后一行的输出内容必须为successful ,不然有错误会显示。可能会有一些警告,咱们能够在后面修正。

最后,为了让新配置生效,咱们须要重启Nginx。

service nginx restart
Restarting nginx: nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx.
root@localhost:/etc/nginx/sites-enabled#

这样,新的配置就生效了。如今建立一个新的index.html文件到相应的虚拟主机根目录,从浏览器打开它,你就能看到了。

  1. 安装php和php-fpm

接下来的事情要安装的是PHP解释器和PHP-FPM。 PHP-FPM是PHP专用的来管理处理PHP请求的FastCGI进程管理器,它兼容的大部分WEB服务器。

Nginx <== 通讯 ==> Php-FPM <== 管理 ==> php child process

首先安装必要的包。

apt-get install php5 php5-fpm

它会自动安装相关依赖包,若是你须要用命令行运行脚本,你能够安装 'php5-cli' 包

Php-fpm 以单独的服务器运行,而且使用套接字(socket)与nginx通讯。所以,php的执行是彻底与nginx隔离的,此外因为fpm保持php进程持续,因此它彻底支持APC。

如今,咱们看一下php-fpm配置文件,文件在

/etc/php5/fpm/

进程池(Pool)是一组具备相同的用户/组运行PHP进程。因此若是你想每一个网站的脚本以独立的用户权限运行,你须要建立独立的fpm进程池。为了简单起见,咱们在这只演示单个进程池。 The pool configuration files are inside the pool.d directory. Navigate in 进程池的配置文件在pool.d目录。以下

root@localhost:/etc/php5/fpm/pool.d# ls
www.conf

www.conf也是供你建立独立进程池的模板,它的内容差很少是这样子的

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm.sock

; Set listen(2) backlog.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 128
The above thing consists of comments mostly and the most important 4 lines are
  1. [www] 是进程名 2.user = www-data 是指定脚本的运行用户权限 3. group = www-data 是指定用户组 4. listen = /var/run/php5-fpm.sock 是改池的套接字通讯地址。该套接字必须给nginx读写权限,让nginx与fpm通讯。

咱们在这里不许备修改太多。只用记住套接字通讯地址,将它放到nginx的配置文件里。打开nginx的配置文件

里面包含一个相似下面的配置

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#	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;
#}

去掉注释,修改为

location ~ \.php$ {
	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;
}

测试PHP

如今在网站根目录下面放一个有phpinfo函数的文件

<?php

phpinfo();

而后在浏览器中打开这个文件,你将看到的是php的信息,意味着php配置成功且运行正常。

phpinfo.png

另一点,你能够将index.php加入你索引列表,这样当访问目录时,将默认调用index.php。

root /usr/share/nginx/www/binarytides.com;
index index.html index.htm index.php;

安装apc - Alternative PHP Cache

APC是一个提升PHP脚本的执行速度的好方法。 APC编译PHP代码,并保存操做码在内存中,这样就不须要从文件中从新编译相同的php代码。这大大加快执行速度。除了操做码缓存,APC还提供了一个用户缓存来在内存中存储PHP应用程序原始数据。 PHP5.5版本中引入了一个名为OPcache的新功能,它实现与apc同样的操做码缓存,从而下降了apc的地位。 设置apc是很是简单和快捷的,只用为php安装apc包。

apt-get install php-apc

而后重启php-fpm

service php5-fpm restart

如今,刷新的phpinfo页面,它有关APC的信息了。apc的配置文件在

/etc/php5/fpm/conf.d/20-apc.ini

这个文件能够根据的性能优化做相应的调整。如下是我使用的配置

extension=apc.so
 
apc.enabled=1
apc.shm_size=128M
apc.ttl=3600
apc.user_ttl=7200
apc.gc_ttl=3600
apc.max_file_size=1M

查找apc参数的,以获取更多的信息。

  1. 在Debian上安装MariaDB

想在咱们来到了LEMP安装的最后一步了,咱们要安装的是MariaDB而不是Mysql。咱们知道Mysql如今在oracle手上,可能在不久将会商业化。因此大部分的公司开始转向MariaDB。好消息是MariaDB兼容mysql并增长了不少的功能,因此若是你的php应用使用的是mysql,你可无缝转换到MariaDB。

MariaDB 如今再也不debian包仓库中,能够从如下地址添加源

https://downloads.mariadb.org/mariadb/repositories/

根据页面上的提示选择相应的版本,获取源地址。

下面就是我获取到的命令

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirrors.fe.up.pt/pub/mariadb/repo/10.0/debian wheezy main'

如今咱们来更新apt的缓存并安装mariadb包

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

安装时mariadb会要求输入root的密码。输入密码,并肯定你不会忘记。

安装完成后,检查mariadb的版本

# mysql -V
mysql  Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1

要注意的是这里的命令和mysql的同样,可是版本信息中显示的是mariadb 。

网站服务器已准备就绪

如今LEMP网站服务器已经可使用了,你能够安装一些好比phpmyadmin去更好的管理数据库,Phpmyadmin 已经存在debian的仓库中,你能够直接从那安装。

相关网址:http://loftor.com/archives/LEMP-nginx.html

原文:install-nginx-php-fpm-mariadb-debian

相关文章
相关标签/搜索