CakePHP系列(三)----安装

安装

CakePHP简单易于安装。 最低要求是一个Web服务器和一个CakePHP的副本,就是它! 虽然本章主要关注Apache的设置(因为它很容易安装和设置),CakePHP将运行在各种web服务器上,如nginx,LightHTTPD或Microsoft IIS。


要求

  • HTTP服务器。 比如:Apache。 有mod_rewrite是首选,但不是必需的。
  • PHP 5.6.0或更高版本(包括PHP 7)。
  • mbstring PHP扩展
  • intl PHP扩展

▲ 注意:

在XAMPP和WAMP中,mbstring扩展默认工作。


在XAMPP中,包括intl扩展,但是您必须extension=php_intl.dll对php.ini中的 extension=php_intl.dll的注释 ,并通过XAMPP控制面板重新启动服务器。


在WAMP中,intl扩展默认是“激活”,但不工作。 要使它工作,你必须去php文件夹(默认) C:\ wamp \ bin \ php \ php {版本} ,复制所有看起来像icu * .dll的文件 ,并将它们粘贴到apache bin目录C: \ wamp \ bin \ apache \ apache {version} \ bin 。 然后重新启动所有服务,它应该是确定。


虽然不需要数据库引擎,但我们认为大多数应用程序将使用一个。 CakePHP支持各种数据库存储引擎:


  • MySQL(5.1.10或更高版本)
  • PostgreSQL
  • Microsoft SQL Server(2008或更高版本)
  • SQLite 3
▲ 注意: 所有内置驱动程序都需要PDO。 您应确保已安装正确的PDO扩展。


安装CakePHP


在开始之前,你应该确保你有一个最新的PHP版本:

 php -v

你应该至少已经安装了PHP 5.6.0(CLI)或更高版本。   您的网络服务器的PHP版本也必须是5.6.0或更高版本,并且最好是与您的命令行界面(CLI)PHP版本相同的版本。


安装Composer

CakePHP使用Composer ,一个依赖项管理工具,作为正式支持的安装方法。

  • 在Linux和macOS上安装Composer

    1. 按照官方Composer文档中所述运行安装程序脚本,然后按照说明安装Composer。

    2. 执行以下命令将composer.phar移动到路径中的目录:

mv composer.phar /usr/local/bin/composer

  • 在Windows上安装Composer

    对于Windows系统,您可以在此处下载Composer的Windows安装程序。 Composer的Windows安装程序的更多说明可以在这里的README中找到 。

创建CakePHP项目


现在您已经下载并安装了Composer,假设您想要在my_app_name文件夹中创建一个新的CakePHP应用程序。 为此,只需运行以下composer命令:

php composer.phar create-project --prefer-dist cakephp/app my_app_name

或者如果Composer是全局安装的:

composer self-update && composer create-project --prefer-dist cakephp/app my_app_name


Composer完成下载应用程序框架和核心CakePHP库后,您应该具有通过Composer安装的运行的CakePHP应用程序。 请确保将composer.json和composer.lock文件与其余源代码保持一致。

您现在可以访问您安装了CakePHP应用程序的路径,并查看默认主页。 要更改此页面的内容,请编辑src / Template / Pages / home.ctp 。

虽然composer是推荐的安装方法,但是在Github上提供了预安装的下载。 这些下载包含安装了所有供应商包的应用程序框架。 它还包括composer.phar所以你有一切你需要进一步使用。


保持最新的CakePHP更改

默认情况下,这是你的应用程序composer.json看起来像:

"require": {
    "cakephp/cakephp": "3.4.*"
}


每次运行php composer.phar update您将收到此次要版本的修正版本。 你可以改为~3.4 ,也接收3.x分支的最新稳定版本。

如果你想保持最新的未发布的更改在CakePHP指定dev-master作为应用程序的composer.json中的软件包版本:

"require": {
    "cakephp/cakephp": "dev-master"
}

请注意,不推荐,因为您的应用程序可能会在下一个主要版本发布时中断。 此外,composer不会缓存开发分支,因此会减慢连续的composer安装/更新速度。

权限

CakePHP使用tmp目录进行许多不同的操作。 模型描述,缓存视图和会话信息仅仅是几个示例。 logs目录用于由默认的FileLog引擎写入日志文件。

因此,确保目录日志 , tmp及其CakePHP安装中的所有子目录都是可由Web服务器用户写入的。 Composer的安装过程使tmp及其子文件夹全局可写,以便快速启动和运行,但您可以更新权限以获得更好的安全性,并使其只对Web服务器用户可写。

