"URL shortener" Test application
PHP JavaScript CSS
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
controllers
docs
models
static
views
.gitignore
.htaccess
LICENSE
README.md
dump_url.sql
index.php

README.md

Test application "URL shortener"

Application was created from the scratch during 2 evenings almost without COPY&PASTE (except models/AlphaId.php and models/Form/Validate/Url.php)

  • MVC patten (see AppController.php, AppForm.php, AppModel.php, AppView.php)
  • ORM-like database access (see AppDbConnection.php, ApModel.php)
  • MVVM pattern (see AppForm.php)
  • Configurable components
  • AJAX on native javascript

All PHP classes are shown at base classes and application classes

DEMO:

You can try demo at http://url-sh.copist.ru/

REQUIREMENTS:

PHP 5.3, MYSQL 5.5, NGINX, PHP-FPM

INSTALLATION:

-- 1. install software (for debian/ubuntu)

$ sudo apt-get install php5 php5-mysql mysql-client-core-5.5 mysql-server

You can use NGINX or APACHE web server (not tested with Apache)

$ sudo apt-get install nginx php5-fpm

-- 2. may need some manual configuration ...

-- 3. create new mysql database see http://www.mysql.ru/docs/man/CREATE_DATABASE.html

for example create database named 'url'

$ mysql -u{adminLogin} -p{adminPassword}

mysql shell

> CREATE DATABASE IF NOT EXISTS `url` DEFAULT CHARACTER SET utf8;
> QUIT;

-- 4. create new user see http://www.mysql.ru/docs/man/Adding_users.html

for example create user named 'url_rw' with password 'user-password'

$ mysql -u{adminLogin} -p{adminPassword}

mysql shell

> USE `url`;
> GRANT ALL PRIVILEGES ON *.* TO url_rw@localhost IDENTIFIED BY 'user-password';
> QUIT;

-- 5. prepare directory for web application

$ sudo mkdir -p /var/www/url.com
$ sudo chown -R nginx:www-data /var/www/url.com

-- 6. download web application into prepared directory /var/www/url.com

$ git clone https://github.com/pvolyntsev/url-shortener.git /var/www/url.com

-- 7. register web applicatio in nginx

$ sudo ln -s /var/www/url.com/app/config/url.com.conf /etc/nginx/sites-enabled/
$ sudo /etc/init.d/nginx reload

-- 8. load database dump from /var/www/url.com/dump_url.sql

for example

$ mysql -u{adminLogin} -p{adminPassword} {databaseName} < /var/www/url.com/dump_url.sql

-- 9. add this line into /etc/hosts

127.0.0.1 dev-url.com url.com

if you use virtual machine to run application, add the same line into 'hosts' file at your host machine, with other IP address

-- 10. open http://dev-url.com/ in browser

CONFIGURING

If database name, database user login or password differ from those are in this manual, you need manually change options in /var/www/url.com/app/config/app.php

...
// Configuration for database component
'db' => array(
	'class' => 'AppPdoConnection',
	'connectionString' => 'mysql:host=127.0.0.1;dbname=url',
	'username' => 'url_rw',
	'password' => 'user-password',
),
...

After install on production you need to set your domain in nginx configuration file /var/www/url.com/app/config/url.com.conf

server {
    ....
    server_name {YOURDOMAIN} dev-url.com url.com;
...

Then reload configuration

$ sudo /etc/init.d/nginx reload