diff --git a/README.md b/README.md index 3fe7fe3..0d21c76 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,9 @@ Status: Stable ###Basic usage Open terminal, go to desired directory and type in: ```bash -git clone https://github.com/terion-name/Lagrant && mv Lagrant/* ./ && rm -r -f Lagrant && vagrant up +git clone https://github.com/yaapis/Lagrant && mv Lagrant/* ./ && rm -r -f Lagrant +mv vagrant/provision.[small|medium|full].sh vagrant/provision.sh +vagrant up ``` Or just clone/download Lagrant, edit Vagrantfile's variables and/or provision.sh to your prefers and run ```vagrant up``` @@ -60,6 +62,7 @@ Lagrant will load Ubuntu 12 x64 VM with following components: * [phpunit](http://phpunit.de/) * [composer](http://getcomposer.org/) * [beanstalkd queue server](https://github.com/kr/beanstalkd) and [beanstalk console](https://github.com/ptrofimov/beanstalk_console), available after install at [http://localhost:8080/beanstalkd/index.php](http://localhost:8080/beanstalkd/index.php) +* [phpmyadmin](http://www.phpmyadmin.net), available after install at http://33.33.33.33/phpmyadmin/ Also it will create a database with provided in Vagrantfile credentials (default root password is *root*, default db name is *database*). If it performs a clean install of Laravel, it will create an environment configs set (defaults to *dev*) and set up local database and app configs. diff --git a/vagrant/configs/nginx-vhost b/vagrant/configs/nginx-vhost index c0486f5..76cf6bc 100644 --- a/vagrant/configs/nginx-vhost +++ b/vagrant/configs/nginx-vhost @@ -8,12 +8,13 @@ server { index index.php index.html; - if (!-d $request_filename) { - rewrite ^/(.+)/$ $scheme://$http_host/$1 permanent; - } + #if (!-d $request_filename) { + # rewrite ^/(.+)/$ $scheme://$http_host/$1 permanent; + #} location / { - try_files $uri $uri/ /index.php?q=$uri&$args; + #try_files $uri $uri/ /index.php?q=$uri&$args; + index index.php index.html index.htm; } error_page 404 /index.php; diff --git a/vagrant/configs/nginx/phpmyadmin b/vagrant/configs/nginx/phpmyadmin new file mode 100644 index 0000000..7d89284 --- /dev/null +++ b/vagrant/configs/nginx/phpmyadmin @@ -0,0 +1,18 @@ + location /phpmyadmin { + root /usr/share/; + index index.php index.html index.htm; + location ~ ^/phpmyadmin/(.+\.php)$ { + try_files $uri =404; + root /usr/share/; + fastcgi_pass unix:/var/run/php5-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $request_filename; + include /etc/nginx/fastcgi_params; + } + location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { + root /usr/share/; + } + } + location /pma { + rewrite ^/* /phpmyadmin last; + } \ No newline at end of file diff --git a/vagrant/provision.sh b/vagrant/provision.full.sh similarity index 97% rename from vagrant/provision.sh rename to vagrant/provision.full.sh index 4b11176..13cf809 100755 --- a/vagrant/provision.sh +++ b/vagrant/provision.full.sh @@ -25,6 +25,8 @@ ${SCRIPTS}/ruby.sh ${SCRIPTS}/${DATABASE_TYPE}.sh $DATABASE_ROOT_PASSWORD +${SCRIPTS}/phpmyadmin.sh $DATABASE_ROOT_PASSWORD + ${SCRIPTS}/sqlite.sh ${SCRIPTS}/redis.sh diff --git a/vagrant/provision.medium.sh b/vagrant/provision.medium.sh new file mode 100755 index 0000000..70b06d2 --- /dev/null +++ b/vagrant/provision.medium.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +SCRIPTS=/vagrant/vagrant/scripts +PROJECT_PATH=/vagrant + +ENV_NAME=$1 +DATABASE_TYPE=$2 +DATABASE_ROOT_PASSWORD=$3 +DATABASE_NAME=$4 + +echo "--- Setting up system ---" + +${SCRIPTS}/init.sh $ENV_NAME + +${SCRIPTS}/php.sh + +# web server MUST be installed immediately after PHP +${SCRIPTS}/nginx.sh + +${SCRIPTS}/documentroot.sh + +${SCRIPTS}/memcached.sh + +${SCRIPTS}/ruby.sh + +${SCRIPTS}/${DATABASE_TYPE}.sh $DATABASE_ROOT_PASSWORD + +${SCRIPTS}/phpmyadmin.sh $DATABASE_ROOT_PASSWORD + +${SCRIPTS}/sqlite.sh + +${SCRIPTS}/redis.sh + +${SCRIPTS}/mongodb.sh + +${SCRIPTS}/nodejs.sh + +${SCRIPTS}/bower.sh + +${SCRIPTS}/gulp.sh +${SCRIPTS}/gulp-autoprefixer.sh + +${SCRIPTS}/less.sh + +${SCRIPTS}/imagick.sh + +${SCRIPTS}/xdebug.sh + +${SCRIPTS}/phpunit.sh + +${SCRIPTS}/composer.sh + +${SCRIPTS}/beanstalkd.sh + +if [ -n "$DATABASE_NAME" ]; +then + ${SCRIPTS}/${DATABASE_TYPE}_createdb.sh $DATABASE_NAME $DATABASE_ROOT_PASSWORD +fi + +# We assume that if there is no composer.json it is raw new project +# Otherwise project already exists and we need to migrate it + +if [ ! -a "/vagrant/composer.json" ]; +then + ${SCRIPTS}/laravel_create.sh $PROJECT_PATH $ENV_NAME + if [ -n "$DATABASE_NAME" ]; + then + ${SCRIPTS}/laravel_set_db.sh $PROJECT_PATH $ENV_NAME $DATABASE_TYPE $DATABASE_NAME $DATABASE_ROOT_PASSWORD + fi + ${SCRIPTS}/laravel_setup.sh $PROJECT_PATH $ENV_NAME +else + ${SCRIPTS}/laravel_migrate.sh $PROJECT_PATH $ENV_NAME +fi diff --git a/vagrant/provision.small.sh b/vagrant/provision.small.sh new file mode 100755 index 0000000..d0aa8a6 --- /dev/null +++ b/vagrant/provision.small.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +SCRIPTS=/vagrant/vagrant/scripts +PROJECT_PATH=/vagrant + +ENV_NAME=$1 +DATABASE_TYPE=$2 +DATABASE_ROOT_PASSWORD=$3 +DATABASE_NAME=$4 + +echo "--- Setting up system ---" + +${SCRIPTS}/init.sh $ENV_NAME + +${SCRIPTS}/php.sh + +# web server MUST be installed immediately after PHP +${SCRIPTS}/nginx.sh + +${SCRIPTS}/documentroot.sh + +${SCRIPTS}/${DATABASE_TYPE}.sh $DATABASE_ROOT_PASSWORD + +${SCRIPTS}/phpmyadmin.sh $DATABASE_ROOT_PASSWORD + +${SCRIPTS}/composer.sh + +if [ -n "$DATABASE_NAME" ]; +then + ${SCRIPTS}/${DATABASE_TYPE}_createdb.sh $DATABASE_NAME $DATABASE_ROOT_PASSWORD +fi diff --git a/vagrant/scripts/phpmyadmin.sh b/vagrant/scripts/phpmyadmin.sh new file mode 100644 index 0000000..be7b2c4 --- /dev/null +++ b/vagrant/scripts/phpmyadmin.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +echo "--- Instaling PhpMyAdmin ---" + +MYSQL_PASSWORD=$1 + +sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/dbconfig-install boolean true" +sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/app-password-confirm password ${MYSQL_PASSWORD}" +sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/mysql/admin-pass password ${MYSQL_PASSWORD}" +sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/mysql/app-pass password ${MYSQL_PASSWORD}" +sudo debconf-set-selections <<< "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none" + +sudo apt-get install -y phpmyadmin + +# Patch nginx config + +REPLACE_ANCHOR='#place-more-options-here' +PHPMYADMIN_NG_CONFIG='include \/etc\/nginx\/phpmyadmin;' +REPLACE_STR=$PHPMYADMIN_NG_CONFIG"\n"$REPLACE_ANCHOR + +sudo cp /vagrant/vagrant/configs/nginx/phpmyadmin /etc/nginx/phpmyadmin +sudo sed -i "s/$REPLACE_ANCHOR/$REPLACE_STR/" /etc/nginx/sites-available/default + +# Patch phpmyadmin config +# 1 - respect localhost:8080/phpmyadmin +# 2 - skipp login page + +REPLACE_ANCHOR="\$cfg\['Servers'\]\[\$i\]\['auth_type'\] = 'cookie';" +REPLACE_STR="\$cfg['Servers'][\$i]['auth_type'] = 'config';\n\$cfg['Servers'][\$i]['user'] = 'root';\n\$cfg['Servers'][\$i]['password'] = '${MYSQL_PASSWORD}';" + +sudo sed -i "s/$REPLACE_ANCHOR/$REPLACE_STR/" /etc/phpmyadmin/config.inc.php + +echo "\$cfg['PmaAbsoluteUri'] = 'http://localhost:8080/phpmyadmin/';" >> /etc/phpmyadmin/config.inc.php + +sudo service nginx restart