TSS/SkeletonApplication
Introduction
This is a skeleton application fork using the Zend Framework MVC layer and module
systems. This application is meant to be used as a starting place for those
looking to get their feet wet with Zend Framework., (*1)
Installation using Composer
The easiest way to create a new Zend Framework project is to use
Composer. If you don't have it already installed,
then please install as per the documentation., (*2)
To create your new Zend Framework project:, (*3)
$ composer create-project -sdev zetta-code/tss-skeleton path/to/install
Once installed, you can test it out immediately using PHP's built-in web server:, (*4)
$ php -S 0.0.0.0:8080 -t public/ public/index.php
This will start the cli-server on port 8080, and bind it to all network
interfaces., (*5)
Note: The built-in CLI server is for development only., (*6)
Development mode
The skeleton ships with zf-development-mode
by default, and provides three aliases for consuming the script it ships with:, (*7)
$ composer development-enable # enable development mode
$ composer development-disable # enable development mode
$ composer development-status # whether or not development mode is enabled
You may provide development-only modules and bootstrap-level configuration in
config/development.config.php.dist
, and development-only application
configuration in config/autoload/development.local.php.dist
. Enabling
development mode will copy these files to versions removing the .dist
suffix,
while disabling development mode will remove those copies., (*8)
Running Unit Tests
To run the supplied skeleton unit tests, you need to do one of the following:, (*9)
- During initial project creation, select to install the MVC testing support.
-
After initial project creation, install zend-test:, (*10)
$ composer require --dev zendframework/zend-test
Once testing support is present, you can run the tests using:, (*11)
$ ./vendor/bin/phpunit
If you need to make local modifications for the PHPUnit test setup, copy
phpunit.xml.dist
to phpunit.xml
and edit the new file; the latter has
precedence over the former when running tests, and is ignored by version
control. (If you want to make the modifications permanent, edit the
phpunit.xml.dist
file.), (*12)
Using Vagrant
This skeleton includes a Vagrantfile
based on ubuntu 14.04, and using the
ondrej/php PPA to provide PHP 7.0. Start it up using:, (*13)
$ vagrant up
Once built, you can also run composer within the box. For example, the following
will install dependencies:, (*14)
$ vagrant ssh -c 'composer install'
While this will update them:, (*15)
$ vagrant ssh -c 'composer update'
While running, Vagrant maps your host port 8080 to port 80 on the virtual
machine; you can visit the site at http://localhost:8080/, (*16)
Using docker-compose
This skeleton provides a docker-compose.yml
for use with
docker-compose; it
uses the Dockerfile
provided as its base. Build and start the image using:, (*17)
$ docker-compose up -d --build
At this point, you can visit http://localhost:8080 to see the site running., (*18)
You can also run composer from the image. The container environment is named
"zf", so you will pass that value to docker-compose run
:, (*19)
$ docker-compose run zf composer install
Web server setup
Apache setup
To setup apache, setup a virtual host to point to the public/ directory of the
project and you should be ready to go! It should look something like below:, (*20)
<VirtualHost *:80>
ServerName zf2-app.localhost
DocumentRoot /path/to/zf2-app/public
<Directory /path/to/zf2-app/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
</VirtualHost>
Nginx setup
To setup nginx, open your /path/to/nginx/nginx.conf
and add an
include directive below
into http
block if it does not already exist:, (*21)
http {
# ...
include sites-enabled/*.conf;
}
Create a virtual host configuration file for your project under /path/to/nginx/sites-enabled/zf2-app.localhost.conf
it should look something like below:, (*22)
server {
listen 80;
server_name zf2-app.localhost;
root /path/to/zf2-app/public;
location / {
index index.php;
try_files $uri $uri/ @php;
}
location @php {
# Pass the PHP requests to FastCGI server (php-fpm) on 127.0.0.1:9000
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /path/to/zf2-app/public/index.php;
include fastcgi_params;
}
}
Restart the nginx, now you should be ready to go!, (*23)