outlast web & mobile development - internal documentation


Setting up localhost with Zend Server Free


This is no longer relevant documentation. Please see setting up your development environment instead.

Install and prepare

Install software in the following order:

  1. Mysql Community Edition 5.5 (do this first!)
  2. Zend Server Free Edition

After installing Zend Server Free edition the next step is to set it up for localhost and multi-site use. This way you can have several different virtual domains instead of viewing everything through “localhost”.

To edit files, we will use Terminal (sudo nano /file/to/edit) on Mac OS X and Sublime Text on Windows.

Disable Mac OS X built-in Apache

Depending on the version, Mac OS X typically ships with its own Apache server. We usually need to disable this in order to use the Zend Server one instead. You can also just continue running Zend on an alternate port and keep Mac OS X’s built-in server as well.

First, let’s modify the launch daemon to start our own Zend Apache:

sudo nano /System/Library/LaunchDaemons/org.apache.httpd.plist

You’ll need to change the following line:

<string>/usr/sbin/httpd</string>

To:

<string>/usr/local/zend/apache2/bin/httpd</string>

Next, in case it is not already done, you can enable the launch daemon:

sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist

Now, the next time you restart your computer, Mac OS X will fire up Zend Apache instead of its own.

Basic setup for Zend

We will first edit the http.con file:
sudo nano /usr/local/zend/apache2/conf/httpd.conf
[todo: add Windows path here]

First, let’s change the default port to 80 (unless you also want to use the built in webserver for whatever reason – skip this step if you do). Let’s change the line “Listen” parameter to 80:

Listen 80

Next, let’s change the DocumentRoot to our Sites folder. You should do this on single user machines where it’s fine if all requests go to your own Sites folder. Don’t forget to change YOUR_USERNAME to whatever your “short” user name is.

DocumentRoot "/Users/YOUR_USERNAME/Sites/"

Another section a bit further down will also require a change:

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/Users/YOUR_USERNAME/Sites/">
  # Turn on debug mode in Mozajik
  SetEnv DEBUG_MODE "true"
  # Turn on rewrite engine, allow show of indexes, enable .htaccess override
  RewriteEngine On
  Options Indexes FollowSymLinks
  AllowOverride All
  .....

Disable site listing for your root folder

To make sure people on the same coffee shop wifi can’t freely browse your sites, you need to disable listing of your sites. You can do this a number of ways, but the easiest is to add an index.html file to your Sites folder. This method will still allow other people to access your sites, but only if they know the specific subfolders.

nano ~/Sites/index.html

Add a friendly message and save.

Important! If you want to disable external access to your computer completely, you’ll need to use a more secure method such as setting the Allow from directive.

Password protect network access

[todo: add docs]

Setting up multi-site use, virtual hosts

When you need to test Facebook apps, its best to set up virtual hosts which have the same domain as the final app. So an app on app.outlast.hu should run locally on local.outlast.hu – this will allow you to test and use the Facebook app locally without errors.

First, create the virtual domain by adding this to your /etc/hosts file as follows:
127.0.0.1 local.outlast.hu
This will route the virtual domain “local.outlast.hu” to localhost (127.0.0.1).

Next, you need to enable vhosts conf file for Apache, so edit /usr/local/zend/apache2/conf/httpd.conf and uncomment the following line by removing # from the beginning (this is towards the bottom):

Include conf/extra/httpd-vhosts.conf

Next, you need to set up your sites folder for use in Apache. So let’s edit the /usr/local/zend/apache2/conf/extra/httpd-vhosts.conf file:

<Directory "/Users/*/Sites">
# Turn on debug mode in Mozajik
SetEnv DEBUG_MODE "true"
# Turn on rewrite engine, allow show of indexes, enable .htaccess override
RewriteEngine On
Options Indexes FollowSymLinks
AllowOverride All
# Allow everyone to access this folder
Order deny,allow
# Uncomment below to allow only access from local computer (recommended if you dont want wifi coffee drinkers looking at your stuff :))
#Order allow,deny
#Allow from 127.0.0.1 localhost
</Directory>

You’ll need to set up virtual sites in Apache (this should go in the same vhosts file):

<VirtualHost *:80>
ServerAdmin you@example.com
ServerName local.outlast.hu
DocumentRoot "/Users/YOURUSERNAME/Sites/yoursite/"
</VirtualHost>

Setting up MySQL for PHP

If you’re using MySQL, you may also need to modify the PHP.INI file so that it points to the right MySQL socket file. I installed the default MySQL package from the official website and it places the socket file in the /tmp folder. As such, you’ll need to search for each instance in /usr/local/zend/etc/php.ini where there is a mysql.sock file and update it to /tmp/mysql.sock – for example:

mysql.default_socket = /tmp/mysql.sock

Restart Apache to apply settings

On Mac OS X, restart Apache (you can also set up a symlink for this):
sudo /usr/local/zend/apache2/bin/apachectl restart

On Linux, you can use the service command:
sudo service apache2 restart

For Windows, start up the Services.msc program from Start/Run… and use the UI to restart the Apache service.

If restart doesn’t work

If you get an error during restart you may have to first kill the built-in Apache. This will be necessary if it is running on the same port. You can do this in the Terminal:

sudo killall httpd
sudo killall httpd
sudo killall httpd
sudo killall httpd
sudo /usr/local/zend/apache2/bin/apachectl restart

In my experience, you have to run killall httpd quite a number of times before it kills all the processes properly. Not sure why, but running it 3-4 times should take care of it for good. If you’ve set up the Launch Daemon above you can also just restart your computer, but that seems like such a Windows-thing to do… 🙂

Setting permissions for folders

This is only required on Mac OS X and Linux. If you have existing projects in your Sites folder, it is possible that their permissions were lost during a system update.

You need to restore the permissions recursively for each existing project in each project folder as such:

cd ~/Sites/MYSITENAME/
sudo chmod -R a+w data
sudo chmod -R a+w cache
Outlast Web & Mobile Development (c) 2019 | Privacy Policy |