一个常见的问题是, 日志tmp目录和子目录必须由Web服务器和命令行用户都可写。 在UNIX系统上,如果Web服务器用户与命令行用户不同,则可以在项目中从应用程序目录运行以下命令,以确保权限设置正确:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
setfacl -R -m u:${HTTPDUSER}:rwx tmp
setfacl -R -d -m u:${HTTPDUSER}:rwx tmp
setfacl -R -m u:${HTTPDUSER}:rwx logs
setfacl -R -d -m u:${HTTPDUSER}:rwx logs

为了使用CakePHP控制台工具,您需要确保bin/cake文件是可执行的。 在* nix或macOS上,您可以执行:

chmod +x bin/cake

在Windows上, .bat文件应该是可执行的。 如果您使用Vagrant或任何其他虚拟化环境,任何共享目录都需要与执行权限共享(请参阅虚拟化环境的文档,了解如何执行此操作)。

如果由于某种原因无法更改bin/cake文件的权限,则可以使用以下命令运行CakePHP控制台:

php bin/cake.php

开发服务器

开发安装是设置CakePHP的最快方法。 在这个例子中,我们将使用CakePHP的控制台运行PHP的内置Web服务器,这将使您的应用程序在 http://host:port 从应用程序目录中,执行:

bin/cake server

默认情况下,没有提供任何参数,这将在http://localhost:8765/为您的应用程序提供服务。

如果您有与localhost或端口8765 冲突 ,您可以告诉CakePHP控制台使用以下参数在特定主机和/或端口上运行Web服务器:

bin/cake server -H 192.168.13.37 -p 5673

这将为您的应用程序在http://192.168.13.37:5673/ 。

而已! 您的CakePHP应用程序已启动并正在运行,而无需配置Web服务器。

▲ 注意:开发服务器绝不应在生产环境中使用。 它只是作为一个基本的开发服务器。

如果你更喜欢使用一个真正的web服务器,你应该能够移动你的CakePHP安装(包括隐藏的文件)在你的web服务器的文档根目录。 然后,您应该能够将Web浏览器指向您将文件移动到的目录,并查看您的应用程序的操作。

生产

生产安装是一种更灵活的设置CakePHP的方法。 使用此方法允许整个域充当单个CakePHP应用程序。 此示例将帮助您在文件系统的任何位置安装CakePHP,并使其在http://www.example.com上可用 。 请注意,此安装可能需要有权更改Apache Web服务器上的DocumentRoot。

在使用上述方法之一将应用程序安装到您选择的目录中之后 - 我们假设您选择了/cake_install - 您的生产设置在文件系统上将如下所示:

/cake_install/
    bin/
    config/
    logs/
    plugins/
    src/
    tests/
    tmp/
    vendor/
    webroot/ (this directory is set as DocumentRoot)
    .gitignore
    .htaccess
    .travis.yml
    composer.json
    index.php
    phpunit.xml.dist
    README.md

使用Apache的开发人员应将域的DocumentRoot指令设置为:

DocumentRoot /cake_install/webroot

如果您的Web服务器配置正确,您现在应该可以在http://www.example.com找到您的CakePHP应用程序 。

火起来

好吧,让我们看看CakePHP在行动。 根据您使用的设置,您应该将浏览器指向http://example.com/http://localhost:8765/ 。 此时,您将看到CakePHP的默认主目录,并显示一条消息,告诉您当前数据库连接的状态。

恭喜! 您已准备好创建您的第一个CakePHP应用程序 。


URL重写

虽然CakePHP被构建为与开箱即用的mod_rewrite一起工作,通常我们注意到,有些用户很难在系统上播放所有内容。

这里有一些东西,你可能会试图让它正常运行。 首先看看你的httpd.conf。 (确保您正在编辑系统httpd.conf,而不是用户或站点特定的httpd.conf。)

这些文件可能因不同的发行版和Apache版本而异。 您还可以查看http://wiki.apache.org/httpd/DistrosDefaultLayout了解更多信息。

1.确保允许.htaccess覆盖,并且对于正确的DocumentRoot,AllowOverride设置为All。 您应该会看到类似于:

# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the 
# features.
<Directory />
    Options FollowSymLinks
    AllowOverride All
#    Order deny,allow
#    Deny from all
</Directory>

2.确保您正确加载mod_rewrite。 你应该会看到:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

在许多系统中,这些将默认被注释掉,所以你可能只需要删除前面的#符号。

进行更改后,重新启动Apache以确保设置处于活动状态。

验证您的.htaccess文件实际上在正确的目录。 某些操作系统会处理以“。”开头的文件。 作为隐藏,因此不会复制它们。

3.确保您的CakePHP副本来自网站或我们的Git存储库的下载部分,并且通过检查.htaccess文件已正确解包。

CakePHP应用程序目录(将通过烘焙复制到应用程序的顶层目录中):

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    webroot/    [L]
   RewriteRule    (.*) webroot/$1    [L]
</IfModule>

