phpBB3.2开发环境配置

从Github导出项目

如果只是查看代码, 可以直接clone官方的git https://github.com/phpbb/phpbb.git . 如果需要开发, 就fork一下再从自己的Git里clone.

下载依赖

PhpStorm IDE方式

在PS中打开composer.json, 右上角会提示有install, 点击后, 选择系统中的PHP可执行文件, 选择下载composer.phar, 然后确定即可.

在墙内会比较慢, 可以在composer.json里加上这一段, 使用phpcomposer.com提供的镜像服务

"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

  

命令行方式:

在 phpBB 目录下执行

php ../composer.phar install

执行结果, 能看到项目依赖的各个库的版本, 其中symfony版本是3.4.15

~/PhpstormProjects/phpbb/phpBB$ php ../composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 76 installs, 0 updates, 0 removals
  - Installing composer/installers (v1.5.0): Downloading (100%)         
  - Installing bantu/ini-get-wrapper (v1.0.1): Downloading (100%)         
  - Installing symfony/process (v3.4.15): Downloading (100%)         
  - Installing symfony/finder (v3.4.15): Downloading (100%)         
  - Installing symfony/polyfill-ctype (v1.9.0): Downloading (100%)         
  - Installing symfony/filesystem (v3.4.15): Downloading (100%)         
  - Installing symfony/polyfill-mbstring (v1.9.0): Downloading (100%)         
  - Installing psr/log (1.0.2): Downloading (100%)         
  - Installing symfony/debug (v3.4.15): Downloading (100%)         
  - Installing symfony/console (v3.4.15): Downloading (100%)         
  - Installing seld/phar-utils (1.0.1): Downloading (100%)         
  - Installing seld/jsonlint (1.7.1): Downloading (100%)         
  - Installing justinrainbow/json-schema (5.2.7): Downloading (100%)         
  - Installing composer/xdebug-handler (1.3.0): Downloading (100%)         
  - Installing composer/spdx-licenses (1.4.0): Downloading (100%)         
  - Installing composer/semver (1.4.2): Downloading (100%)         
  - Installing composer/ca-bundle (1.1.2): Downloading (100%)         
  - Installing composer/composer (1.7.2): Downloading (100%)         
  - Installing google/recaptcha (1.2.1): Downloading (100%)         
  - Installing guzzlehttp/promises (v1.3.1): Downloading (100%)         
  - Installing psr/http-message (1.0.1): Downloading (100%)         
  - Installing guzzlehttp/psr7 (1.4.2): Downloading (100%)         
  - Installing lusitanian/oauth (v0.8.11): Downloading (100%)         
  - Installing marc1706/fast-image-size (v1.1.4): Downloading (100%)         
  - Installing patchwork/utf8 (v1.3.1): Downloading (100%)         
  - Installing psr/container (1.0.0): Downloading (100%)         
  - Installing s9e/text-formatter (0.13.1): Downloading (100%)         
  - Installing symfony/config (v3.4.15): Downloading (100%)         
  - Installing paragonie/random_compat (v1.4.3): Downloading (100%)         
  - Installing symfony/polyfill-php70 (v1.9.0): Downloading (100%)         
  - Installing symfony/http-foundation (v3.4.15): Downloading (100%)         
  - Installing symfony/event-dispatcher (v3.4.15): Downloading (100%)         
  - Installing symfony/http-kernel (v3.4.15): Downloading (100%)         
  - Installing symfony/dependency-injection (v3.4.15): Downloading (100%)         
  - Installing zendframework/zend-eventmanager (3.2.1): Downloading (100%)         
  - Installing zendframework/zend-code (2.6.3): Downloading (100%)         
  - Installing ocramius/proxy-manager (1.0.2): Downloading (100%)         
  - Installing symfony/proxy-manager-bridge (v3.4.15): Downloading (100%)         
  - Installing symfony/routing (v3.4.15): Downloading (100%)         
  - Installing twig/twig (v1.35.4): Downloading (100%)         
  - Installing symfony/twig-bridge (v3.4.15): Downloading (100%)         
  - Installing symfony/dom-crawler (v3.4.15): Downloading (100%)         
  - Installing symfony/css-selector (v3.4.15): Downloading (100%)         
  - Installing symfony/browser-kit (v3.4.15): Downloading (100%)         
  - Installing guzzlehttp/guzzle (6.3.3): Downloading (100%)         
  - Installing fabpot/goutte (v3.2.3): Downloading (100%)         
  - Installing facebook/webdriver (1.6.0): Downloading (100%)         
  - Installing symfony/yaml (v3.4.15): Downloading (100%)         
  - Installing laravel/homestead (v7.17.0): Downloading (100%)         
  - Installing phing/phing (2.4.14): Downloading (100%)         
  - Installing webmozart/assert (1.3.0): Downloading (100%)         
  - Installing phpdocumentor/reflection-common (1.0.1): Downloading (100%)         
  - Installing phpdocumentor/type-resolver (0.4.0): Downloading (100%)         
  - Installing phpdocumentor/reflection-docblock (3.3.2): Downloading (100%)         
  - Installing sebastian/version (2.0.1): Downloading (100%)         
  - Installing sebastian/resource-operations (1.0.0): Downloading (100%)         
  - Installing sebastian/recursion-context (2.0.0): Downloading (100%)         
  - Installing sebastian/object-enumerator (2.0.1): Downloading (100%)         
  - Installing sebastian/global-state (1.1.1): Downloading (100%)         
  - Installing sebastian/exporter (2.0.0): Downloading (100%)         
  - Installing sebastian/environment (2.0.0): Downloading (100%)         
  - Installing sebastian/diff (1.4.3): Downloading (100%)         
  - Installing sebastian/comparator (1.2.4): Downloading (100%)         
  - Installing phpunit/php-text-template (1.2.1): Downloading (100%)         
  - Installing doctrine/instantiator (1.0.5): Downloading (100%)         
  - Installing phpunit/phpunit-mock-objects (3.4.4): Downloading (100%)         
  - Installing phpunit/php-timer (1.0.9): Downloading (100%)         
  - Installing phpunit/php-file-iterator (1.4.5): Downloading (100%)         
  - Installing sebastian/code-unit-reverse-lookup (1.0.1): Downloading (100%)         
  - Installing phpunit/php-token-stream (1.4.12): Downloading (100%)         
  - Installing phpunit/php-code-coverage (4.0.8): Downloading (100%)         
  - Installing phpspec/prophecy (1.8.0): Downloading (100%)         
  - Installing myclabs/deep-copy (1.7.0): Downloading (100%)         
  - Installing phpunit/phpunit (5.7.27): Downloading (100%)         
  - Installing phpunit/dbunit (2.0.3): Downloading (100%)         
  - Installing squizlabs/php_codesniffer (2.9.1): Downloading (100%)         
