在Debian 8上设置nginx PHP FPM和MariaDB

・11 分钟阅读

本指南会向你展示如何使用nginx PHP Fast Process Manager和MariaDB在Debian 8上正确安装和配置LAMP堆栈。

Nginx

Nginx是"反向代理第一,web服务器第二",它是一个非常流行和不断增长的Apache替代品,在许多情况下提供更大的灵活性和更好的性能。在本教程中,我们会使用它作为我们的web服务器。

启动你喜欢的SSH客户机,并且登录到你的服务器,对于Windows用户来说,"PuTTY" 是一个免费且轻量级的SSH客户机,Linux和Mac用户可以使用操作系统它默认包含的终端。本教程会假定你已作为"root"用户登录到你的服务器。

首先让我们确定一切都是最新的,键入以下命令检查并安装更新。


apt-get update && apt-get upgrade

我们将在vim中编辑我们的配置文件,Vim默认没有安装,所以,让我们安装它!

 
apt-get install vim

 

现在是安装Nginx的时候了,我们想从官方的Nginx Debian仓库安装最新版本的Nginx 。


wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx

现在我们需要对Nginx配置进行一些调整,导航到配置目录。

 
cd/etc/nginx

 

快速vim课程

使用箭头键浏览文本文档,要开始编辑,请按键盘上的"插入"按钮,如果你的键盘没有插入按钮,则按"i"键,在vim的底部,你会注意到"INSERT",插入模式会允许你通过退格键删除或通过键入新字符插入。

让我们打开nginx.conf,并且四处寻找:

 
vi nginx.conf

 

更改默认用户,检查工作进程数,然后关闭访问日志。

指令"用户"和"worker_processes"在顶部附近,尝试以下值:

注意,你将希望将"worker_processes"设置为服务器上可用的CPU内核数,在这个例子中我们有1这是nginx的默认值。


user www-data;
worker_processes 1;

为了提高i/o性能,我们还希望禁用访问日志,用箭头键向下导航,直到找到"access_log",将其修改为以下内容:

 
access_log off;

 

最后,我们将"client_max_body_size "设置为与稍后对PHP所做的一些更改相对应。现在我们来解决这个问题吧,在"access_log"下面添加:


client_max_body_size 12m;

完成编辑后,按键盘上的"esc",Vim将不再文件底部显示"INSERT "。

要保存更改,并且退出vim,请按以下键顺序:


SHIFT :(colon)
wq
Press"Enter"

vim 会把你的更改写到磁盘,并且退出vim,让你回到bash shell中。

现在,我们需要为我们的例子设置一个站点特定的配置!我们还将删除其他例子配置,请尝试以下操作:


cd conf.d
rm example_ssl.conf default.conf
vi my_site.conf

我们会在默认的Nginx配置中创建一个简单的www.conf,但是有一些调整,按插入键,你可以复制/粘贴下面的例子。

不要忘记编辑"root"指令指向你的网站的root目录,并会"server_name"与你的域名对应起来。


server {
 listen 80;

 root /path/to/your/website;
 index index.php index.html index.htm;

 server_name mydomainname.com www.mydomainname.com;

 location / {
 try_files $uri $uri/ /index.php;
 }

 location ~ .php$ {
 try_files $uri =404;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 }
}

现在我们已经完成了本教程的Nginx配置部分,我们会在安装PHP之后,再重新启动Nginx 。

php fpm

PHP fpm是PHP快速进程管理器,因为与Apache不同,在使用Nginx时,Nginx不会以模块的形式运行PHP ,这是为了减少Nginx占用的内存,还记得关于NGINX首先是反向代理吗?在这里发挥作用;发送到NGINX的PHP请求被送到PHP-FPM来完成繁重的任务。

让我们安装php fpm 。


apt-get install php5-fpm php5-mysqlnd

