Skip to content

Instantly share code, notes, and snippets.

@simkimsia
Last active May 27, 2023 06:55
Show Gist options
  • Save simkimsia/691e97f40b2544644f9a to your computer and use it in GitHub Desktop.
Save simkimsia/691e97f40b2544644f9a to your computer and use it in GitHub Desktop.

Revisions

  1. simkimsia revised this gist May 28, 2014. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -337,6 +337,13 @@ cd /var/virtual
    git clone -b 2.4 git://github.com/cakephp/cakephp.git cakephp-2.4
    "'

    #############################
    ## Fix missing mcrypt problem
    #############################
    mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
    php5enmod mcrypt
    service nginx restart

    ########################################
    ## Add www-data to sudoers and do other www-data related commands
    ########################################
  2. simkimsia revised this gist May 5, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@
    # forked from https://gist.github.com/1264701/08f93534ba177f173b9382b53c419cd0de5b07ea
    #
    # Ubuntu 14.04 based web server installation script
    # Run this by executing the following from a fresh install of Ubuntu 12.10 server:
    # Run this by executing the following from a fresh install of Ubuntu 14.04 server:
    #
    # bash -c "$(curl -fsSL https://gist.github.com/simkimsia/691e97f40b2544644f9a/raw/ubuntu14.04-cake2.4.sh)" <mysqlPassword>
    #
  3. simkimsia revised this gist May 5, 2014. 1 changed file with 7 additions and 2 deletions.
    9 changes: 7 additions & 2 deletions ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -347,9 +347,14 @@ chsh -s /bin/bash www-data
    ########################################
    ## Download composer.phar and make it global
    ########################################
    ## Download composer.phar
    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    alias composer='/usr/local/bin/composer'
    ## move it to /usr/share
    mv composer.phar /usr/share/composer
    ## change the permissions to 777 so everyone can use
    chmod 777 /usr/share/composer
    ## create an alias as shortcut command
    alias composer='/usr/share/composer'

    ########################################
    ## Remove any unwanted packages
  4. simkimsia revised this gist May 5, 2014. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -344,6 +344,13 @@ adduser www-data sudo
    ## this is to change the shell for www-data because www-data default shell is /bin/sh
    chsh -s /bin/bash www-data

    ########################################
    ## Download composer.phar and make it global
    ########################################
    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    alias composer='/usr/local/bin/composer'

    ########################################
    ## Remove any unwanted packages
    ########################################
  5. simkimsia revised this gist May 4, 2014. 1 changed file with 3 additions and 29 deletions.
    32 changes: 3 additions & 29 deletions ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -94,44 +94,18 @@ apt-get install \
    --force-yes -y

    ########################################
    ## Install PHPUnit via PEAR
    ## Install PEAR
    ########################################

    ### upgrade pear
    pear upgrade pear
    pear config-set auto_discover 1

    ### install phpunit dependencies
    pear channel-discover pear.phpunit.de
    pear channel-discover components.ez.no
    pear channel-discover pear.symfony-project.com
    pear channel-discover pear.symfony.com
    pear install --alldeps phpunit/PHPUnit

    ########################################
    ## Install PHPQATools courtesy of http://phpqatools.org/ via PEAR
    ########################################

    ##pear config-set auto_discover 1 if you haven't done it already
    pear install pear.phpqatools.org/phpqatools

    ########################################
    ## Install Phing courtesy of http://www.phing.info/docs/guide/stable/ via PEAR
    ########################################
    pear channel-discover pear.phing.info
    pear install phing/phing

    ########################################
    ## Install cakephp codesniffer
    ########################################
    pear channel-discover pear.cakephp.org
    pear install cakephp/CakePHP_CodeSniffer

    ########################################
    ## Install apigen
    ########################################
    pear channel-discover pear.apigen.org
    pear install pear.apigen.org/apigen
    pear channel-update pear.apigen.org
    pear install apigen/ApiGen

    ########################################
    ## Configure PHP-FPM
  6. simkimsia revised this gist May 4, 2014. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -47,7 +47,6 @@ export DEBIAN_FRONTEND=noninteractive
    ## System Updates
    ########################################
    apt-get update -y
    apt-get dist-upgrade --force-yes -y
    apt-get install \
    curl \
    aptitude \
  7. simkimsia revised this gist May 4, 2014. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,6 @@
    ###
    #
    # forked from https://gist.github.com/1264701/08f93534ba177f173b9382b53c419cd0de5b07ea
    # Copyright (c) 2011 Cake Development Corporation (http//cakedc.com)
    #
    # Ubuntu 14.04 based web server installation script
    # Run this by executing the following from a fresh install of Ubuntu 12.10 server:
  8. simkimsia revised this gist May 4, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -5,10 +5,10 @@
    # forked from https://gist.github.com/1264701/08f93534ba177f173b9382b53c419cd0de5b07ea
    # Copyright (c) 2011 Cake Development Corporation (http//cakedc.com)
    #
    # Ubuntu 12.10 based web server installation script
    # Ubuntu 14.04 based web server installation script
    # Run this by executing the following from a fresh install of Ubuntu 12.10 server:
    #
    # bash -c "$(curl -fsSL https://gist.github.com/simkimsia/4372049/raw/e95e752256543f82e0633edf125e42000237eca2/installation-12-10-ubuntu.sh)" <mysqlPassword>
    # bash -c "$(curl -fsSL https://gist.githubusercontent.com/simkimsia/691e97f40b2544644f9a/raw/ubuntu14.04-cake2.4.sh)" <mysqlPassword>
    #
    # Be sure to replace <mysqlPassword> with your intended MySQL Password.
    # Also, run this as root, unless you enjoy failing.
  9. simkimsia revised this gist May 4, 2014. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -80,7 +80,6 @@ apt-get install \
    php5-cli \
    php5-common \
    php5-curl \
    php5-ffmpeg \
    php5-fpm \
    php5-gd \
    php5-geoip \
  10. simkimsia created this gist May 4, 2014.
    379 changes: 379 additions & 0 deletions ubuntu14.04-cake2.4.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,379 @@
    #!/bin/bash

    ###
    #
    # forked from https://gist.github.com/1264701/08f93534ba177f173b9382b53c419cd0de5b07ea
    # Copyright (c) 2011 Cake Development Corporation (http//cakedc.com)
    #
    # Ubuntu 12.10 based web server installation script
    # Run this by executing the following from a fresh install of Ubuntu 12.10 server:
    #
    # bash -c "$(curl -fsSL https://gist.github.com/simkimsia/4372049/raw/e95e752256543f82e0633edf125e42000237eca2/installation-12-10-ubuntu.sh)" <mysqlPassword>
    #
    # Be sure to replace <mysqlPassword> with your intended MySQL Password.
    # Also, run this as root, unless you enjoy failing.
    #
    # Its handy to install 'screen' if you want to ensure your remote connection to
    # a server doesn't disrupt the installation process. If you want to do this, just
    # do the following before running the main bash command:
    #
    # apt-get install screen -y
    # screen
    #
    # To recover your session if you are disconnected, ssh to your server as root again,
    # and type:
    #
    # screen -x
    #
    # Dependencies:
    # - curl
    #
    # Todo:
    # - SSL Configuration
    #
    ###

    EXPECTEDARGS=0
    if [ $# -ne $EXPECTEDARGS -o "x$0" == "x" -o $0 == "bash" ]; then
    echo "Usage:"
    echo " Parameter 1: MySQL root password"
    exit 1
    fi

    MYSQLPASS=$0

    export DEBIAN_FRONTEND=noninteractive

    ########################################
    ## System Updates
    ########################################
    apt-get update -y
    apt-get dist-upgrade --force-yes -y
    apt-get install \
    curl \
    aptitude \
    -y
    apt-get upgrade --force-yes -y


    ########################################
    ## Tools and Utilities
    ########################################
    apt-get install git-core --force-yes -y
    apt-get install xclip --force-yes -y

    ########################################
    ## MySQL
    ########################################
    apt-get install \
    mysql-client \
    mysql-server \
    --force-yes -y
    mysqladmin -u root password $MYSQLPASS


    ########################################
    ## PHP
    ########################################
    apt-get install \
    php5 \
    php5-cli \
    php5-common \
    php5-curl \
    php5-ffmpeg \
    php5-fpm \
    php5-gd \
    php5-geoip \
    php5-gmp \
    php5-imagick \
    php5-intl \
    php5-json \
    php5-mcrypt \
    php5-memcached \
    php5-mysql \
    php-apc \
    php-pear \
    php5-xdebug \
    --force-yes -y

    ########################################
    ## Install PHPUnit via PEAR
    ########################################

    ### upgrade pear
    pear upgrade pear
    pear config-set auto_discover 1

    ### install phpunit dependencies
    pear channel-discover pear.phpunit.de
    pear channel-discover components.ez.no
    pear channel-discover pear.symfony-project.com
    pear channel-discover pear.symfony.com
    pear install --alldeps phpunit/PHPUnit

    ########################################
    ## Install PHPQATools courtesy of http://phpqatools.org/ via PEAR
    ########################################

    ##pear config-set auto_discover 1 if you haven't done it already
    pear install pear.phpqatools.org/phpqatools

    ########################################
    ## Install Phing courtesy of http://www.phing.info/docs/guide/stable/ via PEAR
    ########################################
    pear channel-discover pear.phing.info
    pear install phing/phing

    ########################################
    ## Install cakephp codesniffer
    ########################################
    pear channel-discover pear.cakephp.org
    pear install cakephp/CakePHP_CodeSniffer

    ########################################
    ## Install apigen
    ########################################
    pear channel-discover pear.apigen.org
    pear install pear.apigen.org/apigen

    ########################################
    ## Configure PHP-FPM
    ########################################
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    [www]
    listen = 127.0.0.1:9000
    listen.allowed_clients = 127.0.0.1
    user = www-data
    group = www-data
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 25
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 2500
    pm.status_path = /php-status
    slowlog = log/$pool.log.slow
    chdir = /
    ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected]
    ;php_flag[display_errors] = off
    ;php_admin_value[error_log] = /var/log/fpm-php.www.log
    ;php_admin_flag[log_errors] = on
    ;php_admin_value[memory_limit] = 32M
    ENDFILECONTENT

    cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/www.conf.original
    echo "$FILECONTENT" > /etc/php5/fpm/pool.d/www.conf
    /etc/init.d/php5-fpm restart


    ########################################
    ## Nginx
    ########################################
    apt-get install \
    nginx \
    --force-yes -y

    ## CakePHP Configuration
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    include php.conf;
    location / {
    try_files $uri $uri/ /index.php?$uri&$args;
    expires max;
    access_log off;
    }
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/cakephp.conf

    ## Common Configuration
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    index index.html;
    location ~ /\.ht {
    deny all;
    }
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/common.conf

    ## FastCGI Configuration
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param REQUEST_URI $request_uri;
    fastcgi_param DOCUMENT_URI $document_uri;
    fastcgi_param DOCUMENT_ROOT $document_root;
    fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param GATEWAY_INTERFACE CGI/1.1;
    fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
    fastcgi_param REMOTE_ADDR $remote_addr;
    fastcgi_param REMOTE_PORT $remote_port;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;
    fastcgi_param HTTPS $ssl_session_id;
    fastcgi_index index.php;
    # PHP only, required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param REDIRECT_STATUS 200;
    fastcgi_connect_timeout 60;
    fastcgi_read_timeout 180;
    fastcgi_send_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/fastcgi_params

    ## Nginx Main Configuration
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    user www-data;
    worker_processes 4;
    pid /var/run/nginx.pid;
    events {
    worker_connections 768;
    }
    http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 2;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    gzip on;
    gzip_disable "msie6";
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    }
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/nginx.conf

    ## PHP Configuration
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    }
    index index.php;
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/php.conf

    ## Default Site Configuration
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    server {
    listen 80; ## listen for ipv4; this line is default and implied
    root /usr/share/nginx/www;
    index index.html index.htm;
    server_name localhost;
    location / {
    try_files $uri $uri/ /index.html;
    }
    location /doc {
    root /usr/share;
    autoindex on;
    allow 127.0.0.1;
    deny all;
    }
    location /images {
    root /usr/share;
    autoindex off;
    }
    }
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/sites-available/default

    ## Example CakePHP Site
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    server {
    listen 80;
    client_max_body_size 2M;
    server_name cakephpsite.com;
    root /var/virtual/cakephp-2.4/cakephpsite.com/webroot;
    access_log /var/log/nginx/cakephpsite.com-access.log;
    include common.conf;
    include cakephp.conf;
    }
    server {
    listen 80;
    client_max_body_size 2M;
    server_name www.cakephpsite.com;
    rewrite ^ http://cakephpsite.com$uri permanent;
    }
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/sites-available/cakephp.example

    ## Example Plain PHP Site
    read -r -d '' FILECONTENT <<'ENDFILECONTENT'
    server {
    listen 80;
    client_max_body_size 2M;
    server_name phpsite.com;
    root /var/virtual/phpsite.com;
    access_log /var/log/nginx/phpsite.com-access.log;
    include common.conf;
    include php.conf;
    }
    server {
    listen 80;
    client_max_body_size 2M;
    server_name www.phpsite.com;
    rewrite ^ http://phpsite.com$uri permanent;
    }
    ENDFILECONTENT
    echo "$FILECONTENT" > /etc/nginx/sites-available/php.example


    /etc/init.d/nginx restart


    ########################################
    ## CakePHP and Sites
    ########################################
    mkdir -p /var/virtual
    mkdir -p /var/www
    chown www-data:www-data /var/virtual /var/www
    su www-data -c 'bash -c "
    cd /var/virtual
    git clone -b 2.4 git://github.com/cakephp/cakephp.git cakephp-2.4
    "'

    ########################################
    ## Add www-data to sudoers and do other www-data related commands
    ########################################
    adduser www-data sudo
    ## this is to change the shell for www-data because www-data default shell is /bin/sh
    chsh -s /bin/bash www-data

    ########################################
    ## Remove any unwanted packages
    ########################################
    apt-get autoremove --force-yes -y