Laravel First Try

Download composer

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo chmod +x /usr/local/bin/composer

Install laravel

$ cd /var/www/
$ composer create-project --prefer-dist laravel/laravel project-name
$ php artisan key:generate 

Edit file config/app.php

'key' => env('APP_KEY', 'uOHTNu3Au1Kt7Uloyr2Py9blU0J5XQ75'),

'cipher' => 'AES-256-CBC',

Create Apache VirtualHost

$ nano /etc/apache2/sites-available/project-name.com.conf
<VirtualHost *:80>

        ServerName laravel.example.com
        DocumentRoot /var/www/project-name/public

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/laravel>
                AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
$ a2ensite project-name.com
$ sudo service apache2 reload

Access Laravel

$ sudo echo "127.0.0.1  project-name.com" >> /etc/hosts

And access http://project-name.com in your favorite web browser

Sumber: http://tecadmin.net/install-laravel-framework-on-ubuntu/

Iklan

Startup Template Script Pada Ubuntu

#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir=""
user=""
cmd=""

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        for i in {1..10}
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0

edit file: edit /etc/rc.local, dan tambahkan service namascript start
sumber: https://github.com/fhd/init-script-template

Setting IP pada proxmox

Pada Host

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
	address 192.168.200.2
	netmask 255.255.255.0
	gateway 192.168.200.1
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0


auto vmbr1
iface vmbr1 inet static
	address 192.168.3.1
	netmask 255.255.255.0
	bridge_ports none
	bridge_stp off
	bridge_fd 0

	post-up echo 1 > /proc/sys/net/ipv4/ip_forward
	post-up iptables -t nat -A POSTROUTING -s '192.168.3.0/24' -o vmbr0 -j MASQUERADE
	post-down iptables -t nat -D POSTROUTING -s '192.168.3.0/24' -o vmbr0 -j MASQUERADE

	post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 2222 -j DNAT --to 192.168.3.2:22
	post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 2222 -j DNAT --to 192.168.3.2:22

	post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80
	post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80

	post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.3.2:443
	post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.3.2:443

Pada VM

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.3.2
	netmask 255.255.255.0
	network 192.168.3.0
	broadcast 192.168.3.255
	gateway 192.168.3.1
	dns-nameservers 8.8.8.8

Part 1: Belajar Membuat Aplikasi Dengan Framework Symfony

Instalasi

  • Download composer disini
  • Install framework melalui composer:
    composer create-project symfony/framework-standard-edition /path/to/webroot/symfony
    
  • Hapus Demo Bundle
    • Hapus direktori src/Acme
    • Hapus routing AcmeBundle pada app/config/routing_dev.yml
    • Hapus AcmeBundle dari bundles pada app/AppKernel.php
    • Hapus juga web/bundles/acmedemo
  • Update composer.json sesuaikan dengan kebutuhan.
    Disini saya menambahkan data-fixture untuk membuat record dummy pada table dan doctrine migration untuk memudahkan dalam mengupdate struktur database

    "doctrine/doctrine-fixtures-bundle": "dev-master",
    "doctrine/data-fixtures" : "dev-master",
    "doctrine/doctrine-migrations-bundle": "dev-master",
    "doctrine/migrations": "dev-master",
    
  • Tambahkan juga pada composer.json asset symlink, supaya file resoources dapat diakses melalui web:
    "extra": {
         "symfony-app-dir": "app",
         "symfony-web-dir": "web",
         "symfony-assets-install": "symlink",
         "incenteev-parameters": {
              "file": "app/config/parameters.yml"
         },
         "branch-alias": {
              "dev-master": "2.3-dev"
         }
     }
    
  • Membuat Bundle, Bundle disini dapat diartikan sebagai sebuah Modul aplikasi. Untuk membuatnya jalankan perintah berikut:
    php app/console generate:bundle --namespace=NamaCompany/NamaBubdle --format=yml
    

    setelah mengetikkan perintah tersebut akan terbentuklah kerangka direktori Bundle

-- create bundle
php app/console generate:bundle --namespace=/ --format=yml

-- install asset symlink
php app/console assets:install web --symlink

-- create database
php app/console doctrine:database:create

-- create table
php app/console doctrine:schema:create

-- loading fixture
php app/console doctrine:fixtures:load

-- generate entities
php app/console doctrine:generate:entities \

-- update database change force
php app/console doctrine:schema:update --force

-- database migration
php app/console doctrine:migrations:diff
php app/console doctrine:migrations:migrate

-- generate form
php app/console generate:doctrine:form BloggerBlogBundle:Comment

Proses Reload Untuk Store yang Di Paging

thisForm.cboRecord.getStore().removeAll();
thisForm.cboRecord.setReset();
thisForm.cboRecord.reset();

Contoh Validator Pada Row Editor

editor.on('validateedit', function(row, obj, rcd, idx){
	var Harian = typeof obj.Harian == "undefined"?rcd.get('Harian'):obj.Harian;
	var Penginapan = typeof obj.Penginapan == "undefined"?rcd.get('Penginapan'):obj.Penginapan;
	var Representasi = typeof obj.Representasi == "undefined"?rcd.get('Representasi'):obj.Representasi;
	var Transport = typeof obj.Transport == "undefined"?rcd.get('Transport'):obj.Transport;
	var Jumlah = Harian + Penginapan + Representasi + Transport;
	rcd.set('Jumlah', Jumlah);
});

Validator store detail

var recordIndex = DepartmentMemberStore.findBy(
    function(record, id){
        if(record.get('date') === date_from_form && 
           record.get('time') === time_from_form &&
           record.get('type') === type_from_form){
              return true;  // a record with this data exists
        }
        return false;  // there is no record in the store with this data
    }
);

if(recordIndex != -1){
    alert("We have a duplicate, abort!");
}