如何使用 Nginx 和 PHP-FPM 在 Debian 7 / Ubuntu 13 VPS 上部署 Kohana PHP 应用程序

介绍


Kohana 作为一个独立的包,每个副本都构成了新的 Web 应用程序的基础,这使得部署非常容易。

在这篇DigitalOcean文章中,在我们之前关于安装和开始使用Kohana的文章之后,我们将看到如何准备VPS来部署基于Kohana的PHPWeb应用程序 - 使用Debian 7 / Ubuntu 13作为我们的主机操作系统。

说明: 这是我们Kohana系列的第三篇文章,其重点是部署使用框架构建的应用程序。 要看到第一部分并了解安装情况,请检查[从Kohana起 (https://www.digitalocean.com/community/articles/how-to-install-and-setup-kohana-a-php-web-application-development-framework). 要了解构建网络应用程序的框架模块,请检查[HMVC PHP5 Framework Kohana]构建网络应用程序(https://www.digitalocean.com/community/articles/how-to-build-web-applications-with-hmvc-php5-framework-kohana).

词汇


1. 基于 PHP 的 Web 应用部署


2 网页服务器


11. Nginx HTTP Server and Reverse-Proxy
22. Lighttpd
33. Apache

3 PHP 处理器


11. mod_php
22. FastCGI
33. PHP-FPM

第4章 简短地说


5 关于我们的部署


6:为Kohana应用部署准备系统


11. Updating the System
22. Installing Nginx
33. Installing MySQL 5
44. Installing PHP (PHP-FPM)

7 配置系统


11. Configuring PHP
22. Configuring Nginx

8 部署一个 Kohana Web 应用程序


11. Uploading the Code Base To The Server
22. Bootstrapping the Deployment (Installation)

PHP 基于 Web 应用的部署


有几种不同的方法来部署基于PHP的Web应用程序,更多的子配置选项可用。

主要因素和差异因素是选择Web服务器,其中一些最受欢迎的是:

Nginx HTTP 服务器和反向代理* Lighttpd* (或轻量级)** Apache*

还有一些不同的PHP处理器可以用来拥有上面的Web服务器 _process_和 serve PHP文件:


Web 服务器


Nginx HTTP 服务器和反向代理


Nginx是一个非常高的表演网络服务器 / (反转)- 代理. 由于重量较轻,比较容易与公司合作,而且易于扩展(加上了加载/插件),因此获得了人们的欢迎. 由于它的架构,它能够处理_很多请求(几乎无限),这些请求——取决于您的应用程序或网站的负载——可能真的很难使用其他更古老的替代品来处理。 它可以被认为是_the_工具,用于选择为图像,脚本或样式表等静态文件服务.

点击点击`Lighttpd


Lighttpd 是一个非常快的 Web 服务器,在允许 BSD 许可证 下获得许可。它以比 Apache 更接近 Nginx 的方式工作和运作。

主題:apache


Apache 是一个经过长时间的测试和测试,非常强大的 Web 服务器. 虽然它可能没有它的旧的受欢迎性,Apache 仍然提供了许多东西,其新的竞争对手没有。

PHP 处理器


网页服务器(大多数情况下)不设法处理PHP脚本 - 也不是其他基于不同的编程语言。 要做到这一点,它们依赖于外部库,每个图书馆以类似的外观,但实际上非常不同的方式运作。

使用 mod_php


很长一段时间以来,mod_php 一直是最受欢迎的 Apache 模块,也是部署 PHP Web 应用程序的最佳选择,它通过嵌入 Apache 内部的 PHP 处理器来运行 PHP 脚本。

优点:

  • 非常稳定且经过测试 * 没有外部依赖因素参与处理 * 非常高性能 * 一次加载php.ini * 支持.htaccess 配置。

快速


FastCGI通过通过插件连接外部PHP处理器安装到Web服务器来工作. 这是一个更先进的方式来做与 ye old CGI 相同的事情. FastCGI 可以被认为比与 _mod_php 工作更安全,因为它将处理器与Web服务器 process 分开(并隔离每一个可能的有害利用)。

优点:

  • 消除了需要涉及PHP处理器的静态内容 * 消除了使用PHP处理器每个Apache流程的内存过剩 * 通过分离服务器和处理器带来额外的安全层。

PHP-FPM 功能


PHP-FPM包括升级到FastCGI使用PHP的方式,它带来了一些新功能和处理请求的全新方式 - 有利于(尤其是)更大的网站。

优点:

  • 适应性的流程发育 * 优良的处理器管理 * 与 FastCGI 相比,较小的内存足迹 * 比 FastCGI 更可配置。

科哈纳 简要


Kohana是一个HMVC( Hierarchical Model View Controller)框架,提供几乎所有必要的工具,以便构建一个可以快速开发,部署和维护的现代Web应用程序。

作为一个)目录中精心结构的文件组成,这意味着每个Kohana包可以被视为Web应用程序(减去可能的外部依赖)。

Kohana是如何构建的,通过设计,使这个框架非常友好部署。

关于我们的部署


在本文中,我们将使用 Nginx 并与 PHP-FPM 进行部署,因为提供的功能 - 以及它们的普及性。我们在这里选择的数据库是MySQL;然而,您应该选择并使用另一种(例如MariaDB)。

为Kohana应用部署准备系统


出于各种原因,我们强烈建议你做同样的事情,并尝试一切,然后在已经活跃和工作服务器设置上执行它们。

更新系统


我们将开始更新我们虚拟服务器的默认应用程序工具集到最新的可用性。

运行以下操作来执行此任务:

1aptitude update
2aptitude -y upgrade

安装 Nginx


执行以下操作以使用aptitude包管理器安装 Nginx:

1aptitude -y install nginx

运行下面的命令来启动服务器:

1service nginx start

您可以访问 http://[your droplet's IP add.]/ 来测试 Nginx 安装。您应该看到默认的欢迎屏幕。

安装 MySQL 5


我们将再次使用aptitude包管理器来安装MySQL和其他应用程序,运行下面的命令来下载和安装MySQL。

请记住: 在安装过程中,您将被提示提出关于 _root 密码的几个问题。

1aptitude -y install mysql-server mysql-client

使用mysql_secure_installation启动所有内容:

 1# Run the following to start the process
 2mysql_secure_installation
 3
 4# Enter the root password you have chosen during installation    
 5# Continue with answering the questions, confirming all.
 6# Ex.:
 7# Remove anonymous users? [Y/n] Y
 8# Disallow root login remotely? [Y/n] Y
 9# ..
10# .

运行下面的命令来重新启动并检查您的MySQL安装的状态:

1service mysql restart
2# mysql stop/waiting
3# mysql start/running, process 25012
4
5service mysql status
6# mysql start/running, process 25012

PHP 安装(PHP-FPM)


要使用 Nginx 处理 PHP 页面,我们将使用 PHP-FPM. 运行以下操作来下载和安装应用程序包:

1aptitude -y install php5 php5-fpm php5-mysql

它还会安装 PHP5共用

配置系统


安装必要的工具后,是时候让我们的服务器准备好部署PHPWeb应用程序,通过进行最终的配置更改。

配置 PHP


我们将使用默认的PHP配置文件php.ini进行编辑,并使用文本编辑器nano进行编辑,以进行一些小更改。

运行以下操作以使用 nano 打开文件:

1nano /etc/php5/fpm/php.ini

向下滚动,找到行 ;cgi.fix_pathinfo=1. 将其修改为如下,以便安全地处理应用路径:

1# Replace ;cgi.fix_pathinfo=1 with:
2cgi.fix_pathinfo=0

保存和退出,按 CTRL + X 并用 Y 确认。

配置 Nginx


由于在本文中我们正在研究部署一个单一的Web应用程序,因此我们的修改和配置选择是相应的。 为了使用 Nginx 托管多个应用程序,您需要使用 _server blocks。 有关它们的更多信息,请参阅 设置 Nginx 虚拟主机(服务器块)

让我们编辑默认的 Nginx 网站配置,运行以下操作以使用 nano 打开文件:

1nano /etc/nginx/sites-available/default

复制并粘贴下面的内容:

 1server {
 2
 3    listen 80 default_server;
 4    listen [::]:80 default_server ipv6only=on;
 5
 6    # Set the default application path root
 7    # We are using my_app to host the application
 8    root /var/www/my_app;
 9    index index.php;
10
11    # Replace the server_name with your own
12    server_name localhost;
13
14    location /
15    {
16        try_files $uri /index.php?$args;
17
18        if (!-e $request_filename)
19        {
20            rewrite ^/(.*)$ /index.php/$1 last;
21        }
22    }
23
24    location ~ /\.
25    {
26        deny all;
27    }
28
29    location ~ \.php$
30    {
31        try_files $uri = 404;
32        fastcgi_pass unix:/var/run/php5-fpm.sock;
33        fastcgi_index index.php;
34        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
35        include fastcgi_params;
36    }
37
38}

保存和退出,按 CTRL + X 并用 Y 确认。

创建并输入应用部署目录 /var/www:

1mkdir /var/www
2cd /var/www

测试配置并重新启动 Nginx 以获取生效的机会:

1# Test the configurations
2nginx -t
3
4# Restart the server
5service nginx restart

部署一个 Kohana Web 应用程序


在完成配置后,我们已经准备好部署我们的应用程序,该过程将由两个主要步骤组成:

  1. 将代码库上传到服务器 2. 修改 bootstrap.php 以确保它正确设置。

将代码库上传到服务器


您可以使用 SFTP 或图形工具,例如 FileZilla,安全地传输和管理远程文件。

要了解如何使用 SFTP,请参阅文章: 如何使用 SFTP

要了解有关FileZilla的信息,请参阅该主题的文章: 如何使用FileZilla

注: 如果您选择使用FileZilla,请确保将)。

在本示例中,我们将与默认(示例)Kohana应用程序一起工作。

下载并准备Kohana:

 1# Remember: The following commands assume that your current
 2#           working directory is set as /var/www/
 3
 4wget https://github.com/kohana/kohana/releases/download/v3.3.1/kohana-v3.3.1.zip
 5
 6# You might need to install *unzip* before extracting the files    
 7aptitude install -y unzip 
 8
 9# Unzip and extract the files
10unzip kohana-v3.3.1.zip -d my_app
11
12# Remove the zip package
13rm -v kohana-v3.3.1.zip
14
15# Enter the application directory
16cd my_app

Bootstrapping 部署(安装)


运行以下操作以使用 nano 开始编辑配置文件:

1nano application/bootstrap.php

编辑你的时区:

1# Find date_default_timezone_set and set your timezone
2date_default_timezone_set('Europe/London');

设定您的地点:

1# Find setlocale and set your locale
2setlocale(LC_ALL, 'en_UK.utf-8');

Find end 编辑 base_url 以匹配安装

1# Find base_url and set the base application directory
2# Relative to the base Apache directory (i.e. /var/www/my_app)
3
4Kohana::init(array(
5    'base_url' => '/',
6));

请确保启用所有必要的模块:

 1# Find Kohana::modules and uncomment them
 2
 3Kohana::modules(array(
 4    'auth'       => MODPATH.'auth',       // Basic authentication
 5    'cache'      => MODPATH.'cache',      // Caching with multiple backends
 6    'codebench'  => MODPATH.'codebench',  // Benchmarking tool
 7    'database'   => MODPATH.'database',   // Database access
 8    'image'      => MODPATH.'image',      // Image manipulation
 9    'orm'        => MODPATH.'orm',        // Object Relationship Mapping
10    'oauth'      => MODPATH.'oauth',      // OAuth authentication
11    'pagination' => MODPATH.'pagination', // Paging of results
12    'unittest'   => MODPATH.'unittest',   // Unit testing
13    'userguide'  => MODPATH.'userguide',  // User guide and API documentation
14));

保存和退出,按 CTRL + X 并用 Y 确认。

设置可编写的缓存和日志目录目录:

1sudo chmod -R a+rwx application/cache
2sudo chmod -R a+rwx application/logs

现在你应该有你的KohanaWeb应用程序准备运行。

请记住: 您不应该忘记将您的应用程序数据(例如 MySQL 服务器数据库)从您的开发机或其他服务器迁移到您的 dropplet. 要了解如何这样做,请参阅 How To Migrate a MySQL Database Between Two Servers和相关评论,以获取更多信息。

Submitted by: O.S. Tezer
Published At
Categories with 技术
comments powered by Disqus