symfony/console suggests installing symfony/lock
lusitanian/oauth suggests installing predis/predis (Allows using the Redis storage backend.)
patchwork/utf8 suggests installing ext-intl (Use Intl for best performance)
patchwork/utf8 suggests installing ext-wfio (Use WFIO for UTF-8 filesystem access on Windows)
s9e/text-formatter suggests installing ext-intl (Allows international URLs to be accepted by the URL filter)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
symfony/http-kernel suggests installing symfony/var-dumper
symfony/dependency-injection suggests installing symfony/expression-language (For using expressions in service container configuration)
zendframework/zend-eventmanager suggests installing container-interop/container-interop (^1.1.0, to use the lazy listeners feature)
zendframework/zend-eventmanager suggests installing zendframework/zend-stdlib (^2.7.3 || ^3.0, to use the FilterChain feature)
zendframework/zend-code suggests installing doctrine/annotations (Doctrine\Common\Annotations >=1.0 for annotation features)
zendframework/zend-code suggests installing zendframework/zend-stdlib (Zend\Stdlib component)
ocramius/proxy-manager suggests installing ocramius/generated-hydrator (To have very fast object to array to object conversion for ghost objects)
ocramius/proxy-manager suggests installing zendframework/zend-json (To have the JsonRpc adapter (Remote Object feature))
ocramius/proxy-manager suggests installing zendframework/zend-soap (To have the Soap adapter (Remote Object feature))
ocramius/proxy-manager suggests installing zendframework/zend-stdlib (To use the hydrator proxy)
ocramius/proxy-manager suggests installing zendframework/zend-xmlrpc (To have the XmlRpc adapter (Remote Object feature))
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/twig-bridge suggests installing symfony/asset (For using the AssetExtension)
symfony/twig-bridge suggests installing symfony/expression-language (For using the ExpressionExtension)
symfony/twig-bridge suggests installing symfony/form (For using the FormExtension)
symfony/twig-bridge suggests installing symfony/security (For using the SecurityExtension)
symfony/twig-bridge suggests installing symfony/stopwatch (For using the StopwatchExtension)
symfony/twig-bridge suggests installing symfony/templating (For using the TwigEngine)
symfony/twig-bridge suggests installing symfony/translation (For using the TranslationExtension)
symfony/twig-bridge suggests installing symfony/var-dumper (For using the DumpExtension)
symfony/twig-bridge suggests installing symfony/web-link (For using the WebLinkExtension)
facebook/webdriver suggests installing ext-SimpleXML (For Firefox profile creation)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.5.1)
phpunit/phpunit suggests installing ext-xdebug (*)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Generating autoload files

