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

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

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

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

Nginx vs Apache

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

  1. 在Debian下安装Nginx

Debian的官方包中已经有了Nginx包,所以你不需要再去其他地方找了,使用apt-get来安装它。

apt-get install nginx

现在运行Nginx

service nginx start

这时在浏览器中打开以下网址来访问Nginx服务器

http://localhost/

你将看到欢迎信息

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

转载于:https://my.oschina.net/u/1162285/blog/287795

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu Debian(NGINX/PHP/MYSQL)快速配置工具LNMP云安装 Ubuntu Debian云安装基于debian apt-get 快速配置安装nginx php mysql等。LNMP云安装Ubuntu Debian(NGINX/PHP/MYSQL)快速配置工具经测试,整个过程约2-5分钟完成。各种组件均使用最新稳定版。加入php host功能限制每个网站的访问目录,防止跨目录,更安全!解决nginx 0day漏洞! DebianLNMP特点:1. 独特的DebianLNMP安全增强设置。2. 新软件库基于http://www.dotdeb.org/可保持同步更新。3. Nginx MySQL PHP 全部升级到最新稳定版本。4. 快捷的安装脚本,快速安装开源LNMP软件组合。5. 适合懒人+初学者。随着时间变迁,安装的版本会是更新版本。6. 最快安装、最新稳定版、最省资源! Ubuntu Debian(NGINX/PHP/MYSQL)LNMP云安装 直接给出安装方法:最快安装、最新稳定版、最省资源! root@DebianLNMP-Jimmyli:~# wget http://sourceforge.net/projects/debian-lnmp/files/DebianLNMP/DebianLNMP-Jimmyli.sh root@DebianLNMP-Jimmyli:~# sh DebianLNMP-Jimmyli.sh 输入域名,回车。 接着输入MYSQL root用户密码,再次输入确认MYSQL root用户密码,等待安装完成。整个过程约2-5分钟。 安装完成了! 一如既往,安装快捷方便、迅速! 直接给出安装方法:最快安装、最新稳定版、最省资源! 两步安装即完成命令(Pro加强版) root@DebianLNMP-Jimmyli:~# wget http://sourceforge.net/projects/debian-lnmp/files/DebianLNMP/DebianLNMP-Pro-Jimmyli.sh root@DebianLNMP-Jimmyli:~# sh DebianLNMP-Pro-Jimmyli.sh DebianLNMP加强版? 延续DebianLNMP全部功能...新增PHP5插件ImageMagick、XCache、memcache、curl、MCrypt。 DebianLNMP一键安装LNMP状态管理: 安装完成后,管理NginxPHP5、MySQL已经有标准管理命令,其状态管理沿用了Linux通用性。 Nginx状态管理 /etc/init.d/nginx {start|stop|restart|reload|force-reload|status|configtest}PHP5-FPM状态管理 /etc/init.d/php5-fpm {start|stop|status|restart|reload|force-reload}MySQL状态管理/etc/init.d/mysql {start|stop|restart|reload|force-reload|status} Nginx nginx.conf:/etc/nginx/nginx.conf MySQL my.cnf:/etc/mysql/my.cnf PHP php.ini:/etc/php5/fpm/php.ini DebianLNMP一键安装LNMP效果图: Ubuntu Debian(NGINX/PHP/MYSQL)快速配置工具 Debian6系统下使用之前发布的“DebianLNMP”服务器软件套件,DebianLNMP一键安装包是一个快捷的服务器套件,轻轻松松全自动安装LNMP(Nginx、MySQL、PHPphpMyAdmin)可直接用再生产环境。现在我们已经在Debian/UbuntuVPS(VDS)或独立主机安装LNMP,安装最快最新(Nginx、MySQL、PHPphpMyAdmin)生产环境。 下面介绍配套的DebianLNMP虚拟主机管理工具,快速创建Nginx PHP5.3 MySQL配置。 什么是DebianLNMP虚拟主机管理工具? 使用DebianLNMP一键安装包,安装好Nginx/PHP5.3/MySQL环境后,需要创建添加、新建、删除虚拟主机。它能管理多域名(子域名)的虚拟主机,在Debian系统中以向导的形式管理,按照向导问题选择相应功能即可快速创建。 Debian虚拟主机管理软件?Debian系统安装LNMP环境只需要两条命令,Debian6一键安装包DebianLNMP最快.最新.最省!同样,管理LNMP虚拟主机

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值