Add install-laravel-ad.sh
This commit is contained in:
parent
16dc6d92ab
commit
dc86e6d70b
114
install-laravel-ad.sh
Normal file
114
install-laravel-ad.sh
Normal file
@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "=== Laravel LXC Setup Script ==="
|
||||
|
||||
read -p "Enter your Laravel project name (directory name): " APP_NAME
|
||||
read -p "Enter your Laravel project Git repository URL (leave blank to create a new project): " GIT_REPO
|
||||
read -p "Choose database (mysql/sqlite): " DB_TYPE
|
||||
|
||||
if [[ "$DB_TYPE" == "mysql" ]]; then
|
||||
read -p "Enter database username for MariaDB (example: laravel_user): " DB_USER
|
||||
read -s -p "Enter password for database user: " DB_PASS
|
||||
echo ""
|
||||
read -p "Enter Laravel database name (example: laravel_db): " DB_NAME
|
||||
fi
|
||||
|
||||
echo "Updating package lists and installing dependencies..."
|
||||
apt update && apt upgrade -y
|
||||
|
||||
echo "Installing common packages..."
|
||||
apt install -y apache2 php php-curl php-bcmath php-json php-mbstring php-xml php-tokenizer php-zip unzip git curl
|
||||
|
||||
if [[ "$DB_TYPE" == "mysql" ]]; then
|
||||
echo "Installing MariaDB and PHP MySQL extensions..."
|
||||
apt install -y mariadb-server php-mysql
|
||||
elif [[ "$DB_TYPE" == "sqlite" ]]; then
|
||||
echo "Installing PHP SQLite extension..."
|
||||
apt install -y php-sqlite3
|
||||
else
|
||||
echo "Unsupported database type: $DB_TYPE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installing Composer..."
|
||||
curl -sS https://getcomposer.org/installer | php
|
||||
mv composer.phar /usr/local/bin/composer
|
||||
|
||||
echo "Setting up the database..."
|
||||
if [[ "$DB_TYPE" == "mysql" ]]; then
|
||||
mysql -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;"
|
||||
mysql -e "CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
mysql -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
||||
mysql -e "FLUSH PRIVILEGES;"
|
||||
fi
|
||||
|
||||
cd /var/www/
|
||||
|
||||
if [ -z "$GIT_REPO" ]; then
|
||||
echo "Creating new Laravel project called $APP_NAME"
|
||||
composer create-project --prefer-dist laravel/laravel $APP_NAME
|
||||
else
|
||||
echo "Cloning Laravel app from $GIT_REPO into $APP_NAME"
|
||||
git clone $GIT_REPO $APP_NAME
|
||||
cd $APP_NAME
|
||||
composer install
|
||||
fi
|
||||
|
||||
cd /var/www/$APP_NAME
|
||||
|
||||
if [[ "$DB_TYPE" == "sqlite" ]]; then
|
||||
echo "Creating SQLite database file..."
|
||||
touch database/database.sqlite
|
||||
fi
|
||||
|
||||
echo "Setting permissions..."
|
||||
chown -R www-data:www-data /var/www/$APP_NAME
|
||||
chmod -R 775 storage bootstrap/cache
|
||||
|
||||
echo "Configuring Apache for Laravel..."
|
||||
a2enmod rewrite
|
||||
|
||||
cat > /etc/apache2/sites-available/$APP_NAME.conf <<EOF
|
||||
<VirtualHost *:80>
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot /var/www/$APP_NAME/public
|
||||
|
||||
<Directory /var/www/$APP_NAME>
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
ErrorLog \${APACHE_LOG_DIR}/$APP_NAME-error.log
|
||||
CustomLog \${APACHE_LOG_DIR}/$APP_NAME-access.log combined
|
||||
</VirtualHost>
|
||||
EOF
|
||||
|
||||
a2dissite 000-default.conf
|
||||
a2ensite $APP_NAME.conf
|
||||
|
||||
systemctl reload apache2
|
||||
systemctl restart apache2
|
||||
|
||||
echo "Creating Laravel environment file..."
|
||||
cp .env.example .env
|
||||
|
||||
sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=$DB_TYPE/" .env
|
||||
|
||||
if [[ "$DB_TYPE" == "mysql" ]]; then
|
||||
sed -i "s/DB_DATABASE=.*/DB_DATABASE=$DB_NAME/" .env
|
||||
sed -i "s/DB_USERNAME=.*/DB_USERNAME=$DB_USER/" .env
|
||||
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" .env
|
||||
elif [[ "$DB_TYPE" == "sqlite" ]]; then
|
||||
sed -i "s|DB_DATABASE=.*|DB_DATABASE=$(pwd)/database/database.sqlite|" .env
|
||||
sed -i "s/DB_USERNAME=.*/DB_USERNAME=/" .env
|
||||
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=/" .env
|
||||
fi
|
||||
|
||||
echo "Generating application key and running migrations..."
|
||||
php artisan key:generate
|
||||
php artisan migrate --force
|
||||
|
||||
echo "Setup complete! Your Laravel application '$APP_NAME' is hosted and running."
|
||||
echo "Access it via the container's IP address in a browser."
|
||||
|
||||
exit 0
|
||||
Loading…
x
Reference in New Issue
Block a user