注意,根据PHP脚本的要求,你可能需要安装默认不包含的其他PHP模块,流行的是php5-gdphp5-mcrypt ,你可以使用以下命令安装这些命令。


apt-get install php5-module_name_here

既然我们已经安装了PHP-FPM,我们将需要进行一些快速编辑以增强安全性和功能。


cd /etc/php5/fpm
vi php.ini

另一个快速vim课程!php.ini文件非常大,寻找一些关键值将需要一整天。所以,既然我们知道我们在寻找什么,我们就搜索它。键入以下内容:

 
/upload_max_filesize

 

默认情况下该值设置为2兆字节,如果要允许用户会文件上载到大于2兆字节的PHP应用程序,就需要更改此设置,10M现在可能是一个安全的赌注,但是,更高的值也是可以接受的。此设置因配置而异。为了教程:


upload_max_filesize = 10M

另一个明显的安全漏洞。向下滚动一点或搜索,我们需要把"allow_url_fopen"变成"关闭" 这会阻止PHP远程运行PHP文件主机,也就是称为RFI (远程文件包含),许多服务器都是这样被黑客入侵的。


allow_url_fopen = Off

因为我们改变了"upload_max_filesize",现在我们必须改变"post_max_size",这个值应该比"upload_max_filesize"大一些,因为我们必须考虑与PHP处理的请求相关的开销。

让我们用"/post_max_size"再搜索一次。

 
post_max_size =12M

 

注意,如果你决定使用比PHP文件大小更大的值,那么你必须回到你的Nginx配置,并且编辑"client_max_body_size"

现在是时候了,确定你不是按"esc"模式处于编辑模式,保存和退出vim 。


SHIFT :(colon)
wq
Press 'Enter'

php fpm设置完成。

MariaDB

即使在不断向NoSQL或MongoDB移动的世界中,我们仍然会发现坚持使用MySQL更容易,对于许多Web应用程序尤其如此。幸运的是,现在存在许多用于Oracle MySQL的"无缝 "替换。Debian8现在包括了最受欢迎的Mariadb,MariaDB是基于Oracle MySQL 5.5版本的fork ,出于某些意图和目的,MariaDB称之为MariaDB 10。它被认为是Oracle MySQL的完全替代,把它看作是MySQL,而不是甲骨文的品牌,以及一些新的特性。


apt-get install mariadb-server

重要:你肯定要为MariaDB选择一个强大的root密码,把它保存在安全的地方,在MariaDB安装过程中你需要输入两次。

让我们稍微调整一下MariaDB配置,我们要通过网络接口禁用MariaDB监听,相反,与前面的php fpm一样,我们只会坚持使用UNIX套接字,大多数PHP应用程序应该支持通过UNIX套接字连接到数据库服务器,而不是使用本地回送接口。


cd /etc/mysql
vi my.cnf

查找"bind-address =127.0.0.1",注释出来。在它上面或下面添加"skip-networking"


#bind-address = 127.0.0.1
skip-networking

我们已经完成了MariaDB最终,您可能希望调整MariaDB配置,具体取决于您是主要使用MyISAM还是InnoDB存储引擎,还要考虑可用的CPU内核和RAM数量。你的服务器,默认设置将使我们同时启动并运行。

让我们重新启动在本教程中修改了配置文件的每个服务。


systemctl restart nginx.service
systemctl restart php5-fpm.service
systemctl restart mysql.service

就这样了- 我们都完成了。此时,您在线拥有功能齐全的LNMP(LEMP)服务器!

本指南旨在作为一般经验法则,通过最少的调整开始使用上述服务。有关详细信息,请阅读上述包的文档,虽然这个示例设置应该正常"开箱即用",但是,很可能需要进行调整以更好地满足您的需求。

要研究的区域:

  • 利用和修改NGINX的缓存控制。
  • PHP-FPM "static ","dynamic "或"ondemand "任务管理器设置。
  • MariaDB性能调优,充分利用你的数据库服务器。
Huangzhongbang profile image