CakePHP webroot目录(将通过烘焙复制到应用程序的web根目录):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

如果您的CakePHP网站仍然有与mod_rewrite的问题,您可能想尝试修改虚拟主机的设置。 在Ubuntu上,编辑文件/ etc / apache2 / sites-available / default (位置取决于分发)。 在此文件中,确保AllowOverride None更改为AllowOverride All ,因此您必须:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order Allow,Deny
    Allow from all
</Directory>

在macOS上,另一种解决方案是使用工具virtualhostx使虚拟主机指向您的文件夹。

对于许多托管服务(GoDaddy,1and1),您的Web服务器实际上是从已经使用mod_rewrite的用户目录提供服务。 如果将CakePHP安装到用户目录( http://example.com/~username/cakephp/ )或已经使用mod_rewrite的任何其他URL结构中,则需要向.htaccess文件中添加RewriteBase语句CakePHP使用(.htaccess,webroot / .htaccess)。

这可以添加到与RewriteEngine指令相同的部分,因此,例如,您的webroot .htaccess文件将如下所示:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /path/to/app
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

这些更改的详细信息将取决于您的设置,并且可以包括与CakePHP无关的其他内容。 有关详细信息,请参阅Apache的联机文档。

4.(可选)要改进生产设置,应防止无效资产被CakePHP解析。 将您的webroot .htaccess修改为:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /path/to/app/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/(webroot/)?(img|css|js)/(.*)$
    RewriteRule ^ index.php [L]
</IfModule>

以上只是防止不正确的资产发送到index.php,而是显示您的网络服务器的404页面。

此外,您可以创建匹配的HTML 404页面,或通过添加ErrorDocument指令使用默认的内置CakePHP 404:

ErrorDocument 404 /404-not-found

nginx

nginx不使用像Apache这样的.htaccess文件,所以有必要在站点可用的配置中创建那些重写的URL。 这通常在/etc/nginx/sites-available/your_virtual_host_conf_file 。 根据您的设置,您将必须修改此,但至少,您将需要PHP作为FastCGI实例运行:

server {
    listen   80;
    server_name www.example.com;
    rewrite ^(.*) http://example.com$1 permanent;
}

server {
    listen   80;
    server_name example.com;

    # root directive should be global
    root   /var/www/example.com/public/webroot/;
    index  index.php;

    access_log /var/www/example.com/log/access.log;
    error_log /var/www/example.com/log/error.log;

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

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

在一些服务器(像Ubuntu 14.04)上面的配置不会开箱即用,而nginx文档建议一个不同的方法(http://nginx.org/en/docs/http/converting_rewrite_rules.html )。 你可能会尝试以下(你会注意到这也只是一个服务器{}块,而不是两个,虽然如果你想要example.com解决到您的CakePHP应用程序除了www.example.com参考上面的nginx链接):

server {
    listen   80;
    server_name www.example.com;
    rewrite 301 http://www.example.com$request_uri permanent;

    # root directive should be global
    root   /var/www/example.com/public/webroot/;
    index  index.php;

    access_log /var/www/example.com/log/access.log;
    error_log /var/www/example.com/log/error.log;

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

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

IIS7(Windows主机)

IIS7本身不支持.htaccess文件。 虽然有可以添加此支持的附加组件,您还可以将htaccess规则导入IIS以使用CakePHP的本机重写。 为此,请按照下列步骤操作:

  1. 使用Microsoft的Web平台安装程序安装URL Rewrite Module 2.0或直接下载( 32位 / 64位 )。
  2. 在CakePHP根文件夹中创建一个名为web.config的新文件。
  3. 使用记事本或任何XML安全编辑器,将以下代码复制到新的web.config文件中:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name=
                  stopProcessing=>
                    <match url= ignoreCase= />
                    <action type= />
                </rule>
                <rule name=
                  stopProcessing=>
                    <match url= />
                    <action type= url=
                      appendQueryString= />
                </rule>
                <rule name=
                  stopProcessing=>
                    <match url= ignoreCase= />
                    <action type= url=
                      appendQueryString= />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

一旦使用正确的IIS友好的重写规则创建web.config文件,CakePHP的链接,CSS,JavaScript和重新路由应该正常工作。

我不能使用URL重写

如果你不想要或不能得到mod_rewrite(或一些其他兼容模块)并在你的服务器上运行,你需要使用CakePHP内置的漂亮的URL。 config / app.php中 ,取消注释看起来像这样的行:

'App' => [
    // ...
    // 'baseUrl' => env('SCRIPT_NAME'),
]

同时删除.htaccess文件:

/.htaccess
webroot/.htaccess

这会使您的网址类似于www.example.com/index.php/controllername/actionname/param,而不是www.example.com/controllername/actionname/param。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值