mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-09 23:24:06 -08:00
Support Debian 8 installs. Shellchecked. More cleanup. (#4174)
This commit is contained in:
parent
d7c9fcc8df
commit
48277606de
163
snipeit.sh
163
snipeit.sh
|
@ -39,14 +39,12 @@ spin[3]="/"
|
|||
|
||||
# Debian/Ubuntu friendly f(x)s
|
||||
progress () {
|
||||
while kill -0 $pid > /dev/null 2>&1
|
||||
do
|
||||
for i in "${spin[@]}"
|
||||
do
|
||||
echo -ne "\b$i"
|
||||
sleep .1
|
||||
done
|
||||
while kill -0 "$pid" > /dev/null 2>&1; do
|
||||
for i in "${spin[@]}"; do
|
||||
echo -ne "\b$i"
|
||||
sleep .1
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
setvhdebian () {
|
||||
|
@ -100,30 +98,27 @@ installsnipeit () {
|
|||
log "git clone https://github.com/snipe/snipe-it $webdir/$name"
|
||||
|
||||
echo "* Configuring .env file."
|
||||
cp $webdir/$name/.env.example $webdir/$name/.env
|
||||
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 '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"
|
||||
|
||||
echo "* Installing and running composer."
|
||||
cd $webdir/$name/
|
||||
cd "$webdir/$name/"
|
||||
curl -sS https://getcomposer.org/installer | php
|
||||
php composer.phar install --no-dev --prefer-source
|
||||
|
||||
echo "* Setting permissions."
|
||||
chmod_dirs=( "$webdir/$name/storage" )
|
||||
chmod_dirs+=( "$webdir/$name/storage/private_uploads" )
|
||||
chmod_dirs+=( "$webdir/$name/public/uploads" )
|
||||
for chmod_dir in "${chmod_dirs[@]}"
|
||||
do
|
||||
for chmod_dir in "$webdir/$name/storage" "$webdir/$name/storage/private_uploads" "$webdir/$name/public/uploads"; do
|
||||
chmod -R 755 "$chmod_dir"
|
||||
done
|
||||
chown -R $ownergroup $webdir/$name
|
||||
|
||||
chown -R "$ownergroup" "$webdir/$name"
|
||||
|
||||
echo "* Generating the application key."
|
||||
log "php artisan key:generate --force"
|
||||
|
@ -135,8 +130,7 @@ installsnipeit () {
|
|||
(crontab -l ; echo "* * * * * /usr/bin/php $webdir/$name/artisan schedule:run >> /dev/null 2>&1") | crontab -
|
||||
}
|
||||
|
||||
#CentOS Friendly f(x)s
|
||||
function isinstalled {
|
||||
isinstalled () {
|
||||
if yum list installed "$@" >/dev/null 2>&1; then
|
||||
true
|
||||
else
|
||||
|
@ -144,8 +138,8 @@ function isinstalled {
|
|||
fi
|
||||
}
|
||||
|
||||
if [ -f /etc/lsb-release ]; then
|
||||
distro="$(lsb_release -s -i )"
|
||||
if [[ -f /etc/lsb-release || -f /etc/debian_version ]]; then
|
||||
distro="$(lsb_release -s -i)"
|
||||
version="$(lsb_release -s -r)"
|
||||
codename="$(lsb_release -c -s)"
|
||||
elif [ -f /etc/os-release ]; then
|
||||
|
@ -176,15 +170,15 @@ echo ""
|
|||
shopt -s nocasematch
|
||||
case $distro in
|
||||
*Ubuntu*)
|
||||
echo " The installer has detected Ubuntu version $version as the OS."
|
||||
echo " The installer has detected $distro version $version codename $codename."
|
||||
distro=ubuntu
|
||||
;;
|
||||
*Debian*)
|
||||
echo " The installer has detected Debian version $version as the OS."
|
||||
echo " The installer has detected $distro version $version codename $codename."
|
||||
distro=debian
|
||||
;;
|
||||
*centos*|*redhat*|*ol*|*rhel*)
|
||||
echo " The installer has detected $distro version $version as the OS."
|
||||
echo " The installer has detected $distro version $version."
|
||||
distro=centos
|
||||
;;
|
||||
*)
|
||||
|
@ -195,7 +189,7 @@ esac
|
|||
shopt -u nocasematch
|
||||
|
||||
echo -n " Q. What is the FQDN of your server? ($fqdn): "
|
||||
read fqdn
|
||||
read -r fqdn
|
||||
if [ -z "$fqdn" ]; then
|
||||
fqdn="$(hostname --fqdn)"
|
||||
fi
|
||||
|
@ -205,7 +199,7 @@ echo ""
|
|||
ans=default
|
||||
until [[ $ans == "yes" ]] || [[ $ans == "no" ]]; do
|
||||
echo -n " Q. Do you want to automatically create the database user password? (y/n) "
|
||||
read setpw
|
||||
read -r setpw
|
||||
|
||||
case $setpw in
|
||||
[yY] | [yY][Ee][Ss] )
|
||||
|
@ -215,7 +209,7 @@ case $setpw in
|
|||
;;
|
||||
[nN] | [n|N][O|o] )
|
||||
echo -n " Q. What do you want your snipeit user password to be?"
|
||||
read -s mysqluserpw
|
||||
read -rs mysqluserpw
|
||||
echo ""
|
||||
ans="no"
|
||||
;;
|
||||
|
@ -267,9 +261,54 @@ case $distro in
|
|||
echo "* Restarting Apache httpd."
|
||||
log "service apache2 restart"
|
||||
|
||||
elif [[ "$version" =~ ^8 ]]; then
|
||||
webdir=/var/www
|
||||
ownergroup=www-data:www-data
|
||||
tzone=$(cat /etc/timezone)
|
||||
|
||||
echo "* Adding MariaDB and ppa:ondrej/php repositories."
|
||||
log "apt-get install -y software-properties-common"
|
||||
log "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db"
|
||||
log "add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/debian $codename main'"
|
||||
#PHP7 repository
|
||||
log "apt-get install -y apt-transport-https"
|
||||
log "wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg"
|
||||
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
|
||||
|
||||
echo "* Updating with apt-get update."
|
||||
log "apt-get update" & pid=$!
|
||||
progress
|
||||
|
||||
echo "* Upgrading packages with apt-get upgrade."
|
||||
log "apt-get -y upgrade" & pid=$!
|
||||
progress
|
||||
|
||||
echo "* Installing Apache httpd, PHP, MariaDB and other requirements."
|
||||
log "DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server mariadb-client php7.1 php7.1-mcrypt php7.1-curl php7.1-mysql php7.1-gd php7.1-ldap php7.1-zip php7.1-mbstring php7.1-xml php7.1-bcmath curl git unzip" & pid=$!
|
||||
progress
|
||||
|
||||
a2enmod rewrite
|
||||
|
||||
echo "* Creating the new virtual host in Apache."
|
||||
setvhdebian
|
||||
|
||||
echo >> $hosts "127.0.0.1 $hostname $fqdn"
|
||||
|
||||
echo "* Securing MariaDB."
|
||||
/usr/bin/mysql_secure_installation
|
||||
|
||||
echo "* Creating MariaDB Database/User."
|
||||
echo "* Please Input your MariaDB root password:"
|
||||
mysql -u root -p --execute="CREATE DATABASE snipeit;GRANT ALL PRIVILEGES ON snipeit.* TO snipeit@localhost IDENTIFIED BY '$mysqluserpw';"
|
||||
|
||||
installsnipeit
|
||||
|
||||
echo "* Restarting Apache httpd."
|
||||
log "service apache2 restart"
|
||||
|
||||
else
|
||||
echo "Unsupported Debian version. Version found: " $version
|
||||
return 1
|
||||
echo "Unsupported Debian version. Version found: $version"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
ubuntu)
|
||||
|
@ -280,6 +319,7 @@ case $distro in
|
|||
tzone=$(cat /etc/timezone)
|
||||
|
||||
echo "* Adding MariaDB repository."
|
||||
log "apt-get install software-properties-common"
|
||||
log "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8"
|
||||
log "add-apt-repository 'deb [arch=amd64,i386] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu $codename main'"
|
||||
|
||||
|
@ -326,6 +366,7 @@ case $distro in
|
|||
tzone=$(cat /etc/timezone)
|
||||
|
||||
echo "* Adding MariaDB and ppa:ondrej/php repositories."
|
||||
log "apt-get install software-properties-common"
|
||||
log "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db"
|
||||
log "add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu $codename main'"
|
||||
#PHP7 repository
|
||||
|
@ -368,8 +409,8 @@ case $distro in
|
|||
log "service apache2 restart"
|
||||
|
||||
else
|
||||
echo "Unsupported Ubuntu version. Version found: " $version
|
||||
return 1
|
||||
echo "Unsupported Ubuntu version. Version found: $version"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
centos)
|
||||
|
@ -398,7 +439,7 @@ case $distro in
|
|||
echo "* Installing Apache httpd, PHP, MariaDB 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
|
||||
for p in $PACKAGES; do
|
||||
if isinstalled "$p"; then
|
||||
echo " * $p already installed"
|
||||
else
|
||||
|
@ -418,15 +459,13 @@ case $distro in
|
|||
echo "* Please Input your MariaDB root password: "
|
||||
mysql -u root -p --execute="CREATE DATABASE snipeit;GRANT ALL PRIVILEGES ON snipeit.* TO snipeit@localhost IDENTIFIED BY '$mysqluserpw';"
|
||||
|
||||
#Create the new virtual host in Apache and enable rewrite
|
||||
echo "* Creating the new virtual host in Apache."
|
||||
setvhcentos
|
||||
|
||||
echo "* Setting up hosts file."
|
||||
echo >> $hosts "127.0.0.1 $hostname $fqdn"
|
||||
|
||||
/sbin/service iptables status >/dev/null 2>&1
|
||||
if [ $? = 0 ]; then
|
||||
if /sbin/service iptables status >/dev/null 2>&1; then
|
||||
echo "* Configuring iptables."
|
||||
iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
|
||||
iptables -I INPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
|
||||
|
@ -453,7 +492,7 @@ case $distro in
|
|||
echo "* Installing Apache httpd, PHP, MariaDB 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
|
||||
for p in $PACKAGES; do
|
||||
if isinstalled "$p"; then
|
||||
echo " * $p already installed"
|
||||
else
|
||||
|
@ -498,53 +537,53 @@ case $distro in
|
|||
log "systemctl restart httpd.service"
|
||||
|
||||
else
|
||||
echo "Unsupported CentOS version. Version found: " $version
|
||||
return 1
|
||||
echo "Unsupported CentOS version. Version found: $version"
|
||||
exit 1
|
||||
fi
|
||||
esac
|
||||
|
||||
setupmail=default
|
||||
until [[ $setupmail == "yes" ]] || [[ $setupmail == "no" ]]; do
|
||||
echo -n " Q. Do you want to configure mail server settings? (y/n) "
|
||||
read setupmail
|
||||
read -r setupmail
|
||||
|
||||
case $setupmail in
|
||||
[yY] | [yY][Ee][Ss] )
|
||||
echo -n " Outgoing mailserver address:"
|
||||
read mailhost
|
||||
sed -i 's,^\(MAIL_HOST=\).*,\1'$mailhost',' $webdir/$name/.env
|
||||
read -r mailhost
|
||||
sed -i 's,^\(MAIL_HOST=\).*,\1'$mailhost',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " Server port number:"
|
||||
read mailport
|
||||
sed -i 's,^\(MAIL_PORT=\).*,\1'$mailport',' $webdir/$name/.env
|
||||
read -r mailport
|
||||
sed -i 's,^\(MAIL_PORT=\).*,\1'$mailport',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " Username:"
|
||||
read mailusername
|
||||
sed -i 's,^\(MAIL_USERNAME=\).*,\1'$mailusername',' $webdir/$name/.env
|
||||
read -r mailusername
|
||||
sed -i 's,^\(MAIL_USERNAME=\).*,\1'$mailusername',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " Password:"
|
||||
read mailpassword
|
||||
sed -i 's,^\(MAIL_PASSWORD=\).*,\1'$mailpassword',' $webdir/$name/.env
|
||||
read -rs mailpassword
|
||||
sed -i 's,^\(MAIL_PASSWORD=\).*,\1'$mailpassword',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " Encryption(null/TLS/SSL):"
|
||||
read mailencryption
|
||||
sed -i 's,^\(MAIL_ENCRYPTION=\).*,\1'$mailencryption',' $webdir/$name/.env
|
||||
read -r mailencryption
|
||||
sed -i 's,^\(MAIL_ENCRYPTION=\).*,\1'$mailencryption',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " From address:"
|
||||
read mailfromaddr
|
||||
sed -i 's,^\(MAIL_FROM_ADDR=\).*,\1'$mailfromaddr',' $webdir/$name/.env
|
||||
read -r mailfromaddr
|
||||
sed -i 's,^\(MAIL_FROM_ADDR=\).*,\1'$mailfromaddr',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " From name:"
|
||||
read mailfromname
|
||||
sed -i 's,^\(MAIL_FROM_NAME=\).*,\1'$mailfromname',' $webdir/$name/.env
|
||||
read -r mailfromname
|
||||
sed -i 's,^\(MAIL_FROM_NAME=\).*,\1'$mailfromname',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " Reply to address:"
|
||||
read mailreplytoaddr
|
||||
sed -i 's,^\(MAIL_REPLYTO_ADDR=\).*,\1'$mailreplytoaddr',' $webdir/$name/.env
|
||||
read -r mailreplytoaddr
|
||||
sed -i 's,^\(MAIL_REPLYTO_ADDR=\).*,\1'$mailreplytoaddr',' "$webdir/$name/.env"
|
||||
|
||||
echo -n " Reply to name:"
|
||||
read mailreplytoname
|
||||
sed -i 's,^\(MAIL_REPLYTO_NAME=\).*,\1'$mailreplytoname',' $webdir/$name/.env
|
||||
read -r mailreplytoname
|
||||
sed -i 's,^\(MAIL_REPLYTO_NAME=\).*,\1'$mailreplytoname',' "$webdir/$name/.env"
|
||||
setupmail="yes"
|
||||
;;
|
||||
[nN] | [n|N][O|o] )
|
||||
|
|
Loading…
Reference in a new issue