如何使用Nginx和PHP-FPM在Debian7/Ubuntu13VPS上部署KohanaPHP应用程序
介绍
Kohana 是一个独立的包,每个副本为新的 Web 应用程序形成一个新的基础,使部署变得非常容易。
在这篇 DigitalOcean 文章中,继我们之前关于安装和开始使用 Kohana 的文章之后,我们将了解如何准备 VPS 来部署基于 Kohana 的 PHP Web 应用程序 - 使用 Debian 7 / Ubuntu 13 作为我们的主机操作系统。
注意: 这是我们 Kohana 系列的第三篇文章,重点介绍使用该框架构建的应用程序的部署。 要查看第一部分并了解如何安装它,请查看 Kohana 入门 。 要了解如何理解构建 Web 应用程序的框架模块,请查看 使用 HMVC PHP5 框架 Kohana 构建 Web 应用程序。
词汇表
1. 基于 PHP 的 Web 应用程序部署
2. 网络服务器
1. Nginx HTTP Server and Reverse-Proxy 2. Lighttpd 3. Apache
3. PHP 处理器
1. mod_php 2. FastCGI 3. PHP-FPM
4. 小花简介
5. 关于我们的部署
6. 为 Kohana 应用程序部署准备系统
1. Updating the System 2. Installing Nginx 3. Installing MySQL 5 4. Installing PHP (PHP-FPM)
7. 配置系统
1. Configuring PHP 2. Configuring Nginx
8. 部署 Kohana Web 应用程序
1. Uploading the Code Base To The Server 2. Bootstrapping the Deployment (Installation)
基于 PHP 的 Web 应用程序部署
部署基于 PHP 的 Web 应用程序有几种不同的方法,还有更多可用的子配置选项。
主要因素和区别在于网络服务器的选择。 一些最受欢迎的是:
- Nginx HTTP 服务器和反向代理
- Lighttpd(或轻量级)
- 阿帕奇
还有几种不同的 PHP 处理器可用于处理上述 Web 服务器 process 和 serve PHP 文件:
- mod_php
- 快速CGI
- PHP-FPM
网络服务器
Nginx HTTP 服务器和反向代理
Nginx 是一个非常高性能的 Web 服务器/(反向)代理。 由于重量轻、相对容易使用和易于扩展(使用附加组件/插件),它已经流行起来。 由于其架构,它能够处理 很多 的请求(几乎无限制),这取决于您的应用程序或网站负载 - 使用其他一些较旧的替代方案可能真的很难解决。 可以将 视为 工具,用于选择提供静态文件,例如图像、脚本或样式表。
轻量级
Lighttpd 是一个非常快速的 Web 服务器,它在许可 BSD 许可证 下获得许可。 它以比 Apache 更接近 Nginx 的方式工作和运行。 它处理请求的方式在内存和 CPU 占用方面非常低。
阿帕奇
Apache 是一个久经考验的、极其强大的 Web 服务器。 尽管它可能不再像以前那样受欢迎,但 Apache 仍然提供了许多新竞争对手没有的东西。 它还带有许多模块,可用于扩展默认功能并使 Apache 适合您的特定部署需求。
PHP 处理器
Web 服务器(大部分)并非旨在处理 PHP 脚本 - 也不是基于不同编程语言的其他服务器。 为此,它们依赖于外部库,每个库都以看起来相似但实际上非常不同的方式运行。 不同的 Web 服务器提供不同级别的集成 - 强烈建议您作为负责部署应用程序的人员,进行彻底的研究,以更好地了解它们的工作方式和方式。
mod_php
长期以来,mod_php 一直是最流行的 Apache 模块,也是部署 PHP Web 应用程序的首选。 它通过在 Apache 中嵌入 PHP 处理器来运行 PHP 脚本来工作。
优点:
- 极其稳定且经过良好测试。
- 处理不涉及外部依赖项。
- 性能极佳。
- 加载一次
php.ini
。 - 支持
.htaccess
配置。
快速CGI
FastCGI 的工作原理是通过套接字将外部 PHP 处理器安装与 Web 服务器连接起来。 这是用 ye old CGI 做同样事情的更高级方法。 可以认为 FastCGI 比使用 mod_php 更安全,因为它将处理器与 Web 服务器 process 分开(并将每个处理器与可能的有害漏洞隔离开来)。
优点:
- 消除了涉及静态内容的 PHP 处理器的需要。
- 消除了每个 Apache 进程使用 PHP 处理器的内存开销。
- 通过划分服务器和处理器引入额外的安全层。
PHP-FPM
PHP-FPM 包括对使用 PHP 的 FastCGI 方式的升级。 它带来了某些新功能和一种全新的处理请求的方式——为了(特别是)大型网站的利益。
优点:
- 自适应进程产生。
- 优雅的处理器管理。
- 与 FastCGI 相比,内存占用更小。
- 比 FastCGI 更具可配置性。
小花简介
Kohana 是一个 HMVC(分层模型视图控制器)框架,它提供了几乎所有开箱即用的必要工具,以构建一个可以快速开发、部署和维护的现代 Web 应用程序。
作为一个“轻量级”框架,Kohana 由分散在单个(应用程序)内的精心结构化目录中的文件组成——这意味着每个 kohana 包都可以被视为一个 Web 应用程序(减去可能的外部依赖项)。
Kohana 的构建方式在设计上使该框架非常适合部署。
关于我们的部署
在本文中,我们将使用 Nginx 和 PHP-FPM 进行部署,因为它提供的功能以及它们的受欢迎程度。 我们这里选择的数据库是 MySQL; 但是,您应该选择并使用另一个(例如 玛丽亚数据库)。 不要忘记您将需要迁移您的数据库 - 有关详细信息,请参阅最后部分。
为 Kohana 应用程序部署准备系统
我们将使用新实例化的 Ubuntu 13 VPS。 出于各种原因,强烈建议您在已经处于活动状态且正常工作的服务器设置上执行它们之前,先做同样的事情并尝试一切。
更新系统
我们将从将我们的虚拟服务器的默认应用程序工具集更新为最新可用的开始。
运行以下命令来执行此任务:
aptitude update aptitude -y upgrade
安装 Nginx
使用包管理器 aptitude
执行以下命令来安装 Nginx:
aptitude -y install nginx
运行以下命令启动服务器:
service nginx start
您可以访问 http://[your droplet's IP adde.]/
测试 Nginx 安装。 您应该会看到默认的欢迎屏幕。
安装 MySQL 5
我们将再次使用 aptitude
包管理器来安装 MySQL 和其他应用程序。 运行以下命令下载并安装 MySQL。
记住: 在安装过程中你会被提示几个关于root密码的问题。
aptitude -y install mysql-server mysql-client
使用 mysql_secure_installation
引导所有内容:
# Run the following to start the process mysql_secure_installation # Enter the root password you have chosen during installation # Continue with answering the questions, confirming all. # Ex.: # Remove anonymous users? [Y/n] Y # Disallow root login remotely? [Y/n] Y # .. # .
运行以下命令重新启动并检查 MySQL 安装的状态:
service mysql restart # mysql stop/waiting # mysql start/running, process 25012 service mysql status # mysql start/running, process 25012
安装 PHP (PHP-FPM)
为了使用 Nginx 处理 PHP 页面,我们将使用 PHP-FPM。 运行以下命令下载并安装应用程序包:
aptitude -y install php5 php5-fpm php5-mysql
这也将安装 PHP5 commons。
配置系统
安装必要的工具后,是时候通过进行最终的配置修改让我们的服务器准备好部署 PHP Web 应用程序了。
配置 PHP
我们将使用默认的 PHP 配置文件 php.ini
并使用文本编辑器 nano
对其进行编辑以进行一些小的更改。
运行以下命令以使用 nano 打开文件:
nano /etc/php5/fpm/php.ini
向下滚动文档并找到 ;cgi.fix_pathinfo=1
行。 修改它类似于以下内容以安全处理应用程序路径:
# Replace ;cgi.fix_pathinfo=1 with: cgi.fix_pathinfo=0
按 CTRL+X 保存并退出,然后按 Y 确认。
配置 Nginx
由于在本文中我们正在研究部署单个 Web 应用程序,因此我们的修改和配置选择是相应的。 为了使用 Nginx 托管多个应用程序,您需要使用 服务器块 。 要了解有关它们的更多信息,请查看 设置 Nginx 虚拟主机(服务器块)。
让我们编辑默认的 Nginx 网站配置。 运行以下命令以使用 nano 打开文件:
nano /etc/nginx/sites-available/default
复制并粘贴以下内容:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; # Set the default application path root # We are using my_app to host the application root /var/www/my_app; index index.php; # Replace the server_name with your own server_name localhost; location / { try_files $uri /index.php?$args; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; } } location ~ /\. { deny all; } location ~ \.php$ { try_files $uri = 404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
按 CTRL+X 保存并退出,然后按 Y 确认。
创建并进入应用部署目录/var/www
:
mkdir /var/www cd /var/www
测试配置并重启 Nginx 以获得生效的机会:
# Test the configurations nginx -t # Restart the server service nginx restart
部署 Kohana Web 应用程序
按照所做的配置,我们准备部署我们的应用程序。 该过程将包括两个主要步骤:
- 将代码库上传到服务器
- 修改
bootstrap.php
,确保设置正确。
将代码库上传到服务器
您可以使用 SFTP 或 FileZilla 等图形工具来安全地传输和管理远程文件。
要了解如何使用 SFTP,请查看文章:如何使用 SFTP。
要了解 FileZilla,请查看有关该主题的文章:如何使用 FileZilla。
注意: 如果您选择使用 FileZilla,请确保将 /var/www
设置为默认目录(这样可以节省一些时间)。
在此示例中,我们将使用默认(示例)Kohana 应用程序。
下载并准备 Kohana:
# Remember: The following commands assume that your current # working directory is set as /var/www/ wget https://github.com/kohana/kohana/releases/download/v3.3.1/kohana-v3.3.1.zip # You might need to install *unzip* before extracting the files aptitude install -y unzip # Unzip and extract the files unzip kohana-v3.3.1.zip -d my_app # Remove the zip package rm -v kohana-v3.3.1.zip # Enter the application directory cd my_app
引导部署(安装)
运行以下命令开始使用 nano 编辑配置文件:
nano application/bootstrap.php
编辑您的时区:
# Find date_default_timezone_set and set your timezone date_default_timezone_set('Europe/London');
设置您的语言环境:
# Find setlocale and set your locale setlocale(LC_ALL, 'en_UK.utf-8');
find end 编辑 base_url
匹配安装
# Find base_url and set the base application directory # Relative to the base Apache directory (i.e. /var/www/my_app) Kohana::init(array( 'base_url' => '/', ));
确保启用所有必要的模块:
# Find Kohana::modules and uncomment them Kohana::modules(array( 'auth' => MODPATH.'auth', // Basic authentication 'cache' => MODPATH.'cache', // Caching with multiple backends 'codebench' => MODPATH.'codebench', // Benchmarking tool 'database' => MODPATH.'database', // Database access 'image' => MODPATH.'image', // Image manipulation 'orm' => MODPATH.'orm', // Object Relationship Mapping 'oauth' => MODPATH.'oauth', // OAuth authentication 'pagination' => MODPATH.'pagination', // Paging of results 'unittest' => MODPATH.'unittest', // Unit testing 'userguide' => MODPATH.'userguide', // User guide and API documentation ));
按 CTRL+X 保存并退出,然后按 Y 确认。
设置可写的缓存和日志目录:
sudo chmod -R a+rwx application/cache sudo chmod -R a+rwx application/logs
就是这样! 现在您应该准备好运行您的 Kohana Web 应用程序了。
记住:你不应该忘记迁移你的应用程序数据(例如 MySQL 服务器数据库)从您的开发机器或其他服务器到您的 Droplet。 要了解如何执行此操作,请查看 如何在两台服务器之间迁移 MySQL 数据库 和相关评论以获取更多信息。