Fix various installer issues. (#4096)

* Various installer fixes.

* CentOS 6 related fixes.
This commit is contained in:
tiagom62 2017-10-02 15:59:53 -04:00 committed by snipe
parent 862543428b
commit 26423c5c02

View file

@ -40,11 +40,11 @@ mkdir $tmp
# Debian/Ubuntu friendly f(x)s # Debian/Ubuntu friendly f(x)s
progress () { progress () {
while kill -0 "$pid" > /dev/null 2>&1 while kill -0 "$pid" > /dev/null 2>&1
do do
for i in "${spin[@]}" for i in "${spin[@]}"
do do
if [ -e /proc/"$pid" ]; then if [ -e /proc/"$pid" ]; then
echo -ne "\b$i" echo -ne "\b$i"
sleep .1 sleep .1
else else
@ -54,60 +54,61 @@ progress () {
done done
} }
#Used for Debian and Ubuntu
vhenvfile () { vhenvfile () {
find /etc/apache2/mods-enabled -maxdepth 1 -name 'rewrite.load' >/dev/null 2>&1 find /etc/apache2/mods-enabled -maxdepth 1 -name 'rewrite.load' >/dev/null 2>&1
apachefile=/etc/apache2/sites-available/$name.conf apachefile=/etc/apache2/sites-available/$name.conf
echo "* Create Virtual host for apache." echo "* Create Virtual host for apache."
{ {
echo "<VirtualHost *:80>" echo "<VirtualHost *:80>"
echo "ServerAdmin webmaster@localhost" echo "ServerAdmin webmaster@localhost"
echo "<Directory $webdir/$name/public>" echo "<Directory $webdir/$name/public>"
echo " Require all granted" echo " Require all granted"
echo " AllowOverride All" echo " AllowOverride All"
echo " </Directory>" echo " </Directory>"
echo " DocumentRoot $webdir/$name/public" echo " DocumentRoot $webdir/$name/public"
echo " ServerName $fqdn" echo " ServerName $fqdn"
echo " ErrorLog /var/log/apache2/snipeIT.error.log" echo " ErrorLog /var/log/apache2/snipeIT.error.log"
echo " CustomLog /var/log/apache2/access.log combined" echo " CustomLog /var/log/apache2/access.log combined"
echo "</VirtualHost>" echo "</VirtualHost>"
} >> $apachefile } >> $apachefile
echo >> $hosts "127.0.0.1 $hostname $fqdn" echo >> $hosts "127.0.0.1 $hostname $fqdn"
log "a2ensite $name.conf" log "a2ensite $name.conf"
cat > "$webdir/$name/.env" <<-EOF cp $webdir/$name/.env.example $webdir/$name/.env
#Created By Snipe-it Installer
APP_TIMEZONE=$(cat /etc/timezone) sed -i '1 i\#Created By Snipe-it Installer' $webdir/$name/.env
DB_HOST=localhost sed -i 's,^\(APP_TIMEZONE=\).*,\1'$(cat /etc/timezone)',' $webdir/$name/.env
DB_DATABASE=snipeit sed -i 's,^\(DB_HOST=\).*,\1'localhost',' $webdir/$name/.env
DB_USERNAME=snipeit sed -i 's,^\(DB_DATABASE=\).*,\1'snipeit',' $webdir/$name/.env
DB_PASSWORD=$mysqluserpw sed -i 's,^\(DB_USERNAME=\).*,\1'snipeit',' $webdir/$name/.env
APP_URL=http://$fqdn sed -i 's,^\(DB_PASSWORD=\).*,\1'$mysqluserpw',' $webdir/$name/.env
APP_KEY=$random32 sed -i 's,^\(APP_URL=\).*,\1'http://$fqdn',' $webdir/$name/.env
EOF sed -i 's,^\(APP_KEY=\).*,\1'$$random32',' $webdir/$name/.env
} }
perms () { perms () {
chmod_dirs=( "$webdir/$name/storage" ) chmod_dirs=( "$webdir/$name/storage" )
chmod_dirs+=( "$webdir/$name/storage/private_uploads" ) chmod_dirs+=( "$webdir/$name/storage/private_uploads" )
chmod_dirs+=( "$webdir/$name/public/uploads" ) chmod_dirs+=( "$webdir/$name/public/uploads" )
#Change permissions on directories #Change permissions on directories
for chmod_dir in "${chmod_dirs[@]}" for chmod_dir in "${chmod_dirs[@]}"
do do
chmod -R 755 "$chmod_dir" chmod -R 755 "$chmod_dir"
done done
} }
log () { log () {
eval "$@" |& tee -a /var/log/snipeit-install.log >/dev/null 2>&1 eval "$@" |& tee -a /var/log/snipeit-install.log >/dev/null 2>&1
} }
#CentOS Friendly f(x)s #CentOS Friendly f(x)s
function isinstalled { function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then if yum list installed "$@" >/dev/null 2>&1; then
true true
else else
false false
fi fi
} }
if [ -f /etc/lsb-release ]; then if [ -f /etc/lsb-release ]; then
@ -115,26 +116,26 @@ if [ -f /etc/lsb-release ]; then
version="$(lsb_release -s -r)" version="$(lsb_release -s -r)"
codename="$(lsb_release -c -s)" codename="$(lsb_release -c -s)"
elif [ -f /etc/os-release ]; then elif [ -f /etc/os-release ]; then
distro="$(. /etc/os-release && echo $ID)" distro="$(. /etc/os-release && echo $ID)"
version="$(. /etc/os-release && echo $VERSION_ID)" version="$(. /etc/os-release && echo $VERSION_ID)"
#Order is important here. If /etc/os-release and /etc/centos-release exist, we're on centos 7. #Order is important here. If /etc/os-release and /etc/centos-release exist, we're on centos 7.
#If only /etc/centos-release exist, we're on centos6(or earlier). Centos-release is less parsable, #If only /etc/centos-release exist, we're on centos6(or earlier). Centos-release is less parsable,
#so lets assume that it's version 6 (Plus, who would be doing a new install of anything on centos5 at this point..) #so lets assume that it's version 6 (Plus, who would be doing a new install of anything on centos5 at this point..)
elif [ -f /etc/centos-release ]; then elif [ -f /etc/centos-release ]; then
distro="Centos" distro="Centos"
version="6" version="6"
else else
distro="unsupported" distro="unsupported"
fi fi
echo " echo "
_____ _ __________ _____ _ __________
/ ___/____ (_)___ ___ / _/_ __/ / ___/____ (_)___ ___ / _/_ __/
\__ \/ __ \/ / __ \/ _ \______ / / / / \__ \/ __ \/ / __ \/ _ \______ / / / /
___/ / / / / / /_/ / __/_____// / / / ___/ / / / / / /_/ / __/_____// / / /
/____/_/ /_/_/ .___/\___/ /___/ /_/ /____/_/ /_/_/ .___/\___/ /___/ /_/
/_/ /_/
" "
echo "" echo ""
@ -143,22 +144,22 @@ echo " Welcome to Snipe-IT Inventory Installer for Centos, Debian and Ubuntu!"
echo "" echo ""
shopt -s nocasematch shopt -s nocasematch
case $distro in case $distro in
*Ubuntu*) *Ubuntu*)
echo " The installer has detected Ubuntu version $version as the OS." echo " The installer has detected Ubuntu version $version as the OS."
distro=ubuntu distro=ubuntu
;; ;;
*Debian*) *Debian*)
echo " The installer has detected Debian version $version as the OS." echo " The installer has detected Debian version $version as the OS."
distro=debian distro=debian
;; ;;
*centos*|*redhat*|*ol*|*rhel*) *centos*|*redhat*|*ol*|*rhel*)
echo " The installer has detected $distro version $version as the OS." echo " The installer has detected $distro version $version as the OS."
distro=centos distro=centos
;; ;;
*) *)
echo " The installer was unable to determine your OS. Exiting for safety." echo " The installer was unable to determine your OS. Exiting for safety."
exit exit
;; ;;
esac esac
shopt -u nocasematch shopt -u nocasematch
#Get your FQDN. #Get your FQDN.
@ -166,29 +167,29 @@ shopt -u nocasematch
echo -n " Q. What is the FQDN of your server? ($fqdn): " echo -n " Q. What is the FQDN of your server? ($fqdn): "
read fqdn read fqdn
if [ -z "$fqdn" ]; then if [ -z "$fqdn" ]; then
fqdn="$(hostname --fqdn)" fqdn="$(hostname --fqdn)"
fi fi
echo " Setting to $fqdn" echo " Setting to $fqdn"
echo "" echo ""
#Do you want to set your own passwords, or have me generate random ones? #Do you want to set your own passwords, or have me generate random ones?
until [[ $ans == "yes" ]] || [[ $ans == "no" ]]; do until [[ $ans == "yes" ]] || [[ $ans == "no" ]]; do
echo -n " Q. Do you want me to automatically create the snipe database user password? (y/n) " echo -n " Q. Do you want to automatically create the database user password? (y/n) "
read setpw read setpw
case $setpw in case $setpw in
[yY] | [yY][Ee][Ss] ) [yY] | [yY][Ee][Ss] )
mysqluserpw="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c16`)" mysqluserpw="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c16`)"
ans="yes" ans="yes"
;; ;;
[nN] | [n|N][O|o] ) [nN] | [n|N][O|o] )
echo -n " Q. What do you want your snipeit user password to be?" echo -n " Q. What do you want your snipeit user password to be?"
read -s mysqluserpw read -s mysqluserpw
echo "" echo ""
ans="no" ans="no"
;; ;;
*) echo " Invalid answer. Please type y or n" *) echo " Invalid answer. Please type y or n"
;; ;;
esac esac
done done
@ -207,346 +208,349 @@ chmod 700 $dbsetup
## TODO: Progress tracker on each step ## TODO: Progress tracker on each step
case $distro in case $distro in
debian) debian)
##################################### Install for Debian ############################################## ##################################### Install for Debian ##############################################
#Update/upgrade Debian/Ubuntu repositories, get the latest version of git. #Update/upgrade Debian/Ubuntu repositories, get the latest version of git.
#Git clone snipeit, create vhost, edit hosts file, create .env file, mysql install #Git clone snipeit, create vhost, edit hosts file, create .env file, mysql install
#composer install, set permissions, restart apache. #composer install, set permissions, restart apache.
#BTW, Debian, I swear, you're such a pain. #BTW, Debian, I swear, you're such a pain.
webdir=/var/www webdir=/var/www
echo -e "\n* Updating Debian packages in the background... ${spin[0]}\n" echo -e "\n* Updating Debian packages in the background... ${spin[0]}\n"
apt-get update >> /var/log/snipeit-install.log & pid=$! 2>&1 apt-get update >> /var/log/snipeit-install.log & pid=$! 2>&1
wait wait
apt-get upgrade >> /var/log/snipeit-install.log & pid=$! 2>&1 apt-get upgrade >> /var/log/snipeit-install.log & pid=$! 2>&1
wait wait
echo -e "\n* Installing packages... ${spin[0]}\n" echo -e "\n* Installing packages... ${spin[0]}\n"
echo -e "\n* Going to suppress more messages that you don't need to worry about. Please wait... ${spin[0]}" echo -e "\n* Going to suppress more messages that you don't need to worry about. Please wait... ${spin[0]}"
DEBIAN_FRONTEND=noninteractive apt-get -y install mariadb-server mariadb-client apache2 git unzip php5 php5-mcrypt php5-curl php5-mysql php5-gd php5-ldap libapache2-mod-php5 curl >> /var/log/snipeit-install.log & pid=$! 2>&1 DEBIAN_FRONTEND=noninteractive apt-get -y install mariadb-server mariadb-client apache2 git unzip php5 php5-mcrypt php5-curl php5-mysql php5-gd php5-ldap libapache2-mod-php5 curl >> /var/log/snipeit-install.log & pid=$! 2>&1
progress progress
wait wait
echo -e "\n* Cloning Snipeit, extracting to $webdir/$name..." echo -e "\n* Cloning Snipeit, extracting to $webdir/$name..."
git clone https://github.com/snipe/snipe-it $webdir/$name >> /var/log/snipeit-install.log & pid=$! 2>&1 git clone https://github.com/snipe/snipe-it $webdir/$name >> /var/log/snipeit-install.log & pid=$! 2>&1
progress progress
php5enmod mcrypt >> /var/log/snipeit-install.log 2>&1 php5enmod mcrypt >> /var/log/snipeit-install.log 2>&1
a2enmod rewrite >> /var/log/snipeit-install.log 2>&1 a2enmod rewrite >> /var/log/snipeit-install.log 2>&1
vhenvfile vhenvfile
wait wait
echo >> $hosts "127.0.0.1 $hostname $fqdn" echo >> $hosts "127.0.0.1 $hostname $fqdn"
a2ensite $name.conf a2ensite $name.conf
echo -e "* Modify the Snipe-It files necessary for a production environment.\n* Securing Mysql" echo -e "* Modify the Snipe-It files necessary for a production environment.\n* Securing Mysql"
# Have user set own root password when securing install # Have user set own root password when securing install
# and just set the snipeit database user at the beginning # and just set the snipeit database user at the beginning
/usr/bin/mysql_secure_installation /usr/bin/mysql_secure_installation
echo -e "* Creating Mysql Database and User.\n## Please Input your MySQL/MariaDB root password: " echo -e "* Creating Mysql Database and User.\n## Please Input your MySQL/MariaDB root password: "
mysql -u root -p < $dbsetup mysql -u root -p < $dbsetup
cd $webdir/$name/ cd $webdir/$name/
curl -sS https://getcomposer.org/installer | php curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source php composer.phar install --no-dev --prefer-source
perms perms
service apache2 restart service apache2 restart
php artisan key:generate
php artisan passport:install
;;
ubuntu)
##################################### Install for Ubuntu ##############################################
#Update/upgrade Debian/Ubuntu repositories, get the latest version of git.
#Git clone snipeit, create vhost, .env file, mysql install
#composer install, set permissions, restart apache.
webdir=/var/www
echo -ne "\n* Adding MariaDB repo in the background... ${spin[0]}"
(echo "deb [arch=amd64,i386] http://ftp.hosteurope.de/mirror/mariadb.org/repo/10.1/ubuntu $codename main" | tee /etc/apt/sources.list.d/mariadb.list >/dev/null 2>&1)
log "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8"
echo -ne "\n* Updating with apt-get update in the background... ${spin[0]}"
log "apt-get update" & pid=$!
[ -f /var/lib/dpkg/lock ] && rm -f /var/lib/dpkg/lock
progress
echo -ne "\n* Upgrading packages with apt-get upgrade in the background... ${spin[0]}"
log "apt-get -y upgrade" & pid=$!
progress
echo -ne "\n* Setting up LAMP in the background... ${spin[0]}\n"
log "DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server mariadb-client apache2 libapache2-mod-php curl" & pid=$!
progress
if [ "$version" == "16.04" ]; then
log "apt-get install -y git unzip php php-mcrypt php-curl php-mysql php-gd php-ldap php-zip php-mbstring php-xml" & pid=$!
progress
log "phpenmod mcrypt"
log "phpenmod mbstring"
log "a2enmod rewrite"
else
log "apt-get install -y git unzip php5 php5-mcrypt php5-curl php5-mysql php5-gd php5-ldap" & pid=$!
progress
log "php5enmod mcrypt"
log "a2enmod rewrite"
fi
echo -ne "\n* Cloning Snipeit, extracting to $webdir/$name... ${spin[0]}"
log "git clone https://github.com/snipe/snipe-it $webdir/$name" & pid=$!
progress
vhenvfile
echo -e "* MySQL Phase next.\n"
service mysql status >/dev/null || service mysql start
/usr/bin/mysql_secure_installation
echo -e "* Creating MySQL Database and user.\n* Please Input your MySQL/MariaDB root password created in the previous step.: "
mysql -u root -p < $dbsetup
echo -e "\n* Securing Mysql\n* Installing and configuring composer"
cd $webdir/$name/
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source
perms
chown -R www-data:www-data "/var/www/$name"
service apache2 restart
php artisan key:generate php artisan key:generate
php artisan passport:install php artisan passport:install
;; ;;
centos ) ubuntu)
if [[ "$version" =~ ^6 ]]; then ##################################### Install for Ubuntu ##############################################
##################################### Install for Centos/Redhat 6 ############################################## #Update/upgrade Debian/Ubuntu repositories, get the latest version of git.
#Git clone snipeit, create vhost, .env file, mysql install
#composer install, set permissions, restart apache.
webdir=/var/www/html webdir=/var/www
#Allow us to get the mysql engine echo -ne "\n* Adding MariaDB repo in the background... ${spin[0]}"
echo "" (echo "deb [arch=amd64,i386] http://ftp.hosteurope.de/mirror/mariadb.org/repo/10.1/ubuntu $codename main" | tee /etc/apt/sources.list.d/mariadb.list >/dev/null 2>&1)
echo "## Adding IUS, epel-release and mariaDB repos."; log "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8"
mariadbRepo=/etc/yum.repos.d/MariaDB.repo echo -ne "\n* Updating with apt-get update in the background... ${spin[0]}"
touch "$mariadbRepo" log "apt-get update" & pid=$!
{ [ -f /var/lib/dpkg/lock ] && rm -f /var/lib/dpkg/lock
echo "[mariadb]" progress
echo "name = MariaDB" echo -ne "\n* Upgrading packages with apt-get upgrade in the background... ${spin[0]}"
echo "baseurl = http://yum.mariadb.org/10.0/centos6-amd64" log "apt-get -y upgrade" & pid=$!
echo "gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB" progress
echo "gpgcheck=1" echo -ne "\n* Setting up LAMP in the background... ${spin[0]}\n"
echo "enable=1" log "DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server mariadb-client apache2 libapache2-mod-php curl" & pid=$!
} >> "$mariadbRepo" progress
if [ "$version" == "16.04" ]; then
log "yum -y install wget epel-release" log "apt-get install -y git unzip php php-mcrypt php-curl php-mysql php-gd php-ldap php-zip php-mbstring php-xml" & pid=$!
log "wget -P "$tmp/" https://centos6.iuscommunity.org/ius-release.rpm" progress
log "rpm -Uvh "$tmp/ius-release*.rpm"" log "phpenmod mcrypt"
log "phpenmod mbstring"
#Install PHP and other needed stuff. log "a2enmod rewrite"
echo "## Installing PHP and other needed stuff"; else
PACKAGES="httpd MariaDB-server git unzip php56u php56u-mysqlnd php56u-bcmath php56u-cli php56u-common php56u-embedded php56u-gd php56u-mbstring php56u-mcrypt php56u-ldap" log "apt-get install -y git unzip php5 php5-mcrypt php5-curl php5-mysql php5-gd php5-ldap" & pid=$!
progress
for p in $PACKAGES;do log "php5enmod mcrypt"
if isinstalled "$p"; then log "a2enmod rewrite"
echo " ## $p already installed" fi
else echo -ne "\n* Cloning Snipeit, extracting to $webdir/$name... ${spin[0]}"
echo -n " ## installing $p ... " log "git clone https://github.com/snipe/snipe-it $webdir/$name" & pid=$!
log "yum -y install $p" progress
echo ""; vhenvfile
fi echo -e "* MySQL Phase next.\n"
done; service mysql status >/dev/null || service mysql start
/usr/bin/mysql_secure_installation
echo -e "\n## Downloading Snipe-IT from github and putting it in the web directory."; echo -e "* Creating MySQL Database and user.\n* Please Input your MySQL/MariaDB root password created in the previous step.: "
mysql -u root -p < $dbsetup
log "wget -P $tmp/ https://github.com/snipe/snipe-it/archive/$file" echo -e "\n* Securing Mysql\n* Installing and configuring composer"
unzip -qo $tmp/$file -d $tmp/ cd $webdir/$name/
cp -R $tmp/$fileName $webdir/$name curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source
# Make mariaDB start on boot and restart the daemon perms
echo "## Starting the mariaDB server."; chown -R www-data:www-data "/var/www/$name"
chkconfig mysql on service apache2 restart
/sbin/service mysql start php artisan key:generate
echo "## Securing mariaDB server.";
/usr/bin/mysql_secure_installation
echo "## Creating MySQL Database/User."
echo "## Please Input your MySQL/MariaDB root password: "
mysql -u root -p < $dbsetup
#Create the new virtual host in Apache and enable rewrite
echo "## Creating the new virtual host in Apache.";
apachefile=/etc/httpd/conf.d/$name.conf
{
echo ""
echo ""
echo ""
echo "<VirtualHost *:80>"
echo "ServerAdmin webmaster@localhost"
echo " <Directory $webdir/$name/public>"
echo " Allow From All"
echo " AllowOverride All"
echo " Options +Indexes"
echo " </Directory>"
echo " DocumentRoot $webdir/$name/public"
echo " ServerName $fqdn"
echo " ErrorLog /var/log/httpd/snipeIT.error.log"
echo " CustomLog /var/log/access.log combined"
echo "</VirtualHost>"
} >> "$apachefile"
echo "## Setting up hosts file.";
echo >> $hosts "127.0.0.1 $hostname $fqdn"
# Make apache start on boot and restart the daemon
echo "## Starting the apache server.";
chkconfig httpd on
/sbin/service httpd start
tzone=$(grep ZONE /etc/sysconfig/clock | tr -d '"' | sed 's/ZONE=//g');
echo "## Configuring .env file."
cat > $webdir/$name/.env <<-EOF
#Created By Snipe-it Installer
APP_TIMEZONE=$tzone
DB_HOST=localhost
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=$mysqluserpw
APP_URL=http://$fqdn
APP_KEY=$random32
DB_DUMP_PATH='/usr/bin'
EOF
echo "## Configure composer"
cd $webdir/$name
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source
perms
chown -R apache:apache $webdir/$name
/sbin/service iptables status >/dev/null 2>&1
if [ $? = 0 ]; then
#Open http/https port
iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -I INPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
#Save iptables
service iptables save
fi
service httpd restart
php artisan key:generate
php artisan passport:install
elif [[ "$version" =~ ^7 ]]; then
##################################### Install for Centos/Redhat 7 ##############################################
webdir=/var/www/html
#Allow us to get the mysql engine
echo -e "\n## Add IUS, epel-release and mariaDB repos.";
log "yum -y install wget epel-release"
log "wget -P $tmp/ https://centos7.iuscommunity.org/ius-release.rpm"
log "rpm -Uvh $tmp/ius-release*.rpm"
#Install PHP and other needed stuff.
echo "## Installing PHP and other needed stuff";
PACKAGES="httpd mariadb-server git unzip php56u php56u-mysqlnd php56u-bcmath php56u-cli php56u-common php56u-embedded php56u-gd php56u-mbstring php56u-mcrypt php56u-ldap"
for p in $PACKAGES;do
if isinstalled "$p"; then
echo " ## $p already installed"
else
echo -n " ## installing $p ... "
log "yum -y install $p"
echo "";
fi
done;
echo -e "\n## Downloading Snipe-IT from github and put it in the web directory.";
log "git clone https://github.com/snipe/snipe-it $webdir/$name"
# Make mariaDB start on boot and restart the daemon
echo "## Starting the mariaDB server.";
systemctl enable mariadb.service
systemctl start mariadb.service
echo "## Securing mariaDB server.";
echo "";
echo "";
/usr/bin/mysql_secure_installation
echo "## Creating MySQL Database/User."
echo "## Please Input your MySQL/MariaDB root password "
mysql -u root -p < "$dbsetup"
##TODO make sure the apachefile doesnt exist isnt already in there
#Create the new virtual host in Apache and enable rewrite
apachefile="/etc/httpd/conf.d/$name.conf"
{
echo "## Creating the new virtual host in Apache.";
echo ""
echo ""
echo "LoadModule rewrite_module modules/mod_rewrite.so"
echo ""
echo "<VirtualHost *:80>"
echo "ServerAdmin webmaster@localhost"
echo " <Directory $webdir/$name/public>"
echo " Allow From All"
echo " AllowOverride All"
echo " Options +Indexes"
echo " </Directory>"
echo " DocumentRoot $webdir/$name/public"
echo " ServerName $fqdn"
echo " ErrorLog /var/log/httpd/snipeIT.error.log"
echo " CustomLog /var/log/access.log combined"
echo "</VirtualHost>"
} >> "$apachefile"
##TODO make sure this isnt already in there
echo "## Setting up hosts file.";
echo >> $hosts "127.0.0.1 $hostname $fqdn"
echo "## Starting the apache server.";
# Make apache start on boot and restart the daemon
systemctl enable httpd.service
systemctl restart httpd.service
tzone=$(timedatectl | gawk -F'[: ]' ' $9 ~ /zone/ {print $11}');
echo "## Configuring .env file."
cat > $webdir/$name/.env <<-EOF
#Created By Snipe-it Installer
APP_TIMEZONE=$tzone
DB_HOST=localhost
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=$mysqluserpw
APP_URL=http://$fqdn
APP_KEY=$random32
DB_DUMP_PATH='/usr/bin'
EOF
# Change permissions on directories
#Install / configure composer
cd $webdir/$name
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source
perms
chown -R apache:apache $webdir/$name
# Make SeLinux happy
chcon -R -h -t httpd_sys_script_rw_t $webdir/$name/
#Check if SELinux is enforcing
if [ "$(getenforce)" == "Enforcing" ]; then
#Add SELinux and firewall exception/rules.
#Required for ldap integration
setsebool -P httpd_can_connect_ldap on
#Sets SELinux context type so that scripts running in the web server process are allowed read/write access
chcon -R -h -t httpd_sys_script_rw_t $webdir/$name/
fi
systemctl restart httpd.service
php artisan key:generate
php artisan passport:install php artisan passport:install
;;
centos )
if [[ "$version" =~ ^6 ]]; then
##################################### Install for Centos/Redhat 6 ##############################################
else webdir=/var/www/html
echo "Unable to Handle Centos Version #. Version Found: " $version #Allow us to get the mysql engine
return 1 echo ""
fi echo "## Adding IUS, epel-release and mariaDB repositories.";
mariadbRepo=/etc/yum.repos.d/MariaDB.repo
touch "$mariadbRepo"
{
echo "[mariadb]"
echo "name = MariaDB"
echo "baseurl = http://yum.mariadb.org/10.0/centos6-amd64"
echo "gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB"
echo "gpgcheck=1"
echo "enable=1"
} >> "$mariadbRepo"
log "yum -y install wget epel-release"
log "wget -P "$tmp/" https://centos6.iuscommunity.org/ius-release.rpm"
log "rpm -Uvh "$tmp/ius-release*.rpm""
#Install PHP and other needed stuff
echo "## Installing PHP and other requirements.";
PACKAGES="httpd mariadb-server git unzip php71u php71u-mysqlnd php71u-bcmath php71u-cli php71u-common php71u-embedded php71u-gd php71u-mbstring php71u-mcrypt php71u-ldap php71u-json php71u-simplexml"
for p in $PACKAGES;do
if isinstalled "$p"; then
echo " ## $p already installed"
else
echo -n " ## Installing $p ... "
log "yum -y install $p"
echo "";
fi
done;
echo -e "\n## Cloning Snipe-IT from github to the web directory.";
log "git clone https://github.com/snipe/snipe-it $webdir/$name"
# Make mariaDB start on boot and restart the daemon
echo "## Starting the mariaDB server.";
chkconfig mysql on
/sbin/service mysql start
echo "## Securing mariaDB server.";
/usr/bin/mysql_secure_installation
echo "## Creating MySQL Database/User."
echo "## Please Input your MySQL/MariaDB root password: "
mysql -u root -p < $dbsetup
#Create the new virtual host in Apache and enable rewrite
echo "## Creating the new virtual host in Apache.";
apachefile=/etc/httpd/conf.d/$name.conf
{
echo ""
echo ""
echo ""
echo "<VirtualHost *:80>"
echo "ServerAdmin webmaster@localhost"
echo " <Directory $webdir/$name/public>"
echo " Allow From All"
echo " AllowOverride All"
echo " Options +Indexes"
echo " </Directory>"
echo " DocumentRoot $webdir/$name/public"
echo " ServerName $fqdn"
echo " ErrorLog /var/log/httpd/snipeIT.error.log"
echo " CustomLog /var/log/access.log combined"
echo "</VirtualHost>"
} >> "$apachefile"
echo "## Setting up hosts file.";
echo >> $hosts "127.0.0.1 $hostname $fqdn"
# Make apache start on boot and restart the daemon
echo "## Starting the apache server.";
chkconfig httpd on
/sbin/service httpd start
tzone=$(grep ZONE /etc/sysconfig/clock | tr -d '"' | sed 's/ZONE=//g');
echo "## Configuring .env file."
cp $webdir/$name/.env.example $webdir/$name/.env
sed -i '1 i\#Created By Snipe-it Installer' $webdir/$name/.env
sed -i 's,^\(APP_TIMEZONE=\).*,\1'$tzone',' $webdir/$name/.env
sed -i 's,^\(DB_HOST=\).*,\1'localhost',' $webdir/$name/.env
sed -i 's,^\(DB_DATABASE=\).*,\1'snipeit',' $webdir/$name/.env
sed -i 's,^\(DB_USERNAME=\).*,\1'snipeit',' $webdir/$name/.env
sed -i 's,^\(DB_PASSWORD=\).*,\1'$mysqluserpw',' $webdir/$name/.env
sed -i 's,^\(APP_URL=\).*,\1'http://$fqdn',' $webdir/$name/.env
sed -i 's,^\(APP_KEY=\).*,\1'$$random32',' $webdir/$name/.env
echo "## Configure composer"
cd $webdir/$name
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source
perms
chown -R apache:apache $webdir/$name
/sbin/service iptables status >/dev/null 2>&1
if [ $? = 0 ]; then
#Open http/https port
iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -I INPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
#Save iptables
service iptables save
fi
service httpd restart
echo "## Generating the application key."
php artisan key:generate --force
echo "## Artisan Migrate."
php artisan migrate --force
elif [[ "$version" =~ ^7 ]]; then
##################################### Install for Centos/Redhat 7 ##############################################
webdir=/var/www/html
#Allow us to get the mysql engine
echo -e "\n## Adding IUS, epel-release and mariaDB repositories.";
log "yum -y install wget epel-release"
log "wget -P $tmp/ https://centos7.iuscommunity.org/ius-release.rpm"
log "rpm -Uvh $tmp/ius-release*.rpm"
#Install PHP and other requirements
echo "## Installing PHP and other requirements.";
PACKAGES="httpd mariadb-server git unzip php71u php71u-mysqlnd php71u-bcmath php71u-cli php71u-common php71u-embedded php71u-gd php71u-mbstring php71u-mcrypt php71u-ldap php71u-json php71u-simplexml"
for p in $PACKAGES;do
if isinstalled "$p"; then
echo " ## $p already installed"
else
echo -n " ## Installing $p ... "
log "yum -y install $p"
echo "";
fi
done;
echo -e "\n## Cloning Snipe-IT from github to the web directory.";
log "git clone https://github.com/snipe/snipe-it $webdir/$name"
# Make mariaDB start on boot and restart the daemon
echo "## Starting the mariaDB server.";
systemctl enable mariadb.service
systemctl start mariadb.service
echo "## Securing mariaDB server.";
echo "";
echo "";
/usr/bin/mysql_secure_installation
echo "## Creating MySQL Database/User."
echo "## Please Input your MySQL/MariaDB root password "
mysql -u root -p < "$dbsetup"
##TODO make sure the apachefile doesnt exist isnt already in there
#Create the new virtual host in Apache and enable rewrite
apachefile="/etc/httpd/conf.d/$name.conf"
{
echo "## Creating the new virtual host in Apache.";
echo ""
echo ""
echo "LoadModule rewrite_module modules/mod_rewrite.so"
echo ""
echo "<VirtualHost *:80>"
echo "ServerAdmin webmaster@localhost"
echo " <Directory $webdir/$name/public>"
echo " Allow From All"
echo " AllowOverride All"
echo " Options +Indexes"
echo " </Directory>"
echo " DocumentRoot $webdir/$name/public"
echo " ServerName $fqdn"
echo " ErrorLog /var/log/httpd/snipeIT.error.log"
echo " CustomLog /var/log/access.log combined"
echo "</VirtualHost>"
} >> "$apachefile"
##TODO make sure this isnt already in there
echo "## Setting up hosts file.";
echo >> $hosts "127.0.0.1 $hostname $fqdn"
echo "## Starting the apache server.";
# Make apache start on boot and restart the daemon
systemctl enable httpd.service
systemctl restart httpd.service
tzone=$(timedatectl | gawk -F'[: ]' ' $9 ~ /zone/ {print $11}');
echo "## Configuring .env file."
cp $webdir/$name/.env.example $webdir/$name/.env
sed -i '1 i\#Created By Snipe-it Installer' $webdir/$name/.env
sed -i 's,^\(APP_TIMEZONE=\).*,\1'$tzone',' $webdir/$name/.env
sed -i 's,^\(DB_HOST=\).*,\1'localhost',' $webdir/$name/.env
sed -i 's,^\(DB_DATABASE=\).*,\1'snipeit',' $webdir/$name/.env
sed -i 's,^\(DB_USERNAME=\).*,\1'snipeit',' $webdir/$name/.env
sed -i 's,^\(DB_PASSWORD=\).*,\1'$mysqluserpw',' $webdir/$name/.env
sed -i 's,^\(APP_URL=\).*,\1'http://$fqdn',' $webdir/$name/.env
sed -i 's,^\(APP_KEY=\).*,\1'$$random32',' $webdir/$name/.env
#Install / configure composer
cd $webdir/$name
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source
#Set permissions
perms
chown -R apache:apache $webdir/$name
#Check if SELinux is enforcing
if [ "$(getenforce)" == "Enforcing" ]; then
#Add SELinux and firewall exception/rules
#Required for ldap integration
setsebool -P httpd_can_connect_ldap on
#Sets SELinux context type so that scripts running in the web server process are allowed read/write access
chcon -R -h -t httpd_sys_script_rw_t $webdir/$name/
fi
systemctl restart httpd.service
echo "## Generating the application key."
php artisan key:generate --force
echo "## Artisan Migrate."
php artisan migrate --force
echo "## Creating scheduler cron."
(crontab -l ; echo "* * * * * /usr/bin/php $webdir/$name/artisan schedule:run >> /dev/null 2>&1") | crontab -
else
echo "Unable to Handle Centos Version #. Version Found: " $version
return 1
fi
esac esac
echo "" echo ""
echo " ***If you want mail capabilities, edit $webdir/$name/.env and edit based on .env.example***" echo " ***If you want mail capabilities, edit $webdir/$name/.env***"
echo "" echo ""
echo " ***Open http://$fqdn to login to Snipe-IT.***" echo " ***Open http://$fqdn to login to Snipe-IT.***"
echo "" echo ""