public
Last active

preparing a fresh 12.10 ubuntu server for cakephp 2.4

  • Download Gist
installation-12-10-ubuntu.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 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 www@my.domain.com
;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

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.