# Software Development

All about software development tricks on Linux

# Creating War File in Linux

1. CD to war directory in the project folder
2. Execute `jar -cvf .war *`

# Standard Procedures for CakePHP Application Deployment

<h3 id="bkmrk-1.-clone-source-file">1. Clone Source File</h3>
<ol class="linenums" id="bkmrk-git-clone-%3Cgit-url%3E">
<li class="L0"><code><span class="pln">git clone </span><span class="pun">&lt;</span><span class="pln">git url</span><span class="pun">&gt;</span></code></li>
</ol>
<h3 id="bkmrk-2.-setup-database">2. Setup Database</h3>
<ol class="linenums" id="bkmrk-mysql--uroot--p-crea">
<li class="L0"><code><span class="pln">mysql </span><span class="pun">-</span><span class="pln">uroot </span><span class="pun">-</span><span class="pln">p</span></code></li>
<li class="L1"><code><span class="pln">create database </span><span class="pun">&lt;</span><span class="pln">database name</span><span class="pun">&gt;;</span></code></li>
<li class="L2"><code><span class="pln">grant all on </span><span class="pun">&lt;</span><span class="pln">database name</span><span class="pun">&gt;.*</span><span class="pln"> to </span><span class="str">'&lt;id&gt;'</span><span class="pun">.</span><span class="str">'localhost'</span><span class="pln"> identified </span><span class="kwd">by</span> <span class="str">'&lt;password&gt;'</span><span class="pun">;</span></code></li>
<li class="L3"><code><span class="pln">cd </span><span class="pun">&lt;</span><span class="pln">path</span><span class="pun">/</span><span class="pln">to</span><span class="pun">/</span><span class="pln">cakephp</span><span class="pun">&gt;/</span><span class="pln">app</span></code></li>
<li class="L4"><code><span class="typ">Console</span><span class="pun">/</span><span class="pln">cake schema create</span></code></li>
<li class="L5"><code><span class="typ">Console</span><span class="pun">/</span><span class="pln">cake schema update </span><span class="pun">-</span><span class="pln">s </span><span class="pun">&lt;</span><span class="pln">update number found </span><span class="kwd">in</span><span class="pln"> app</span><span class="pun">/</span><span class="typ">Config</span><span class="pun">/</span><span class="typ">Schema</span><span class="pun">/&gt;</span></code></li>
</ol>
<h3 id="bkmrk-3.-setup-php">3. Setup PHP</h3>
<p id="bkmrk-edit-%2Fetc%2Fphp.ini-an">Edit <code>/etc/php.ini</code> and add the following line:</p>
<ol class="linenums" id="bkmrk-date.timezone-%3D-%22asi">
<li class="L0"><code><span class="pln">date</span><span class="pun">.</span><span class="pln">timezone </span><span class="pun">=</span> <span class="str">"Asia/Kuala_Lumpur"</span></code></li>
</ol>
<h3 id="bkmrk-4.-allow-write-acces">4. Allow Write Access to tmp</h3>
<ol class="linenums" id="bkmrk-chmod--r-777-app%2Ftmp">
<li class="L0"><code><span class="pln">chmod </span><span class="pun">-</span><span class="pln">R </span><span class="lit">777</span><span class="pln"> app</span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span></code></li>
</ol>
<h3 id="bkmrk-5.-setup-apache">5. Setup Apache</h3>
<p id="bkmrk-edit-%2Fetc%2Fhttpd%2Fconf">Edit <code>/etc/httpd/conf/conf.d</code> and change <code>AllowOverride None</code> to <code>AllowOverride All</code> in <code>&lt;Directory "/var/www/html"&gt;</code> tag. Then, restart httpd:</p>
<ol class="linenums" id="bkmrk-sudo-systemctl-resta">
<li class="L0"><code><span class="pln">sudo systemctl restart httpd</span></code></li>
</ol>
<h3 id="bkmrk-%28optional%29-selinux">(OPTIONAL) SELinux</h3>
<ol class="linenums" id="bkmrk-sudo-setsebool--p-al">
<li class="L0"><code><span class="pln">sudo setsebool </span><span class="pun">-</span><span class="pln">P allow_httpd_anon_write on</span></code></li>
<li class="L1"><code><span class="pln">sudo setsebool </span><span class="pun">-</span><span class="pln">P allow_httpd_sys_script_anon_write on</span></code></li>
<li class="L2"><code><span class="pln">sudo setsebool </span><span class="pun">-</span><span class="pln">P httpd_unified </span><span class="lit">0</span></code></li>
<li class="L3"><code><span class="pln">sudo chcon </span><span class="pun">-</span><span class="pln">R </span><span class="pun">-</span><span class="pln">t </span><span class="typ">httpd_sys_rw_content_t</span> <span class="str">&lt;path_to_cakephp_app&gt;</span><span class="pun">/</span><span class="pln">app</span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span></code></li>
</ol>

# Installing Clozure CL and QuickLisp on CentOS 7

## Download Clozure CL
Open up terminal and enter the command: `svn co http://svn.clozure.com/publicsvn/openmcl/release/1.11/linuxx86/ccl` Where `linuxx86` is one of:
- `darwinx86`
- `linuxx86`
- `freebsdx86`
- `solarisx86`
- `windows`
- `linuxarm`

## Download and Install QuickLisp
1. Download QuickLisp from [https://beta.quicklisp.org/quicklisp.lisp](https://beta.quicklisp.org/quicklisp.lisp)
2. Enter the command: `./ccl/lx86cl64 --load /path/to/quicklisp.lisp`
3. In the CCL prompt enter: `(quicklisp-quickstart:install)(ql:add-to-init-file)`

## Creating Scripts to Run CCL
1. Edit `./ccl/scripts/ccl` and `./ccl/scripts/ccl64` to change `CCL_DEFAULT_DIRECTORY=/usr/local/src/ccl` line to `CCL_DEFAULT_DIRECTORY=~/ccl`
2. Copy the scripts to `/usr/local/bin` directory: `sudo cp ./ccl/scripts/ccl* /usr/local/bin/`

## References
- [Linux Format Article](http://www.pressreader.com/australia/linux-format/20160804/281599534867185)
- [Clozure CL Official Download Page](http://ccl.clozure.com/download.html)