在PhpStorm中同时打开多个项目

点击Open后选中项目目录, 在弹出的对话框中, 选择Open in current window, 勾选 Add to currently opened projects.

Nginx配置文件

在phpBB3.2中已经默认使用Restful URL, 例如升级时, 使用的地址是 forum/install/app.php/update, FAQ页面的地址就是 forum/app.php/help/faq , 在论坛安装完成之后, 虽然还可以沿用传统的URL传参形式, 但是要追求完美的话还是要把rewrite加上. 在编写nginx配置时还有另一个考虑就是安全问题. 现在引入那么多第三方库, 可以说出现漏洞的风险是非常大的, 要尽可能地避免这些第三方库带来的安全问题, 首先最简单最容易做到的就是禁止外界直接访问这些脚本.

以下是我使用的Nginx配置文件, 可以根据自己的实际情况修改.

server {
    listen       80;
    server_name  www.rockbb.com;
    access_log  logs/rockbb.access.log  main;

    location / {
        root   /var/wwwroot/rockbb;
        index  index.html index.htm index.php;
    }

    # Correctly pass scripts for installer
    location /forum/app.php {
        root   /var/wwwroot/rockbb;
        index index.html index.php;

        location ~ \.php(/|$) {
            include fastcgi_params;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME /var/wwwroot/rockbb$fastcgi_script_name;
            fastcgi_pass   127.0.0.1:9000;
        }
    }

    # 禁止访问内部phpbb文件
    location ~ /forum/(bin|cache|config|ext|files|images/avatars/upload|includes|language|phpbb|
store|vendor|config\.php|common\.php).* {
        deny all;
        internal;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        root           /var/wwwroot/rockbb;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

几个location匹配的优先级说明

规则是:
先精确匹配, 匹配上哪个就立即用哪个; 然后普通匹配, 不管是否匹配上, 继续进行正则匹配, 如果正则匹配不上, 则回退至上一个普通匹配. 其中普通匹配没有顺序之分, 哪个匹配最精确就使用哪个location, 而正则匹配按照规则的书写顺序进行, 只要匹配上哪个就用哪个:

  • =   精确匹配, 匹配后停止后续匹配, 直接执行该匹配后的configuration
  • [空格]  前缀匹配. 匹配后继续更长前缀匹配和正则匹配
  • ^~  非正则匹配, 终态前缀匹配(注意与空格的前缀匹配进行区别), 匹配该前缀后,停止后续正则匹配
  • ~ 区分大小写的正则匹配, 按顺序匹配,一旦匹配上即停止后续匹配
  • ~* 不区分大小写的匹配, 一旦匹配即停止后续匹配

所以nginx配置文件的书写顺序建议是: 先写 = 号(精确匹配)部分, 然后写[空格] 前缀匹配部分, 然后写^~这种前缀匹配, 最后写正则匹配.

 

posted on 2018-11-21 12:10  Milton  阅读(360)  评论(0编辑  收藏  举报

导航