premiers tests ok

This commit is contained in:
2024-06-12 13:02:54 +02:00
commit c2aaf2183e
127 changed files with 12738 additions and 0 deletions

6
scripts/clear-nginx.sh Normal file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env bash
# Clear The Old Nginx Sites
rm -f /etc/nginx/sites-enabled/*
rm -f /etc/nginx/sites-available/*

View File

@ -0,0 +1,41 @@
#!/usr/bin/env bash
# Clear The Old Environment Variables
sed -i '/# Set Homestead Environment Variable/,+1d' /home/vagrant/.profile
if [ -f /etc/php/5.6/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/5.6/fpm/pool.d/www.conf
fi
if [ -f /etc/php/7.0/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/7.0/fpm/pool.d/www.conf
fi
if [ -f /etc/php/7.1/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/7.1/fpm/pool.d/www.conf
fi
if [ -f /etc/php/7.2/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/7.2/fpm/pool.d/www.conf
fi
if [ -f /etc/php/7.3/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/7.3/fpm/pool.d/www.conf
fi
if [ -f /etc/php/7.4/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/7.4/fpm/pool.d/www.conf
fi
if [ -f /etc/php/8.0/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/8.0/fpm/pool.d/www.conf
fi
if [ -f /etc/php/8.1/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/8.1/fpm/pool.d/www.conf
fi
if [ -f /etc/php/8.2/fpm/pool.d/www.conf ]; then
sed -i '/env\[.*/,+1d' /etc/php/8.2/fpm/pool.d/www.conf
fi

View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
sed -i "s/#browse-domains=.*/browse-domains=$1/" /etc/avahi/avahi-daemon.conf
sed -i "s/browse-domains=.*/browse-domains=$1/" /etc/avahi/avahi-daemon.conf
service avahi-daemon restart

View File

@ -0,0 +1,125 @@
#!/usr/bin/env bash
set -f
PATH_SSL="/etc/ssl/certs"
# Path to the custom Homestead $(hostname) Root CA certificate.
PATH_ROOT_CNF="${PATH_SSL}/ca.homestead.$(hostname).cnf"
PATH_ROOT_CRT="${PATH_SSL}/ca.homestead.$(hostname).crt"
PATH_ROOT_KEY="${PATH_SSL}/ca.homestead.$(hostname).key"
# Path to the custom site certificate.
PATH_CNF="${PATH_SSL}/${1}.cnf"
PATH_CRT="${PATH_SSL}/${1}.crt"
PATH_CSR="${PATH_SSL}/${1}.csr"
PATH_KEY="${PATH_SSL}/${1}.key"
BASE_CNF="
[ ca ]
default_ca = ca_homestead_$(hostname)
[ ca_homestead_$(hostname) ]
dir = $PATH_SSL
certs = $PATH_SSL
new_certs_dir = $PATH_SSL
private_key = $PATH_ROOT_KEY
certificate = $PATH_ROOT_CRT
default_md = sha256
name_opt = ca_default
cert_opt = ca_default
default_days = 365
preserve = no
policy = policy_loose
[ policy_loose ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
prompt = no
encrypt_key = no
default_bits = 2048
distinguished_name = req_distinguished_name
string_mask = utf8only
default_md = sha256
x509_extensions = v3_ca
[ v3_ca ]
authorityKeyIdentifier = keyid,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign
subjectKeyIdentifier = hash
[ server_cert ]
authorityKeyIdentifier = keyid,issuer:always
basicConstraints = CA:FALSE
extendedKeyUsage = serverAuth
keyUsage = critical, digitalSignature, keyEncipherment
subjectAltName = @alternate_names
subjectKeyIdentifier = hash
"
# Only generate the root certificate when there isn't one already there.
if [ ! -f $PATH_ROOT_CNF ] || [ ! -f $PATH_ROOT_KEY ] || [ ! -f $PATH_ROOT_CRT ]
then
# Generate an OpenSSL configuration file specifically for this certificate.
cnf="
${BASE_CNF}
[ req_distinguished_name ]
O = Vagrant
C = UN
CN = Homestead $(hostname) Root CA
"
echo "$cnf" > $PATH_ROOT_CNF
# Finally, generate the private key and certificate.
openssl genrsa -out "$PATH_ROOT_KEY" 4096 2>/dev/null
openssl req -config "$PATH_ROOT_CNF" \
-key "$PATH_ROOT_KEY" \
-x509 -new -extensions v3_ca -days 3650 -sha256 \
-out "$PATH_ROOT_CRT" 2>/dev/null
# Symlink ca to local certificate storage and run update command
ln --force --symbolic $PATH_ROOT_CRT /usr/local/share/ca-certificates/
update-ca-certificates
fi
# Only generate a certificate if there isn't one already there.
if [ ! -f $PATH_CNF ] || [ ! -f $PATH_KEY ] || [ ! -f $PATH_CRT ]
then
# Uncomment the global 'copy_extentions' OpenSSL option to ensure the SANs are copied into the certificate.
sed -i '/copy_extensions\ =\ copy/s/^#\ //g' /etc/ssl/openssl.cnf
# Generate an OpenSSL configuration file specifically for this certificate.
cnf="
${BASE_CNF}
[ req_distinguished_name ]
O = Vagrant
C = UN
CN = $1
[ alternate_names ]
DNS.1 = $1
DNS.2 = *.$1
"
echo "$cnf" > $PATH_CNF
# Finally, generate the private key and certificate signed with the Homestead $(hostname) Root CA.
openssl genrsa -out "$PATH_KEY" 2048 2>/dev/null
openssl req -config "$PATH_CNF" \
-key "$PATH_KEY" \
-new -sha256 -out "$PATH_CSR" 2>/dev/null
openssl x509 -req -extfile "$PATH_CNF" \
-extensions server_cert -days 365 -sha256 \
-in "$PATH_CSR" \
-CA "$PATH_ROOT_CRT" -CAkey "$PATH_ROOT_KEY" -CAcreateserial \
-out "$PATH_CRT" 2>/dev/null
fi

3
scripts/create-couch.sh Normal file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
curl -sX PUT http://127.0.0.1:5984/$1

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
mkdir /home/vagrant/ecosystem 2>/dev/null
PATH_ECOSYSTEM="/home/vagrant/ecosystem"
rm -rf /home/vagrant/ecosystem/*
PATH_JSON="${PATH_ECOSYSTEM}/${1}.json"
# variables
# 1 = name
# 2 = script
# 3 = args
# 4 = path
BASE_ECO='
{
"name": "'$1'",
"script": "'$2'",
"args": "'$3'",
"cwd": "'$4'"
}
'
# Only generate a ecosystem if there isn't one already there.
if [ ! -f $PATH_JSON ]
then
echo "$BASE_ECO" > $PATH_JSON
fi

View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
influx bucket create --token="homestead_secret" --name="$1" --org="homestead"

View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
if [[ -d /usr/local/share/minio/$1 ]]; then
echo "Bucket already exists, skipping..."
exit
fi
mc mb /usr/local/share/minio/$1
mc anonymous set $2 /usr/local/share/minio/$1
# Minio CLI Makes Buckets Under Root For Some Reason
sudo chown minio-user:minio-user /usr/local/share/minio/*

3
scripts/create-mongo.sh Normal file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
mongosh $1 --eval "db.test.insertOne({name:'db creation'})"

31
scripts/create-mysql.sh Normal file
View File

@ -0,0 +1,31 @@
#!/usr/bin/env bash
cat > /root/.my.cnf << EOF
[client]
user = root
password = secret
host = 127.0.0.1
EOF
cat > /home/vagrant/.my.cnf << EOF
[client]
user = homestead
password = secret
host = 127.0.0.1
EOF
chown vagrant /home/vagrant/.my.cnf
DB=$1
mariadb=$(ps ax | grep mariadb | wc -l)
mysql=$(ps ax | grep mysql | wc -l)
if [ "$mariadb" -gt 1 ]; then
mariadb -e "CREATE DATABASE IF NOT EXISTS \`$DB\` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci"
elif [ "$mysql" -gt 1 ]; then
mysql -e "CREATE DATABASE IF NOT EXISTS \`$DB\` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci"
else
# Skip Creating database
echo "We didn't find MariaDB (\$mariadb) or MySQL (\$mysql), skipping \`$DB\` creation"
fi

13
scripts/create-ngrok.sh Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
PATH_NGROK="/home/vagrant/.config/ngrok"
PATH_CONFIG="${PATH_NGROK}/ngrok.yml"
# Only create a ngrok config file if there isn't one already there.
if [ ! -f $PATH_CONFIG ]; then
mkdir -p "$PATH_NGROK"
cat > "$PATH_CONFIG" << EOF
version: 2
web_addr: $1:4040
EOF
fi

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
DB=$1;
postgres=$(pidof postgres)
if [ -z "$postgres" ]
then
# Skip Creating postgres database
echo "We didn't find a PID for postgres, skipping \$DB creation"
else
if ! su postgres -c "psql $DB -c '\q' 2>/dev/null"; then
su postgres -c "createdb -O homestead '$DB'"
fi
fi

13
scripts/cron-schedule.sh Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
if [ ! -d /etc/cron.d ]; then
mkdir /etc/cron.d
fi
SITE_DOMAIN=$1
SITE_PUBLIC_DIRECTORY=$2
SITE_PHP_VERSION=$3
cron="* * * * * vagrant . /home/vagrant/.profile; /usr/bin/php$SITE_PHP_VERSION $SITE_PUBLIC_DIRECTORY/../artisan schedule:run >> /dev/null 2>&1"
echo "$cron" > "/etc/cron.d/$SITE_DOMAIN"

View File

@ -0,0 +1,59 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
# Make sure Blackfire is updated to v2
if [ -f /home/$WSL_USER_NAME/.homestead-features/blackfire ] && [ ! -f /usr/bin/blackfire-agent ]
then
echo "blackfire already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/blackfire
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
curl -fsSL https://packages.blackfire.io/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/blackfire.gpg
echo "deb [signed-by=/etc/apt/keyrings/blackfire.gpg] http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list
# Install Blackfire
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y blackfire blackfire-php
agent="[blackfire]
ca-cert=
collector=https://blackfire.io
log-file=stderr
log-level=1
server-id=${server_id}
server-token=${server_token}
socket=unix:///var/run/blackfire/agent.sock
spec=
"
client="[blackfire]
ca-cert=
client-id=${client_id}
client-token=${client_token}
endpoint=https://blackfire.io
timeout=15s
"
echo "$agent" > "/etc/blackfire/agent"
echo "$client" > "/home/vagrant/.blackfire.ini"
service php5.6-fpm restart
service php7.0-fpm restart
service php7.1-fpm restart
service php7.2-fpm restart
service php7.3-fpm restart
service php7.4-fpm restart
service php8.0-fpm restart
service blackfire-agent restart

View File

@ -0,0 +1,97 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/cassandra ]
then
echo "cassandra already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/cassandra
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Cassandra and driver dependencies
echo "deb https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo DEBIAN_FRONTEND=noninteractive apt update
sudo DEBIAN_FRONTEND=noninteractive apt install cassandra openjdk-8-jdk git libgmp-dev php7.1-dev php7.2-dev php7.3-dev php7.4-dev -y
# Start Cassandra and boot at runtime
sudo service cassandra start
sudo update-rc.d cassandra defaults
# Install DataStax C++ (required for PHP Extension)
wget -q https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.28.0/libuv1-dev_1.28.0-1_amd64.deb
wget -q https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.28.0/libuv1_1.28.0-1_amd64.deb
wget -q https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.12.0/cassandra-cpp-driver-dev_2.12.0-1_amd64.deb
wget -q https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.12.0/cassandra-cpp-driver_2.12.0-1_amd64.deb
dpkg -i libuv1_1.28.0-1_amd64.deb
dpkg -i libuv1-dev_1.28.0-1_amd64.deb
dpkg -i cassandra-cpp-driver_2.12.0-1_amd64.deb
dpkg -i cassandra-cpp-driver-dev_2.12.0-1_amd64.deb
rm libuv1-dev_1.28.0-1_amd64.deb libuv1_1.28.0-1_amd64.deb cassandra-cpp-driver-dev_2.12.0-1_amd64.deb cassandra-cpp-driver_2.12.0-1_amd64.deb
# Install PHP Extension
cd /usr/src
git clone https://github.com/datastax/php-driver.git
cd /usr/src/php-driver/ext
sudo phpize7.1
mkdir /usr/src/php-driver/build
cd /usr/src/php-driver/build
sudo ../ext/configure --with-php-config=/usr/bin/php-config7.1 > /dev/null
make clean >/dev/null
make >/dev/null 2>&1
sudo make install
sudo chmod 644 /usr/lib/php/20160303/cassandra.so
cd /usr/src/php-driver/ext
sudo phpize7.2
cd /usr/src/php-driver/build
sudo /usr/src/php-driver/ext/configure --with-php-config=/usr/bin/php-config7.2 > /dev/null
sudo make clean >/dev/null
make >/dev/null 2>&1
sudo make install
sudo chmod 644 /usr/lib/php/20170718/cassandra.so
cd /usr/src/php-driver/ext
sudo phpize7.3
cd /usr/src/php-driver/build
sudo /usr/src/php-driver/ext/configure --with-php-config=/usr/bin/php-config7.3 > /dev/null
sudo make clean >/dev/null
make >/dev/null 2>&1
sudo make install
sudo chmod 644 /usr/lib/php/20180731/cassandra.so
echo "; configuration for php cassandra module" >/etc/php/7.1/mods-available/cassandra.ini
echo "; priority=20" >>/etc/php/7.1/mods-available/cassandra.ini
echo "extension=cassandra.so" >>/etc/php/7.1/mods-available/cassandra.ini
echo "; configuration for php cassandra module" >/etc/php/7.2/mods-available/cassandra.ini
echo "; priority=20" >>/etc/php/7.2/mods-available/cassandra.ini
echo "extension=cassandra.so" >>/etc/php/7.2/mods-available/cassandra.ini
echo "; configuration for php cassandra module" >/etc/php/7.3/mods-available/cassandra.ini
echo "; priority=20" >>/etc/php/7.3/mods-available/cassandra.ini
echo "extension=cassandra.so" >>/etc/php/7.3/mods-available/cassandra.ini
sudo phpenmod cassandra
# Clean Up
sudo rm -R /usr/src/php-driver
# Just in case other Java versions exist, set JAVA_HOME, because Cassandra doesn't work with newer
# Java versions than Java 8
echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" | sudo tee -a /etc/default/cassandra
sudo service cassandra stop
sudo service cassandra start

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/chronograf ]
then
echo "chronograf already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/chronograf
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
chronourl="https://dl.influxdata.com/chronograf/releases/chronograf_1.5.0.1_amd64.deb"
wget -q -O chronograf.deb $chronourl
sudo dpkg -i chronograf.deb
rm chronograf.deb
systemctl enable chronograf
systemctl daemon-reload
systemctl start chronograf

View File

@ -0,0 +1,47 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/couchdb ]
then
echo "couchdb already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/couchdb
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
curl -fsSL https://couchdb.apache.org/repo/keys.asc | sudo gpg --dearmor -o /etc/apt/keyrings/couchdb.gpg
echo "deb [signed-by=/etc/apt/keyrings/couchdb.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ jammy main" | sudo tee /etc/apt/sources.list.d/couchdb.list
sudo apt-get update
echo "couchdb couchdb/mode select standalone
couchdb couchdb/mode seen true
couchdb couchdb/bindaddress string 127.0.0.1
couchdb couchdb/bindaddress seen true" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y couchdb
sudo chown -R couchdb:couchdb /etc/couchdb
sudo chmod -R 0770 /etc/couchdb
sudo sed -i "s/;bind_address =.*/bind_address = 0.0.0.0/" /opt/couchdb/etc/local.ini
sudo service couchdb restart
sudo service nginx restart
sudo service php5.6-fpm restart
sudo service php7.0-fpm restart
sudo service php7.1-fpm restart
sudo service php7.2-fpm restart
sudo service php7.3-fpm restart
sudo service php7.4-fpm restart
sudo service php8.0-fpm restart

View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/crystal ]
then
echo "crystal already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/crystal
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Crystal Programming Language Support
curl -fsSL https://keybase.io/crystal/pgp_keys.asc | sudo gpg --dearmor -o /etc/apt/keyrings/crystal.gpg
echo "deb [signed-by=/etc/apt/keyrings/crystal.gpg] https://dist.crystal-lang.org/apt crystal main" | sudo tee /etc/apt/sources.list.d/crystal.list
apt-get update
apt-get install -y crystal
# Install Lucky Framework for Crystal
wget https://github.com/luckyframework/lucky_cli/archive/v0.11.0.tar.gz
tar -zxvf v0.11.0.tar.gz
cd lucky_cli-0.11.0
shards install
crystal build src/lucky.cr --release --no-debug
mv lucky /usr/local/bin/.
cd /home/vagrant
rm -rf lucky_cli-0.11.0
rm -rf v0.11.0.tar.gz

View File

@ -0,0 +1,23 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/dockstead ]
then
echo "dockstead already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/dockstead
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Ensure we're in swarm mode
docker swarm init --advertise-addr 192.168.56.56

View File

@ -0,0 +1,5 @@
# Mysql Parameters
MYSQL_ROOT_PASSWORD=secret
MYSQL_DATABASE=homestead
MYSQL_USER=homestead
MYSQL_PASSWORD=secret

View File

@ -0,0 +1,25 @@
---
#
# docker stack deploy -c /vagrant/scripts/features/dockstead/mysql-5.7.yaml mysql-56
#
version: "3.7"
services:
mysql:
image: mysql:5.7
volumes:
- type: volume
source: mysql-data
target: /var/lib/mysql
volume:
nocopy: true
ports:
- "3306:3306"
healthcheck:
test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
interval: 3s
timeout: 1s
retries: 5
env_file:
- env.docker
volumes:
mysql-data:

View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
# Stop the default MySQL Service
sudo service mysql stop
# Update /home/vagrant/.my.cnf
sed -i "s/localhost/127.0.0.1/" /home/vagrant/.my.cnf
# Start the MySQL 5.7 stack
docker stack deploy -c /vagrant/scripts/features/dockstead/mysql-5.7.yaml mysql-57
echo "Sleeping for 30 seconds while we wait for MySQL service to come up"
sleep 30

View File

@ -0,0 +1,59 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/dragonflydb ]; then
echo "Dragonflydb already installed."
exit 0
fi
ARCH=$(arch)
DRAGONFLY_URL="https://dragonflydb.gateway.scarf.sh/latest/dragonfly-$ARCH.tar.gz"
# Install Dragonfly
if ! curl -sSL "$DRAGONFLY_URL" -o dragonflydb.tar.gz; then
echo "Error downloading Dragonfly archive."
exit 1
fi
if ! tar -xzf dragonflydb.tar.gz "dragonfly-$ARCH"; then
echo "Error extracting Dragonfly archive."
exit 1
fi
mv "dragonfly-$ARCH" /usr/local/bin/dragonfly
# Create systemd service file
cat > /etc/systemd/system/dragonfly.service << EOF
[Unit]
Description=DragonFly
After=network.target
[Service]
User=vagrant
ExecStart=/usr/bin/env /usr/local/bin/dragonfly
[Install]
WantedBy=multi-user.target
EOF
# Disable and stop redis
systemctl disable --now redis-server
# Enable and start dragonfly
systemctl enable --now dragonfly
# Clean up
rm -rf dragonflydb.tar.gz
# Mark installation as complete
touch /home/$WSL_USER_NAME/.homestead-features/dragonflydb
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features

View File

@ -0,0 +1,62 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/elasticsearch ]
then
echo "Elasticsearch already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/elasticsearch
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Determine version from config
set -- "$1"
IFS=".";
if [ -z "${version}" ]; then
installVersion="" # by not specifying we'll install latest
majorVersion="7" # default to version 7
else
installVersion="=$version"
majorVersion="$(echo $version | head -c 1)"
fi
echo "Elasticsearch installVersion: $installVersion"
echo "Elasticsearch majorVersion: $majorVersion"
# Install Java & Elasticsearch
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /etc/apt/keyrings/elasticsearch.gpg
if [ ! -f /etc/apt/sources.list.d/elastic-$majorVersion.x.list ]; then
echo "deb [signed-by=/etc/apt/keyrings/elasticsearch.gpg] https://artifacts.elastic.co/packages/$majorVersion.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-$majorVersion.x.list
fi
sudo apt-get update
sudo apt-get -y install openjdk-11-jre
sudo apt-get -y install elasticsearch"$installVersion"
# Start Elasticsearch on boot
sudo update-rc.d elasticsearch defaults 95 10
# Update configuration to use 'homestead' as the cluster
sudo sed -i "s/#cluster.name: my-application/cluster.name: homestead/" /etc/elasticsearch/elasticsearch.yml
# Enable Start Elasticsearch
sudo systemctl enable elasticsearch.service
sudo service elasticsearch start

View File

@ -0,0 +1,54 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/eventstore ]
then
echo "eventstore already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/eventstore
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Determine wanted version from config
set -- "$1"
IFS=".";
if [ -z "${version}" ]; then
installVersion="" # by not specifying we'll install latest
else
installVersion="=${version}"
fi
# Install repository
curl -s https://packagecloud.io/install/repositories/EventStore/EventStore-OSS/script.deb.sh | bash
# Install EventStore package
apt-get install -y eventstore-oss"$installVersion"
# Update configuration
sed -i "s/RunProjections: None/RunProjections: ${run_projections:-All}/" /etc/eventstore/eventstore.conf
configuration="
extIp: ${external_ip:-0.0.0.0}
extTcpPort: ${external_tcp_port:-2112}
extHttpPort: ${external_http_port:-2113}
AdminOnExt: ${admin_on_ext:-true}
"
echo "$configuration" >> /etc/eventstore/eventstore.conf
# Allow the Event Store executable to bind to a port lower than 1024
setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/eventstored
# Enable and Start EventStore
systemctl enable eventstore.service
systemctl start eventstore.service

View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/flyway ]
then
echo "flyway CLI already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/flyway
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Flyway
wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/4.2.0/flyway-commandline-4.2.0-linux-x64.tar.gz
tar -zxvf flyway-commandline-4.2.0-linux-x64.tar.gz -C /usr/local
chmod +x /usr/local/flyway-4.2.0/flyway
ln -s /usr/local/flyway-4.2.0/flyway /usr/local/bin/flyway
rm -rf flyway-commandline-4.2.0-linux-x64.tar.gz

View File

@ -0,0 +1,28 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/gearman ]
then
echo "gearman already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/gearman
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Gearman Job Server and PHP Extension
sudo apt-get update
sudo apt-get install gearman-job-server php-gearman -y
# Listen on 0.0.0.0
sudo sed -i 's/localhost/0.0.0.0/g' /etc/default/gearman-job-server
sudo service gearman-job-server restart

View File

@ -0,0 +1,35 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/golang ]
then
echo "Golang already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/golang
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
ARCH=$(arch)
# Install Golang
if [[ "$ARCH" == "aarch64" ]]; then
GOLANG_LATEST_STABLE_VERSION=$(curl https://go.dev/dl/?mode=json | grep -o 'go.*.linux-arm64.tar.gz' | head -n 1 | tr -d '\r\n')
wget https://dl.google.com/go/${GOLANG_LATEST_STABLE_VERSION} -O golang.tar.gz
else
GOLANG_LATEST_STABLE_VERSION=$(curl https://go.dev/dl/?mode=json | grep -o 'go.*.linux-amd64.tar.gz' | head -n 1 | tr -d '\r\n')
wget https://dl.google.com/go/${GOLANG_LATEST_STABLE_VERSION} -O golang.tar.gz
fi
tar -C /usr/local -xzf golang.tar.gz go
printf "\nPATH=\"/usr/local/go/bin:\$PATH\"\n" | tee -a /home/vagrant/.profile
rm -rf golang.tar.gz

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/grafana ]
then
echo "grafana already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/grafana
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
curl -fsSL https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/grafana.gpg
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
apt-get update -y
apt-get install -y grafana
systemctl enable grafana-server
systemctl daemon-reload
systemctl start grafana-server

View File

@ -0,0 +1,23 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/heroku ]
then
echo "Heroku CLI already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/heroku
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Heroku CLI
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh

View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/influxdb ]
then
echo "influxdb already installed."
exit 0
fi
# InfluxDB v2.7.5 - from https://www.influxdata.com/downloads/
# influxdata-archive_compat.key GPG fingerprint:
# 9D53 9D90 D332 8DC7 D6C8 D3B9 D8FF 8E1F 7DF8 B07E
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
apt-get update
apt-get install -y influxdb2
systemctl enable --now influxdb
influx setup \
--force \
--username "homestead" \
--password "secretkey" \
--org "homestead" \
--bucket "homestead" \
--name "homestead" \
--token "homestead_secret"
touch /home/$WSL_USER_NAME/.homestead-features/influxdb
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features

View File

@ -0,0 +1,53 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/logstash ]
then
echo "logstash already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/logstash
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Determine version from config
set -- "$1"
IFS=".";
if [ -z "${version}" ]; then
installVersion="" # by not specifying we'll install latest
majorVersion="7" # default to version 7
else
installVersion="=$version"
majorVersion="$(echo $version | head -c 1)"
fi
echo "Logstash installVersion: $installVersion"
echo "Logstash majorVersion: $majorVersion"
# Install Java & Logstash
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /etc/apt/keyrings/elasticsearch.gpg
if [ ! -f /etc/apt/sources.list.d/elastic-$majorVersion.x.list ]; then
echo "deb [signed-by=/etc/apt/keyrings/elasticsearch.gpg] https://artifacts.elastic.co/packages/$majorVersion.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-$majorVersion.x.list
fi
sudo apt-get update
sudo apt-get -y install openjdk-11-jre
sudo apt-get -y install logstash"$installVersion"
# Enable Start Elasticsearch
sudo systemctl enable --now logstash.service

View File

@ -0,0 +1,82 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/mariadb ]; then
echo "MariaDB already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/mariadb
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Disable Apparmor
# See https://github.com/laravel/homestead/issues/629#issue-247524528
service apparmor stop
update-rc.d -f apparmor remove
# Remove MySQL
apt-get -o Dpkg::Options::="--force-confnew" remove -y --purge mysql-server mysql-client
apt-get autoremove -y
apt-get autoclean
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysql
rm -rf /etc/mysql
# Determine version from config
set -- "$1"
IFS="."
# Add Maria PPA
if [ -z "${version}" ]; then
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
else
curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo bash mariadb_repo_setup --mariadb-server-version="$version"
echo "MariaDB specific target version : $version"
fi
debconf-set-selections <<< "mariadb-server mysql-server/data-dir select ''"
debconf-set-selections <<< "mariadb-server mysql-server/root_password password secret"
debconf-set-selections <<< "mariadb-server mysql-server/root_password_again password secret"
mkdir /etc/mysql
touch /etc/mysql/debian.cnf
# Install MariaDB
apt-get -o Dpkg::Options::="--force-confnew" install -y mariadb-server mariadb-client mysql-common
# Configure Maria Remote Access and ignore db dirs
sed -i "s/bind-address = 127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf
cat > /etc/mysql/mariadb.conf.d/50-server.cnf << EOF
[mysqld]
bind-address = 0.0.0.0
ignore-db-dir = lost+found
#general_log
#general_log_file=/var/log/mysql/mariadb.log
EOF
export MYSQL_PWD=secret
mariadb --user="root" --password="secret" -h localhost -e "GRANT ALL ON *.* TO root@'localhost' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
mariadb --user="root" --password="secret" -h localhost -e "GRANT ALL ON *.* TO root@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
service mariadb restart
mariadb --user="root" --password="secret" -h localhost -e "CREATE USER IF NOT EXISTS 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret';"
mariadb --user="root" --password="secret" -h localhost -e "GRANT ALL ON *.* TO 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
mariadb --user="root" --password="secret" -h localhost -e "GRANT ALL ON *.* TO 'homestead'@'%' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
mariadb --user="root" --password="secret" -h localhost -e "FLUSH PRIVILEGES;"
service mariadb restart
mariadb-upgrade --user="root" --verbose --force
service mariadb restart
unset MYSQL_PWD

View File

@ -0,0 +1,45 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/meilisearch ]
then
echo "meilisearch already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/meilisearch
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# add the sources for meilisearch
curl -L https://install.meilisearch.com | sh
mv ./meilisearch /usr/bin/
# Create a service file
cat > /etc/systemd/system/meilisearch.service << EOF
[Unit]
Description=MeiliSearch
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/bin/meilisearch --http-addr '0.0.0.0:7700'
[Install]
WantedBy=default.target
EOF
# Set the service meilisearch
systemctl daemon-reload
systemctl enable meilisearch
# Start the meilisearch service
systemctl start meilisearch

68
scripts/features/minio.sh Normal file
View File

@ -0,0 +1,68 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/minio ]
then
echo "minio already installed."
exit 0
fi
ARCH=$(arch)
touch /home/$WSL_USER_NAME/.homestead-features/minio
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
if [[ "$ARCH" == "aarch64" ]]; then
curl -sO https://dl.minio.io/server/minio/release/linux-arm64/minio
else
curl -sO https://dl.minio.io/server/minio/release/linux-amd64/minio
fi
sudo chmod +x minio
sudo mv minio /usr/local/bin
sudo useradd -r minio-user -s /sbin/nologin
sudo mkdir /usr/local/share/minio
sudo mkdir /etc/minio
cat <<EOT >> /etc/default/minio
# Local export path.
MINIO_VOLUMES="/usr/local/share/minio/"
# Use if you want to run Minio on a custom port.
MINIO_OPTS="--config-dir /etc/minio --address :9600 --console-address :9601"
MINIO_CONFIG_ENV_FILE=/etc/default/minio
MINIO_ROOT_USER=homestead
MINIO_ROOT_PASSWORD=secretkey
EOT
sudo chown minio-user:minio-user /usr/local/share/minio
sudo chown minio-user:minio-user /etc/minio
curl -sO https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
sudo mv minio.service /etc/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio
sudo ufw allow 9600
# Installing Minio Client
if [[ "$ARCH" == "aarch64" ]]; then
curl -sO https://dl.minio.io/client/mc/release/linux-arm64/mc
else
curl -sO https://dl.minio.io/client/mc/release/linux-amd64/mc
fi
chmod +x mc
sudo mv mc /usr/local/bin
mc config host add homestead http://127.0.1.1:9600 homestead secretkey

164
scripts/features/mongodb.sh Normal file
View File

@ -0,0 +1,164 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/mongodb ]
then
echo "MongoDB already installed."
exit 0
fi
ARCH=$(arch)
touch /home/$WSL_USER_NAME/.homestead-features/mongodb
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /etc/apt/keyrings/mongodb.gpg
if [[ "$ARCH" == "aarch64" ]]; then
echo "deb [signed-by=/etc/apt/keyrings/mongodb.gpg arch=arm64] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
else
echo "deb [signed-by=/etc/apt/keyrings/mongodb.gpg arch=amd64] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
fi
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confnew" install mongodb-org autoconf g++ make openssl libssl-dev libcurl4-openssl-dev pkg-config libsasl2-dev php-dev
sudo ufw allow 27017
sudo sed -i "s/bindIp: .*/bindIp: 0.0.0.0/" /etc/mongod.conf
sudo systemctl enable mongod
sudo systemctl start mongod
sudo rm -rf /tmp/mongo-php-driver /usr/src/mongo-php-driver
git clone -c advice.detachedHead=false -q -b '1.16.2' --single-branch https://github.com/mongodb/mongo-php-driver.git /tmp/mongo-php-driver
sudo mv /tmp/mongo-php-driver /usr/src/mongo-php-driver
cd /usr/src/mongo-php-driver
git submodule -q update --init
if [ -f /home/$WSL_USER_NAME/.homestead-features/php56 ]
then
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confold" install php5.6-dev
phpize5.6
./configure --with-php-config=/usr/bin/php-config5.6 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/5.6/mods-available/mongo.ini"
sudo ln -s /etc/php/5.6/mods-available/mongo.ini /etc/php/5.6/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/5.6/mods-available/mongo.ini /etc/php/5.6/fpm/conf.d/20-mongo.ini
sudo service php5.6-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php70 ]
then
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confold" install php7.0-dev
phpize7.0
./configure --with-php-config=/usr/bin/php-config7.0 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/7.0/mods-available/mongo.ini"
sudo ln -s /etc/php/7.0/mods-available/mongo.ini /etc/php/7.0/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/7.0/mods-available/mongo.ini /etc/php/7.0/fpm/conf.d/20-mongo.ini
sudo service php7.0-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php71 ]
then
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confold" install php7.1-dev
phpize7.1
./configure --with-php-config=/usr/bin/php-config7.1 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/7.1/mods-available/mongo.ini"
sudo ln -s /etc/php/7.1/mods-available/mongo.ini /etc/php/7.1/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/7.1/mods-available/mongo.ini /etc/php/7.1/fpm/conf.d/20-mongo.ini
sudo service php7.1-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php72 ]
then
phpize7.2
./configure --with-php-config=/usr/bin/php-config7.2 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/7.2/mods-available/mongo.ini"
sudo ln -s /etc/php/7.2/mods-available/mongo.ini /etc/php/7.2/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/7.2/mods-available/mongo.ini /etc/php/7.2/fpm/conf.d/20-mongo.ini
sudo service php7.2-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php73 ]
then
phpize7.3
./configure --with-php-config=/usr/bin/php-config7.3 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/7.3/mods-available/mongo.ini"
sudo ln -s /etc/php/7.3/mods-available/mongo.ini /etc/php/7.3/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/7.3/mods-available/mongo.ini /etc/php/7.3/fpm/conf.d/20-mongo.ini
sudo service php7.3-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php74 ]
then
phpize7.4
./configure --with-php-config=/usr/bin/php-config7.4 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/7.4/mods-available/mongo.ini"
sudo ln -s /etc/php/7.4/mods-available/mongo.ini /etc/php/7.4/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/7.4/mods-available/mongo.ini /etc/php/7.4/fpm/conf.d/20-mongo.ini
sudo service php7.4-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php80 ]
then
phpize8.0
./configure --with-php-config=/usr/bin/php-config8.0 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/8.0/mods-available/mongo.ini"
sudo ln -s /etc/php/8.0/mods-available/mongo.ini /etc/php/8.0/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/8.0/mods-available/mongo.ini /etc/php/8.0/fpm/conf.d/20-mongo.ini
sudo service php8.0-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php81 ]
then
phpize8.1
./configure --with-php-config=/usr/bin/php-config8.1 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/8.1/mods-available/mongo.ini"
sudo ln -s /etc/php/8.1/mods-available/mongo.ini /etc/php/8.1/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/8.1/mods-available/mongo.ini /etc/php/8.1/fpm/conf.d/20-mongo.ini
sudo service php8.1-fpm restart
fi
phpize8.2
./configure --with-php-config=/usr/bin/php-config8.2 > /dev/null
make clean > /dev/null
make >/dev/null 2>&1
sudo make install
sudo bash -c "echo 'extension=mongodb.so' > /etc/php/8.2/mods-available/mongo.ini"
sudo ln -s /etc/php/8.2/mods-available/mongo.ini /etc/php/8.2/cli/conf.d/20-mongo.ini
sudo ln -s /etc/php/8.2/mods-available/mongo.ini /etc/php/8.2/fpm/conf.d/20-mongo.ini
sudo service php8.2-fpm restart
mongosh admin --eval "db.createUser({user:'homestead',pwd:'secret',roles:['root']})"

53
scripts/features/neo4j.sh Normal file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/neo4j ]
then
echo "neo4j already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/neo4j
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add -
echo 'deb https://debian.neo4j.com stable latest' | sudo tee /etc/apt/sources.list.d/neo4j.list
apt-get update
# Install Neo4j Community Edition
apt-get install -y neo4j
# Stop Neo4j for configuration
systemctl stop neo4j
# Configure Neo4j Remote Access
sed -i "s/#dbms.connectors.default_listen_address=0.0.0.0/dbms.connectors.default_listen_address=0.0.0.0/" /etc/neo4j/neo4j.conf
# Enable Neo4j as system service
systemctl enable neo4j
systemctl start neo4j
# Poll Neo4j
end="$((SECONDS+60))"
while true; do
nc -w 2 localhost 7687 && break
[[ "${SECONDS}" -ge "${end}" ]] && exit 1
sleep 1
done
# Add new Neo4j user
cypher-shell -u neo4j -p neo4j "CALL dbms.changePassword('secret');"
cypher-shell -u neo4j -p secret "CALL dbms.security.createUser('homestead', 'secret', false);"
# Delete default Neo4j user
cypher-shell -u homestead -p secret "CALL dbms.security.deleteUser('neo4j');"

View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/oh-my-zsh ]
then
echo "oh-my-zsh already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/oh-my-zsh
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install oh-my-zsh
git clone https://github.com/ohmyzsh/ohmyzsh.git /home/vagrant/.oh-my-zsh
cp /home/vagrant/.oh-my-zsh/templates/zshrc.zsh-template /home/vagrant/.zshrc
# Set theme and plugins according to config
if [ -n "${theme}" ]; then
sed -i "s/^ZSH_THEME=.*/ZSH_THEME=\"${theme}\"/" /home/vagrant/.zshrc
fi
if [ -n "${plugins}" ]; then
sed -i "s/^plugins=.*/plugins=(${plugins})/" /home/vagrant/.zshrc
fi
printf "\nemulate sh -c 'source ~/.bash_aliases'\n" | tee -a /home/vagrant/.zprofile
printf "\nemulate sh -c 'source ~/.profile'\n" | tee -a /home/vagrant/.zprofile
chown -R vagrant:vagrant /home/vagrant/.oh-my-zsh
chown vagrant:vagrant /home/vagrant/.zshrc
chown vagrant:vagrant /home/vagrant/.zprofile
chsh -s /bin/zsh vagrant

View File

@ -0,0 +1,34 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/openresty ]
then
echo "openresty already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/openresty
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Openresty
curl -fsSL https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/openresty.gpg
echo "deb [signed-by=/etc/apt/keyrings/openresty.gpg] http://openresty.org/package/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/openresty.list
sudo apt-get update
sudo service nginx stop
sudo apt-get install -y openresty
sudo sed -i "s/listen\s*80;/listen\ 8888;/g" /etc/openresty/nginx.conf
# Start Openresty
sudo service openresty restart
sudo service nginx start

View File

@ -0,0 +1,74 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php5.6-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php5.6-fpm
service php5.6-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php56 ]
then
echo "PHP 5.6 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php56
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 5.6
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php5.6-bcmath php5.6-bz2 php5.6-cgi php5.6-cli php5.6-common php5.6-curl php5.6-dba php5.6-dev php5.6-enchant \
php5.6-fpm php5.6-gd php5.6-gmp php5.6-imap php5.6-interbase php5.6-intl php5.6-json php5.6-ldap php5.6-mbstring \
php5.6-mcrypt php5.6-mysql php5.6-odbc php5.6-opcache php5.6-pgsql php5.6-phpdbg php5.6-pspell php5.6-readline \
php5.6-recode php5.6-snmp php5.6-soap php5.6-sqlite3 php5.6-sybase php5.6-tidy php5.6-xml php5.6-xmlrpc php5.6-xsl \
php5.6-zip php5.6-memcached php5.6-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/5.6/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/5.6/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/5.6/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/5.6/cli/php.ini
# Configure Xdebug
echo "xdebug.remote_enable = 1" >> /etc/php/5.6/mods-available/xdebug.ini
echo "xdebug.remote_connect_back = 1" >> /etc/php/5.6/mods-available/xdebug.ini
echo "xdebug.remote_port = 9000" >> /etc/php/5.6/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/5.6/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/5.6/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/5.6/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/5.6/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/5.6/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/5.6/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/5.6/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/5.6/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/5.6/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/5.6/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/5.6/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/5.6/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/5.6/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/5.6/fpm/pool.d/www.conf
systemctl enable php5.6-fpm
service php5.6-fpm restart

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php7.0-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php7.0-fpm
service php7.0-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php70 ]
then
echo "PHP 7.0 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php70
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 7.0
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php7.0-bcmath php7.0-bz2 php7.0-cgi php7.0-cli php7.0-common php7.0-curl php7.0-dba php7.0-dev php7.0-enchant \
php7.0-fpm php7.0-gd php7.0-gmp php7.0-imap php7.0-interbase php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring \
php7.0-mcrypt php7.0-mysql php7.0-odbc php7.0-opcache php7.0-pgsql php7.0-phpdbg php7.0-pspell php7.0-readline \
php7.0-recode php7.0-snmp php7.0-soap php7.0-sqlite3 php7.0-sybase php7.0-tidy php7.0-xml php7.0-xmlrpc php7.0-xsl \
php7.0-zip php7.0-memcached php7.0-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/cli/php.ini
# Configure Xdebug
echo "xdebug.remote_enable = 1" >> /etc/php/7.0/mods-available/xdebug.ini
echo "xdebug.remote_connect_back = 1" >> /etc/php/7.0/mods-available/xdebug.ini
echo "xdebug.remote_port = 9000" >> /etc/php/7.0/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.0/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/7.0/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.0/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.0/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/7.0/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.0/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/7.0/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.0/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.0/fpm/pool.d/www.conf
systemctl enable php7.0-fpm
service php7.0-fpm restart

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php7.1-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php7.1-fpm
service php7.1-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php71 ]
then
echo "PHP 7.1 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php71
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 7.1
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php7.1-bcmath php7.1-bz2 php7.1-cgi php7.1-cli php7.1-common php7.1-curl php7.1-dba php7.1-dev php7.1-enchant \
php7.1-fpm php7.1-gd php7.1-gmp php7.1-imap php7.1-interbase php7.1-intl php7.1-json php7.1-ldap php7.1-mbstring \
php7.1-mcrypt php7.1-mysql php7.1-odbc php7.1-opcache php7.1-pgsql php7.1-phpdbg php7.1-pspell php7.1-readline \
php7.1-recode php7.1-snmp php7.1-soap php7.1-sqlite3 php7.1-sybase php7.1-tidy php7.1-xdebug php7.1-xml php7.1-xmlrpc \
php7.1-xsl php7.1-zip php7.1-memcached php7.1-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.1/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.1/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.1/cli/php.ini
# Configure Xdebug
echo "xdebug.remote_enable = 1" >> /etc/php/7.1/mods-available/xdebug.ini
echo "xdebug.remote_connect_back = 1" >> /etc/php/7.1/mods-available/xdebug.ini
echo "xdebug.remote_port = 9000" >> /etc/php/7.1/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.1/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/7.1/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.1/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.1/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.1/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.1/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.1/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.1/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/7.1/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.1/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/7.1/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.1/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.1/fpm/pool.d/www.conf
systemctl enable php7.1-fpm
service php7.1-fpm restart

View File

@ -0,0 +1,74 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php7.2-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php7.2-fpm
service php7.2-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php72 ]
then
echo "PHP 7.2 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php72
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 7.2
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php7.2-bcmath php7.2-bz2 php7.2-dba php7.2-enchant php7.2-fpm php7.2-imap php7.2-interbase php7.2-intl \
php7.2-mbstring php7.2-phpdbg php7.2-soap php7.2-sybase php7.2-xsl php7.2-zip php7.2-cgi php7.2-cli php7.2-common \
php7.2-curl php7.2-dev php7.2-gd php7.2-gmp php7.2-json php7.2-ldap php7.2-mysql php7.2-odbc php7.2-opcache \
php7.2-pgsql php7.2-pspell php7.2-readline php7.2-recode php7.2-snmp php7.2-sqlite3 php7.2-tidy php7.2-xdebug \
php7.2-xml php7.2-xmlrpc php7.2-memcached php7.2-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.2/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.2/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.2/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/cli/php.ini
# Configure Xdebug
echo "xdebug.mode = debug" >> /etc/php/7.2/mods-available/xdebug.ini
echo "xdebug.discover_client_host = true" >> /etc/php/7.2/mods-available/xdebug.ini
echo "xdebug.client_port = 9003" >> /etc/php/7.2/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.2/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/7.2/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.2/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.2/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.2/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.2/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.2/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.2/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/7.2/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.2/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/7.2/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.2/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.2/fpm/pool.d/www.conf
systemctl enable php7.2-fpm
service php7.2-fpm restart

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php7.3-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php7.3-fpm
service php7.3-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php73 ]
then
echo "PHP 7.3 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php73
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 7.3
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php7.3 php7.3-bcmath php7.3-bz2 php7.3-cgi php7.3-cli php7.3-common php7.3-curl php7.3-dba php7.3-dev php7.3-enchant \
php7.3-fpm php7.3-gd php7.3-gmp php7.3-imap php7.3-interbase php7.3-intl php7.3-json php7.3-ldap php7.3-mbstring \
php7.3-mysql php7.3-odbc php7.3-opcache php7.3-pgsql php7.3-phpdbg php7.3-pspell php7.3-readline php7.3-recode \
php7.3-snmp php7.3-soap php7.3-sqlite3 php7.3-sybase php7.3-tidy php7.3-xdebug php7.3-xml php7.3-xmlrpc php7.3-xsl \
php7.3-zip php7.3-memcached php7.3-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.3/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.3/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.3/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.3/cli/php.ini
# Configure Xdebug
echo "xdebug.mode = debug" >> /etc/php/7.3/mods-available/xdebug.ini
echo "xdebug.discover_client_host = true" >> /etc/php/7.3/mods-available/xdebug.ini
echo "xdebug.client_port = 9003" >> /etc/php/7.3/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.3/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/7.3/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.3/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.3/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.3/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.3/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.3/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.3/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.3/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/7.3/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.3/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/7.3/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.3/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.3/fpm/pool.d/www.conf
systemctl enable php7.3-fpm
service php7.3-fpm restart

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php7.4-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php7.4-fpm
service php7.4-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php74 ]
then
echo "PHP 7.4 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php74
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 7.4
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php7.4 php7.4-bcmath php7.4-bz2 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-dba php7.4-dev \
php7.4-enchant php7.4-fpm php7.4-gd php7.4-gmp php7.4-imap php7.4-interbase php7.4-intl php7.4-json php7.4-ldap \
php7.4-mbstring php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-readline \
php7.4-snmp php7.4-soap php7.4-sqlite3 php7.4-sybase php7.4-tidy php7.4-xdebug php7.4-xml php7.4-xmlrpc php7.4-xsl \
php7.4-zip php7.4-memcached php7.4-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.4/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.4/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.4/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.4/cli/php.ini
# Configure Xdebug
echo "xdebug.mode = debug" >> /etc/php/7.4/mods-available/xdebug.ini
echo "xdebug.discover_client_host = true" >> /etc/php/7.4/mods-available/xdebug.ini
echo "xdebug.client_port = 9003" >> /etc/php/7.4/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.4/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/7.4/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.4/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.4/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.4/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.4/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.4/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.4/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.4/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/7.4/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.4/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/7.4/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.4/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.4/fpm/pool.d/www.conf
systemctl enable php7.4-fpm
service php7.4-fpm restart

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php8.0-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php8.0-fpm
service php8.0-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php80 ]
then
echo "PHP 8.0 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php80
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 8.0
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php8.0 php8.0-bcmath php8.0-bz2 php8.0-cgi php8.0-cli php8.0-common php8.0-curl php8.0-dba php8.0-dev \
php8.0-enchant php8.0-fpm php8.0-gd php8.0-gmp php8.0-imap php8.0-interbase php8.0-intl php8.0-ldap \
php8.0-mbstring php8.0-mysql php8.0-odbc php8.0-opcache php8.0-pgsql php8.0-phpdbg php8.0-pspell php8.0-readline \
php8.0-snmp php8.0-soap php8.0-sqlite3 php8.0-sybase php8.0-tidy php8.0-xdebug php8.0-xml php8.0-xmlrpc php8.0-xsl \
php8.0-zip php8.0-memcached php8.0-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.0/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.0/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.0/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.0/cli/php.ini
# Configure Xdebug
echo "xdebug.mode = debug" >> /etc/php/8.0/mods-available/xdebug.ini
echo "xdebug.discover_client_host = true" >> /etc/php/8.0/mods-available/xdebug.ini
echo "xdebug.client_port = 9003" >> /etc/php/8.0/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/8.0/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/8.0/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.0/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.0/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.0/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.0/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/8.0/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/8.0/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.0/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/8.0/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.0/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/8.0/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.0/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/8.0/fpm/pool.d/www.conf
systemctl enable php8.0-fpm
service php8.0-fpm restart

View File

@ -0,0 +1,75 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php8.1-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php8.1-fpm
service php8.1-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php81 ]
then
echo "PHP 8.1 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php81
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 8.1
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php8.1 php8.1-bcmath php8.1-bz2 php8.1-cgi php8.1-cli php8.1-common php8.1-curl php8.1-dba php8.1-dev \
php8.1-enchant php8.1-fpm php8.1-gd php8.1-gmp php8.1-imap php8.1-interbase php8.1-intl php8.1-ldap \
php8.1-mbstring php8.1-mysql php8.1-odbc php8.1-opcache php8.1-pgsql php8.1-phpdbg php8.1-pspell php8.1-readline \
php8.1-snmp php8.1-soap php8.1-sqlite3 php8.1-sybase php8.1-tidy php8.1-xml php8.1-xsl \
php8.1-zip
# php8.1-xdebug php8.1-xmlrpc php8.1-memcached php8.1-redis
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.1/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.1/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.1/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.1/cli/php.ini
# Configure Xdebug
# echo "xdebug.mode = debug" >> /etc/php/8.1/mods-available/xdebug.ini
# echo "xdebug.discover_client_host = true" >> /etc/php/8.1/mods-available/xdebug.ini
# echo "xdebug.client_port = 9003" >> /etc/php/8.1/mods-available/xdebug.ini
# echo "xdebug.max_nesting_level = 512" >> /etc/php/8.1/mods-available/xdebug.ini
# echo "opcache.revalidate_freq = 0" >> /etc/php/8.1/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.1/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.1/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.1/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.1/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/8.1/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/8.1/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.1/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/8.1/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.1/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/8.1/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.1/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/8.1/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/8.1/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/8.1/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/8.1/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/8.1/fpm/pool.d/www.conf
systemctl enable php8.1-fpm
service php8.1-fpm restart

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php8.2-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php8.2-fpm
service php8.2-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php82 ]
then
echo "PHP 8.2 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php82
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 8.2
apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --allow-change-held-packages \
php8.2 php8.2-bcmath php8.2-bz2 php8.2-cgi php8.2-cli php8.2-common php8.2-curl php8.2-dba php8.2-dev \
php8.2-enchant php8.2-fpm php8.2-gd php8.2-gmp php8.2-imap php8.2-interbase php8.2-intl php8.2-ldap \
php8.2-mbstring php8.2-mysql php8.2-odbc php8.2-opcache php8.2-pgsql php8.2-phpdbg php8.2-pspell php8.2-readline \
php8.2-snmp php8.2-soap php8.2-sqlite3 php8.2-sybase php8.2-tidy php8.2-xml php8.2-xsl \
php8.2-zip php8.2-imagick php8.2-memcached php8.2-redis php8.2-xmlrpc php8.2-xdebug
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.2/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.2/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.2/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.2/cli/php.ini
# Configure Xdebug
echo "xdebug.mode = debug" >> /etc/php/8.2/mods-available/xdebug.ini
echo "xdebug.discover_client_host = true" >> /etc/php/8.2/mods-available/xdebug.ini
echo "xdebug.client_port = 9003" >> /etc/php/8.2/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/8.2/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/8.2/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.2/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.2/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.2/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.2/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/8.2/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/8.2/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.2/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/8.2/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.2/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/8.2/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.2/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/8.2/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/8.2/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/8.2/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/8.2/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/8.2/fpm/pool.d/www.conf
systemctl enable php8.2-fpm
service php8.2-fpm restart

View File

@ -0,0 +1,70 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
SERVICE_STATUS=$(systemctl is-enabled php8.3-fpm.service)
if [ "$SERVICE_STATUS" == "disabled" ];
then
systemctl enable php8.3-fpm
service php8.3-fpm restart
fi
if [ -f /home/$WSL_USER_NAME/.homestead-features/php83 ]
then
echo "PHP 8.3 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/php83
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# PHP 8.3
apt-get install -y --allow-change-held-packages \
php8.3 php8.3-bcmath php8.3-bz2 php8.3-cgi php8.3-cli php8.3-common php8.3-curl php8.3-dba php8.3-dev \
php8.3-enchant php8.3-fpm php8.3-gd php8.3-gmp php8.3-imap php8.3-interbase php8.3-intl php8.3-ldap \
php8.3-mbstring php8.3-mysql php8.3-odbc php8.3-opcache php8.3-pgsql php8.3-phpdbg php8.3-pspell php8.3-readline \
php8.3-snmp php8.3-soap php8.3-sqlite3 php8.3-sybase php8.3-tidy php8.3-xml php8.3-xsl \
php8.3-zip php8.3-imagick php8.3-memcached php8.3-redis php8.3-xmlrpc php8.3-xdebug
# Configure php.ini for CLI
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.3/cli/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.3/cli/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.3/cli/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.3/cli/php.ini
# Configure Xdebug
echo "xdebug.mode = debug" >> /etc/php/8.3/mods-available/xdebug.ini
echo "xdebug.discover_client_host = true" >> /etc/php/8.3/mods-available/xdebug.ini
echo "xdebug.client_port = 9003" >> /etc/php/8.3/mods-available/xdebug.ini
echo "xdebug.max_nesting_level = 512" >> /etc/php/8.3/mods-available/xdebug.ini
echo "opcache.revalidate_freq = 0" >> /etc/php/8.3/mods-available/opcache.ini
# Configure php.ini for FPM
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.3/fpm/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.3/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.3/fpm/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.3/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/8.3/fpm/php.ini
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/8.3/fpm/php.ini
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.3/fpm/php.ini
printf "[openssl]\n" | tee -a /etc/php/8.3/fpm/php.ini
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.3/fpm/php.ini
printf "[curl]\n" | tee -a /etc/php/8.3/fpm/php.ini
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.3/fpm/php.ini
# Configure FPM
sed -i "s/user = www-data/user = vagrant/" /etc/php/8.3/fpm/pool.d/www.conf
sed -i "s/group = www-data/group = vagrant/" /etc/php/8.3/fpm/pool.d/www.conf
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/8.3/fpm/pool.d/www.conf
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/8.3/fpm/pool.d/www.conf
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/8.3/fpm/pool.d/www.conf

23
scripts/features/pm2.sh Normal file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/pm2 ]
then
echo "pm2 already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/pm2
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install pm2
npm install -g pm2

View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/pythontools ]
then
echo "pythontools already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/pythontools
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Python
apt-get update
apt-get install -y python3-pip build-essential libssl-dev libffi-dev python3-dev python3-venv
sudo -H -u vagrant bash -c 'pip3 install django'
sudo -H -u vagrant bash -c 'pip3 install numpy'
sudo -H -u vagrant bash -c 'pip3 install masonite'

View File

@ -0,0 +1,26 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/r-base ]
then
echo "r-base already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/r-base
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo gpg --dearmor -o /etc/apt/keyrings/r-project.gpg
echo "deb [signed-by=/etc/apt/keyrings/r-project.gpg] https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/" | sudo tee /etc/apt/sources.list.d/r-project.list
apt-get update
apt install -y r-base

View File

@ -0,0 +1,59 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/rabbitmq ]
then
echo "rabbitmq already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/rabbitmq
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
sudo apt-get install curl gnupg debian-keyring debian-archive-keyring apt-transport-https -y
# Import signing keys
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor -o /etc/apt/keyrings/com.rabbitmq.team.gpg
curl -1sLf "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf77f1eda57ebb1cc" | sudo gpg --dearmor -o /etc/apt/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg
curl -1sLf "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo gpg --dearmor -o /etc/apt/keyrings/io.packagecloud.rabbitmq.gpg
## Add apt repositories maintained by Team RabbitMQ
tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
deb [signed-by=/etc/apt/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu jammy main
deb-src [signed-by=/etc/apt/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu jammy main
deb [signed-by=/etc/apt/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ jammy main
deb-src [signed-by=/etc/apt/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ jammy main
EOF
## Update package indices
apt-get update
## Install Erlang packages
apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
apt-get install rabbitmq-server php-amqp php-bcmath -y --fix-missing
# Enable RabbitMQ HTTP Admin Interface
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user homestead secret
rabbitmqctl set_user_tags homestead administrator
rabbitmqctl set_permissions -p / homestead ".*" ".*" ".*"
rabbitmqctl set_topic_permissions -p / homestead ".*" ".*" ".*"
# Install rabbitmqadmin CLI tool - https://www.rabbitmq.com/management-cli.html
wget -q http://localhost:15672/cli/rabbitmqadmin -O /usr/local/bin/rabbitmqadmin
chmod +x /usr/local/bin/rabbitmqadmin

22
scripts/features/rustc.sh Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/rustc ]; then
echo "Rust already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/rustc
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Run the Rust installation script as the user
sudo -u $WSL_USER_NAME curl -LsS https://sh.rustup.rs | sudo -u $WSL_USER_NAME sh -s -- -y

27
scripts/features/rvm.sh Normal file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/rvm ]
then
echo "rvm already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/rvm
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install RVM as vagrant user
sudo -u $WSL_USER_NAME gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
sudo -u $WSL_USER_NAME curl -LsS https://get.rvm.io | sudo -u $WSL_USER_NAME bash -s stable --ruby --gems=bundler --auto-dotfiles
# To start using RVM we need to run
source /home/vagrant/.rvm/scripts/rvm

34
scripts/features/solr.sh Normal file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/solr ]
then
echo "Solr already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/solr
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
# Install Java Runtime Enviroment
sudo apt update
sudo apt install default-jre php-solr -y
# Install Solr 7.7.1
wget -q http://archive.apache.org/dist/lucene/solr/7.7.1/solr-7.7.1.tgz
tar xzf solr-7.7.1.tgz solr-7.7.1/bin/install_solr_service.sh --strip-components=2
sudo bash ./install_solr_service.sh solr-7.7.1.tgz
rm solr-7.7.1.tgz install_solr_service.sh
# Install Homestead Core
sudo su -c "/opt/solr/bin/solr create -c homestead" solr

View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/timescale ]
then
echo "TimescaleDB already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/timescale
curl -fsSL https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /etc/apt/keyrings/timescaledb.gpg
echo 'deb [signed-by=/etc/apt/keyrings/timescaledb.gpg] https://packagecloud.io/timescale/timescaledb/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/timescaledb.list
sudo apt-get update
sudo apt-get -y install timescaledb-2-postgresql-15
sudo timescaledb-tune --quiet --yes
printf "\ntimescaledb.telemetry_level=off\n" | sudo tee -a /etc/postgresql/15/main/postgresql.conf
sudo service postgresql restart
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features

View File

@ -0,0 +1,88 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/trader ]
then
echo "Trader PHP extension already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/trader
# Update PECL Channel
sudo pecl channel-update pecl.php.net
# Install Trader Extension
sudo pecl install trader
sudo cp /usr/lib/php/20210902/trader.so /usr/lib/php/20131226/trader.so
sudo cp /usr/lib/php/20210902/trader.so /usr/lib/php/20151012/trader.so
sudo cp /usr/lib/php/20210902/trader.so /usr/lib/php/20160303/trader.so
sudo cp /usr/lib/php/20210902/trader.so /usr/lib/php/20170718/trader.so
sudo cp /usr/lib/php/20210902/trader.so /usr/lib/php/20180731/trader.so
sudo cp /usr/lib/php/20210902/trader.so /usr/lib/php/20200930/trader.so
sudo touch /etc/php/8.1/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/8.1/mods-available/trader.ini'
sudo ln -s /etc/php/8.1/mods-available/trader.ini /etc/php/8.1/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/8.1/mods-available/trader.ini /etc/php/8.1/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/8.1/mods-available/trader.ini /etc/php/8.1/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/8.1/mods-available/trader.ini /etc/php/8.1/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/8.0/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/8.0/mods-available/trader.ini'
sudo ln -s /etc/php/8.0/mods-available/trader.ini /etc/php/8.0/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/8.0/mods-available/trader.ini /etc/php/8.0/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/8.0/mods-available/trader.ini /etc/php/8.0/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/8.0/mods-available/trader.ini /etc/php/8.0/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/7.4/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/7.4/mods-available/trader.ini'
sudo ln -s /etc/php/7.4/mods-available/trader.ini /etc/php/7.4/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/7.4/mods-available/trader.ini /etc/php/7.4/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/7.4/mods-available/trader.ini /etc/php/7.4/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/7.4/mods-available/trader.ini /etc/php/7.4/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/7.3/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/7.3/mods-available/trader.ini'
sudo ln -s /etc/php/7.3/mods-available/trader.ini /etc/php/7.3/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/7.3/mods-available/trader.ini /etc/php/7.3/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/7.3/mods-available/trader.ini /etc/php/7.3/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/7.3/mods-available/trader.ini /etc/php/7.3/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/7.2/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/7.2/mods-available/trader.ini'
sudo ln -s /etc/php/7.2/mods-available/trader.ini /etc/php/7.2/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/7.2/mods-available/trader.ini /etc/php/7.2/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/7.2/mods-available/trader.ini /etc/php/7.2/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/7.2/mods-available/trader.ini /etc/php/7.2/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/7.1/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/7.1/mods-available/trader.ini'
sudo ln -s /etc/php/7.1/mods-available/trader.ini /etc/php/7.1/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/7.1/mods-available/trader.ini /etc/php/7.1/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/7.1/mods-available/trader.ini /etc/php/7.1/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/7.1/mods-available/trader.ini /etc/php/7.1/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/7.0/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/7.0/mods-available/trader.ini'
sudo ln -s /etc/php/7.0/mods-available/trader.ini /etc/php/7.0/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/7.0/mods-available/trader.ini /etc/php/7.0/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/7.0/mods-available/trader.ini /etc/php/7.0/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/7.0/mods-available/trader.ini /etc/php/7.0/phpdbg/conf.d/20-trader.ini
sudo touch /etc/php/5.6/mods-available/trader.ini
sudo bash -c 'echo "extension=trader.so" >> /etc/php/5.6/mods-available/trader.ini'
sudo ln -s /etc/php/5.6/mods-available/trader.ini /etc/php/5.6/fpm/conf.d/20-trader.ini
sudo ln -s /etc/php/5.6/mods-available/trader.ini /etc/php/5.6/cgi/conf.d/20-trader.ini
sudo ln -s /etc/php/5.6/mods-available/trader.ini /etc/php/5.6/cli/conf.d/20-trader.ini
sudo ln -s /etc/php/5.6/mods-available/trader.ini /etc/php/5.6/phpdbg/conf.d/20-trader.ini

View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
if [ -f ~/.homestead-features/wsl_user_name ]; then
WSL_USER_NAME="$(cat ~/.homestead-features/wsl_user_name)"
WSL_USER_GROUP="$(cat ~/.homestead-features/wsl_user_group)"
else
WSL_USER_NAME=vagrant
WSL_USER_GROUP=vagrant
fi
export DEBIAN_FRONTEND=noninteractive
if [ -f /home/$WSL_USER_NAME/.homestead-features/webdriverutils ]
then
echo "Web Driver utilities already installed."
exit 0
fi
touch /home/$WSL_USER_NAME/.homestead-features/webdriverutils
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
ARCH=$(arch)
# Install The Chrome Web Driver & Dusk Utilities
if [[ "$ARCH" != "aarch64" ]]; then
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/chrome.deb
apt-get install -y /tmp/chrome.deb
rm -f /tmp/chrome.deb
fi
apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 chromium-browser xvfb gtk2-engines-pixbuf \
xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable imagemagick x11-apps

16
scripts/flip-webserver.sh Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
ps auxw | grep apache2 | grep -v grep > /dev/null
if [ $? != 0 ]
then
service nginx stop > /dev/null
echo 'nginx stopped'
service apache2 start > /dev/null
echo 'apache started'
else
service apache2 stop > /dev/null
echo 'apache stopped'
service nginx start > /dev/null
echo 'nginx started'
fi

779
scripts/homestead.rb Normal file
View File

@ -0,0 +1,779 @@
# Main Homestead Class
class Homestead
def self.configure(config, settings)
# Set The VM Provider
ENV['VAGRANT_DEFAULT_PROVIDER'] = settings['provider'] ||= 'virtualbox'
# Configure Local Variable To Access Scripts From Remote Location
script_dir = File.dirname(__FILE__)
# Allow SSH Agent Forward from The Box
config.ssh.forward_agent = true
# Configure Verify Host Key
if settings.has_key?('verify_host_key')
config.ssh.verify_host_key = settings['verify_host_key']
end
# Configure The Box
config.vm.define settings['name'] ||= 'homestead'
config.vm.box = settings['box'] ||= 'laravel/homestead'
unless settings.has_key?('SpeakFriendAndEnter')
config.vm.box_version = settings['version'] ||= '>= 14.0.2, < 15.0.0'
end
config.vm.hostname = settings['hostname'] ||= 'homestead'
# Configure A Private Network IP
if settings['ip'] != 'autonetwork'
config.vm.network :private_network, ip: settings['ip'] ||= '192.168.56.56'
else
config.vm.network :private_network, ip: '0.0.0.0', auto_network: true
end
# Configure Additional Networks
if settings.has_key?('networks')
settings['networks'].each do |network|
config.vm.network network['type'], ip: network['ip'], mac: network['mac'], bridge: network['bridge'] ||= nil, dev: network['dev'] ||= nil, netmask: network['netmask'] ||= '255.255.255.0'
end
end
# Configure A Few VirtualBox Settings
config.vm.provider 'virtualbox' do |vb|
vb.name = settings['name'] ||= 'homestead'
vb.customize ['modifyvm', :id, '--memory', settings['memory'] ||= '2048']
vb.customize ['modifyvm', :id, '--cpus', settings['cpus'] ||= '1']
vb.customize ['modifyvm', :id, '--natdnsproxy1', 'on']
vb.customize ['modifyvm', :id, '--natdnshostresolver1', settings['natdnshostresolver'] ||= 'on']
vb.customize ['modifyvm', :id, '--ostype', 'Ubuntu_64']
if settings.has_key?('gui') && settings['gui']
vb.gui = true
end
# --paravirtprovider none|default|legacy|minimal|hyperv|kvm
# Specifies which paravirtualization interface to provide to
# the guest operating system.
if settings.has_key?('paravirtprovider') && settings['paravirtprovider']
vb.customize ['modifyvm', :id, '--paravirtprovider', settings['paravirtprovider'] ||= 'kvm']
end
if Vagrant::Util::Platform.windows?
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
end
# Override Default SSH port on the host
if settings.has_key?('default_ssh_port')
config.vm.network :forwarded_port, guest: 22, host: settings['default_ssh_port'], auto_correct: false, id: "ssh"
end
# Configure A Few VMware Settings
['vmware_fusion', 'vmware_workstation', 'vmware_desktop'].each do |vmware|
config.vm.provider vmware do |v|
v.vmx['displayName'] = settings['name'] ||= 'homestead'
v.vmx['memsize'] = settings['memory'] ||= 2048
v.vmx['numvcpus'] = settings['cpus'] ||= 1
v.vmx['guestOS'] = 'ubuntu-64'
if settings.has_key?('gui') && settings['gui']
v.gui = true
end
end
end
# Configure A Few Hyper-V Settings
config.vm.provider "hyperv" do |h, override|
h.vmname = settings['name'] ||= 'homestead'
h.cpus = settings['cpus'] ||= 1
h.memory = settings['memory'] ||= 2048
h.linked_clone = true
if settings.has_key?('hyperv_mac') && settings['hyperv_mac']
h.mac = settings['hyperv_mac']
end
if settings.has_key?('hyperv_maxmemory') && settings['hyperv_maxmemory']
h.maxmemory = settings['hyperv_maxmemory']
end
if settings.has_key?('hyperv_enable_virtualization_extensions') && settings['hyperv_enable_virtualization_extensions']
h.enable_virtualization_extensions = true
end
if Vagrant.has_plugin?('vagrant-hostmanager')
override.hostmanager.ignore_private_ip = true
end
end
# Configure A Few Parallels Settings
config.vm.provider 'parallels' do |v|
v.name = settings['name'] ||= 'homestead'
v.update_guest_tools = settings['update_parallels_tools'] ||= false
v.memory = settings['memory'] ||= 2048
v.cpus = settings['cpus'] ||= 1
end
# Configure libvirt settings
config.vm.provider "libvirt" do |libvirt|
libvirt.default_prefix = ''
libvirt.memory = settings["memory"] ||= "2048"
libvirt.cpus = settings["cpus"] ||= "1"
libvirt.nested = "true"
libvirt.disk_bus = "virtio"
libvirt.machine_type = "q35"
libvirt.disk_driver :cache => "none"
libvirt.memorybacking :access, :mode => 'shared'
libvirt.nic_model_type = "virtio"
libvirt.driver = "kvm"
libvirt.qemu_use_session = false
end
# Standardize Ports Naming Schema
if settings.has_key?('ports')
settings['ports'].each do |port|
port['guest'] ||= port['to']
port['host'] ||= port['send']
port['protocol'] ||= 'tcp'
end
else
settings['ports'] = []
end
# Default Port Forwarding
default_ports = {
80 => 8000,
443 => 44300,
}
# Use Default Port Forwarding Unless Overridden
unless settings.has_key?('default_ports') && settings['default_ports'] == false
default_ports.each do |guest, host|
unless settings['ports'].any? { |mapping| mapping['guest'] == guest }
config.vm.network 'forwarded_port', guest: guest, host: host, auto_correct: true
end
end
end
# Add Custom Ports From Configuration
if settings.has_key?('ports')
settings['ports'].each do |port|
config.vm.network 'forwarded_port', guest: port['guest'], host: port['host'], protocol: port['protocol'], auto_correct: true
end
end
# Configure The Public Key For SSH Access
if settings.include? 'authorize'
if File.exist? File.expand_path(settings['authorize'])
config.vm.provision "setting authorize key", type: "shell" do |s|
s.inline = "echo $1 | grep -xq \"$1\" /home/vagrant/.ssh/authorized_keys || echo \"\n$1\" | tee -a /home/vagrant/.ssh/authorized_keys"
s.args = [File.read(File.expand_path(settings['authorize']))]
end
end
end
# Copy The SSH Private Keys To The Box
if settings.include? 'keys'
if settings['keys'].to_s.length.zero?
puts 'Check your Homestead.yaml file, you have no private key(s) specified.'
exit
end
settings['keys'].each do |key|
if File.exist? File.expand_path(key)
config.vm.provision "setting authorize permissions for #{key.split('/').last}", type: "shell" do |s|
s.privileged = false
s.inline = "echo \"$1\" > /home/vagrant/.ssh/\"$2\" && chmod 600 /home/vagrant/.ssh/\"$2\""
# s.inline = "echo \"$1\" > /home/vagrant/.ssh/$2 && chmod 600 /home/vagrant/.ssh/$2"
s.args = [File.read(File.expand_path(key)), key.split('/').last]
end
else
puts 'Check your Homestead.yaml (or Homestead.json) file, the path to your private key does not exist.'
exit
end
end
end
# Copy User Files Over to VM
if settings.include? 'copy'
settings['copy'].each do |file|
config.vm.provision 'file' do |f|
f.source = File.expand_path(file['from'])
f.destination = file['to'].chomp('/') + '/' + file['from'].split('/').last
end
end
end
# Register All Of The Configured Shared Folders
if settings.include? 'folders'
settings['folders'].each do |folder|
if File.exist? File.expand_path(folder['map'])
mount_opts = []
if ENV['VAGRANT_DEFAULT_PROVIDER'] == 'hyperv'
folder['type'] = 'smb'
end
if ENV['VAGRANT_DEFAULT_PROVIDER'] == 'libvirt'
folder['type'] ||= 'virtiofs'
end
if folder['type'] == 'nfs'
mount_opts = folder['mount_options'] ? folder['mount_options'] : ['actimeo=1', 'nolock']
# Ubuntu 22.04 does not support NFS UDP, so we need to ensure it is disabled
nfs_options = {nfs_udp: false}
elsif folder['type'] == 'smb'
mount_opts = folder['mount_options'] ? folder['mount_options'] : ['vers=3.02', 'mfsymlinks']
smb_creds = {smb_host: folder['smb_host'], smb_username: folder['smb_username'], smb_password: folder['smb_password']}
end
# For b/w compatibility keep separate 'mount_opts', but merge with options
options = (folder['options'] || {})
.merge({ mount_options: mount_opts })
.merge(smb_creds || {})
.merge(nfs_options || {})
# Double-splat (**) operator only works with symbol keys, so convert
options.keys.each{|k| options[k.to_sym] = options.delete(k) }
config.vm.synced_folder folder['map'], folder['to'], type: folder['type'] ||= nil, **options
# Bindfs support to fix shared folder (NFS) permission issue on Mac
if folder['type'] == 'nfs' && Vagrant.has_plugin?('vagrant-bindfs')
config.bindfs.bind_folder folder['to'], folder['to']
end
else
config.vm.provision 'shell' do |s|
s.inline = ">&2 echo \"Unable to mount one of your folders. Please check your folders in Homestead.yaml\""
end
end
end
end
# use virtiofs for /vagrant mount when using libvirt provider
if ENV['VAGRANT_DEFAULT_PROVIDER'] == 'libvirt'
config.vm.synced_folder "./", "/vagrant", type: "virtiofs"
end
# Change PHP CLI version based on configuration
if settings.has_key?('php') && settings['php']
config.vm.provision "Changing PHP CLI Version", type: "shell" do |s|
s.name = 'Changing PHP CLI Version'
s.inline = "sudo update-alternatives --set php /usr/bin/php#{settings['php']}; sudo update-alternatives --set php-config /usr/bin/php-config#{settings['php']}; sudo update-alternatives --set phpize /usr/bin/phpize#{settings['php']}"
end
end
# Creates folder for opt-in features lockfiles
config.vm.provision "mk_features", type: "shell", inline: "mkdir -p /home/vagrant/.homestead-features"
config.vm.provision "own_features", type: "shell", inline: "chown -Rf vagrant:vagrant /home/vagrant/.homestead-features"
# Install opt-in features
if settings.has_key?('features')
if settings.has_key?('in-flight-service')
config.vm.provision 'shell' do |s|
s.name = 'Running our in-flight-service.'
s.path = script_dir + '/in-flight-service.sh'
end
end
config.vm.provision "apt_update", type: "shell", inline: "apt-get update"
# Ensure we have PHP versions used in sites in our features
if settings.has_key?('sites')
settings['sites'].each do |site|
if site.has_key?('php')
settings['features'].push({"php" + site['php'] => true})
end
end
end
# Remove duplicate features to prevent trying to install it multiple times
settings['features'] = settings['features'].uniq{ |e| e.keys[0] }
settings['features'].each do |feature|
feature_name = feature.keys[0]
feature_variables = feature[feature_name]
feature_path = script_dir + "/features/" + feature_name + ".sh"
# Check for boolean parameters
# Compares against true/false to show that it really means "<feature>: <boolean>"
if feature_variables == false
config.vm.provision "shell", inline: "echo Ignoring feature: #{feature_name} because it is set to false \n"
next
elsif feature_variables == true
# If feature_arguments is true, set it to empty, so it could be passed to script without problem
feature_variables = {}
end
# Check if feature really exists
if !File.exist? File.expand_path(feature_path)
config.vm.provision "shell", inline: "echo Invalid feature: #{feature_name} \n"
next
end
config.vm.provision "shell" do |s|
s.name = "Installing " + feature_name
s.path = feature_path
s.env = feature_variables
end
end
end
# Enable Services
if settings.has_key?('services')
settings['services'].each do |service|
service['enabled'].each do |enable_service|
config.vm.provision "enable #{enable_service}", type: "shell", inline: "sudo systemctl enable #{enable_service}"
config.vm.provision "start #{enable_service}", type: "shell", inline: "sudo systemctl start #{enable_service}"
end if service.include?('enabled')
service['disabled'].each do |disable_service|
config.vm.provision "disable #{disable_service}", type: "shell", inline: "sudo systemctl disable #{disable_service}"
config.vm.provision "stop #{disable_service}", type: "shell", inline: "sudo systemctl stop #{disable_service}"
end if service.include?('disabled')
end
end
# Clear any existing nginx sites
config.vm.provision 'shell' do |s|
s.path = script_dir + '/clear-nginx.sh'
end
# Clear any Homestead sites and insert markers in /etc/hosts
config.vm.provision 'shell' do |s|
s.path = script_dir + '/hosts-reset.sh'
end
# Install All The Configured Nginx Sites
if settings.include? 'sites'
domains = []
settings['sites'].each do |site|
domains.push(site['map'])
# Create SSL certificate
config.vm.provision 'shell' do |s|
s.name = 'Creating Certificate: ' + site['map']
s.path = script_dir + '/create-certificate.sh'
s.args = [site['map']]
end
if site['wildcard'] == 'yes'
config.vm.provision 'shell' do |s|
s.name = 'Creating Wildcard Certificate: *.' + site['map']
s.path = script_dir + '/create-certificate.sh'
s.args = ['*.' + site['map']]
end
end
type = site['type'] ||= 'laravel'
load_balancer = settings['load_balancer'] ||= false
http_port = load_balancer ? '8111' : '80'
https_port = load_balancer ? '8112' : '443'
if load_balancer
config.vm.provision 'shell' do |s|
s.path = script_dir + '/install-load-balancer.sh'
end
end
case type
when 'apigility'
type = 'zf'
when 'expressive'
type = 'zf'
when 'symfony'
type = 'symfony2'
end
config.vm.provision 'shell' do |s|
s.name = 'Creating Site: ' + site['map']
if site.include? 'params'
params = '('
site['params'].each do |param|
params += ' [' + param['key'] + ']=' + param['value']
end
params += ' )'
end
if site.include? 'headers'
headers = '('
site['headers'].each do |header|
headers += ' [' + header['key'] + ']=' + header['value']
end
headers += ' )'
end
if site.include? 'rewrites'
rewrites = '('
site['rewrites'].each do |rewrite|
rewrites += ' [' + rewrite['map'] + ']=' + "'" + rewrite['to'] + "'"
end
rewrites += ' )'
# Escape variables for bash
rewrites.gsub! '$', '\$'
end
# Convert the site & any options to an array of arguments passed to the
# specific site type script (defaults to laravel)
s.path = script_dir + "/site-types/#{type}.sh"
s.args = [
site['map'], # $1
site['to'], # $2
site['port'] ||= http_port, # $3
site['ssl'] ||= https_port, # $4
site['php'] ||= '8.3', # $5
params ||= '', # $6
site['xhgui'] ||= '', # $7
site['exec'] ||= 'false', # $8
headers ||= '', # $9
rewrites ||= '', # $10
site['prod'] ||='' # $11
]
# Should we use the wildcard ssl?
if site['wildcard'] == 'yes' or site['use_wildcard'] == 'yes'
if site['use_wildcard'] != 'no'
if site['type'] != 'apache'
config.vm.provision 'shell' do |s|
s.inline = "sed -i \"s/$1.crt/*.$1.crt/\" /etc/nginx/sites-available/$1"
s.args = [site['map']]
end
config.vm.provision 'shell' do |s|
s.inline = "sed -i \"s/$1.key/*.$1.key/\" /etc/nginx/sites-available/$1"
s.args = [site['map']]
end
else
config.vm.provision 'shell' do |s|
s.inline = "sed -i \"s/$1.crt/*.$1.crt/\" /etc/apache2/sites-available/$1-ssl.conf"
s.args = [site['map']]
end
config.vm.provision 'shell' do |s|
s.inline = "sed -i \"s/$1.key/*.$1.key/\" /etc/apache2/sites-available/$1-ssl.conf"
s.args = [site['map']]
end
end
end
end
# generate pm2 json config file
if site['pm2']
config.vm.provision "shell" do |s2|
s2.name = 'Creating Site Ecosystem for pm2: ' + site['map']
s2.path = script_dir + "/create-ecosystem.sh"
s2.args = Array.new
s2.args << site['pm2'][0]['name']
s2.args << site['pm2'][0]['script'] ||= "npm"
s2.args << site['pm2'][0]['args'] ||= "run serve"
s2.args << site['pm2'][0]['cwd']
end
end
if site['xhgui'] == 'true'
config.vm.provision 'shell' do |s|
s.path = script_dir + '/features/mongodb.sh'
end
config.vm.provision 'shell' do |s|
s.path = script_dir + '/install-xhgui.sh'
end
config.vm.provision 'shell' do |s|
s.inline = 'ln -sf /opt/xhgui/webroot ' + site['to'] + '/xhgui'
end
else
config.vm.provision 'shell' do |s|
s.inline = 'rm -rf ' + site['to'].to_s + '/xhgui'
end
end
end
config.vm.provision 'shell' do |s|
s.path = script_dir + "/hosts-add.sh"
s.args = ['127.0.0.1', site['map']]
end
# Configure The Cron Schedule
if site.has_key?('schedule')
config.vm.provision 'shell' do |s|
s.name = 'Creating Schedule'
if site['schedule']
s.path = script_dir + '/cron-schedule.sh'
s.args = [site['map'].tr('^A-Za-z0-9', ''), site['to'], site['php'] ||= '']
else
s.inline = "rm -f /etc/cron.d/$1"
s.args = [site['map'].tr('^A-Za-z0-9', '')]
end
end
else
config.vm.provision 'shell' do |s|
s.name = 'Checking for old Schedule'
s.inline = "rm -f /etc/cron.d/$1"
s.args = [site['map'].tr('^A-Za-z0-9', '')]
end
end
end
end
# Configure All Of The Server Environment Variables
config.vm.provision 'shell' do |s|
s.name = 'Clear Variables'
s.path = script_dir + '/clear-variables.sh'
end
if settings.has_key?('variables')
settings['variables'].each do |var|
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/5.6/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.0/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.1/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.2/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.3/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.4/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/8.0/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/8.1/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/8.2/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/8.3/fpm/pool.d/www.conf"
s.args = [var['key'], var['value']]
end
config.vm.provision 'shell' do |s|
s.inline = "echo \"\n# Set Homestead Environment Variable\nexport $1=$2\" >> /home/vagrant/.profile"
s.args = [var['key'], var['value']]
end
end
config.vm.provision 'shell' do |s|
s.inline = 'service php5.6-fpm restart;service php7.0-fpm restart;service php7.1-fpm restart; service php7.2-fpm restart; service php7.3-fpm restart; service php7.4-fpm restart; service php8.0-fpm restart; service php8.1-fpm restart; service php8.2-fpm restart; service php8.3-fpm restart;'
end
end
config.vm.provision 'shell' do |s|
s.name = 'Restarting Cron'
s.inline = 'sudo service cron restart'
end
config.vm.provision 'shell' do |s|
s.name = 'Restart Webserver'
s.path = script_dir + '/restart-webserver.sh'
end
# Configure All Of The Configured Databases
if settings.has_key?('databases')
enabled_databases = Array.new
# Check which databases are enabled
if settings.has_key?('features')
settings['features'].each do |feature|
feature_name = feature.keys[0]
feature_arguments = feature[feature_name]
# If feature is set to false, ignore
if feature_arguments == false
next
end
enabled_databases.push feature_name
end
end
# Enable MySQL if MariaDB is not enabled
if (!enabled_databases.include? 'mysql') && (!enabled_databases.include? 'mariadb')
enabled_databases.push 'mysql'
end
settings['databases'].each do |db|
if (enabled_databases.include? 'mysql') || (enabled_databases.include? 'mariadb')
config.vm.provision 'shell' do |s|
s.name = 'Creating MySQL / MariaDB Database: ' + db
s.path = script_dir + '/create-mysql.sh'
s.args = [db]
end
end
if enabled_databases.include? 'postgresql'
config.vm.provision 'shell' do |s|
s.name = 'Creating Postgres Database: ' + db
s.path = script_dir + '/create-postgres.sh'
s.args = [db]
end
end
if enabled_databases.include? 'mongodb'
config.vm.provision 'shell' do |s|
s.name = 'Creating Mongo Database: ' + db
s.path = script_dir + '/create-mongo.sh'
s.args = [db]
end
end
if enabled_databases.include? 'couchdb'
config.vm.provision 'shell' do |s|
s.name = 'Creating Couch Database: ' + db
s.path = script_dir + '/create-couch.sh'
s.args = [db]
end
end
if enabled_databases.include? 'influxdb'
config.vm.provision 'shell' do |s|
s.name = 'Creating InfluxDB Database: ' + db
s.path = script_dir + '/create-influxdb.sh'
s.args = [db]
end
end
end
end
# Create Minio Buckets
if settings.has_key?('buckets') && settings['features'].any? { |feature| feature.include?('minio') }
settings['buckets'].each do |bucket|
config.vm.provision 'shell' do |s|
s.name = 'Creating Minio Bucket: ' + bucket['name']
s.path = script_dir + '/create-minio-bucket.sh'
s.args = [bucket['name'], bucket['policy'] || 'none']
end
end
end
# Update Composer On Every Provision
config.vm.provision 'shell' do |s|
s.name = 'Update Composer'
s.inline = 'sudo chown -R vagrant:vagrant /usr/local/bin && sudo -u vagrant /usr/bin/php8.3 /usr/local/bin/composer self-update --no-progress && sudo chown -R vagrant:vagrant /home/vagrant/.config/'
s.privileged = false
end
# Add config file for ngrok
config.vm.provision 'shell' do |s|
s.path = script_dir + '/create-ngrok.sh'
s.args = [settings['ip']]
s.privileged = false
end
config.vm.provision 'shell' do |s|
s.name = 'Update motd'
s.inline = 'sudo service motd-news restart'
end
if settings.has_key?('backup') && settings['backup'] && (Vagrant::VERSION >= '2.1.0' || Vagrant.has_plugin?('vagrant-triggers'))
dir_prefix = '/vagrant/.backup'
# Rebuild the enabled_databases so we can check before backing up
enabled_databases = Array.new
# Check which databases are enabled
if settings.has_key?('features')
settings['features'].each do |feature|
feature_name = feature.keys[0]
feature_arguments = feature[feature_name]
# If feature is set to false, ignore
if feature_arguments == false
next
end
enabled_databases.push feature_name
end
end
# Enable MySQL if MariaDB is not enabled
if (!enabled_databases.include? 'mysql') && (!enabled_databases.include? 'mariadb')
enabled_databases.push 'mysql'
end
# Loop over each DB
settings['databases'].each do |database|
# Backup MySQL/MariaDB
if (enabled_databases.include? 'mysql') || (enabled_databases.include? 'mariadb')
Homestead.backup_mysql(database, "#{dir_prefix}/mysql_backup", config)
end
# Backup PostgreSQL
if enabled_databases.include? 'postgresql'
Homestead.backup_postgres(database, "#{dir_prefix}/postgres_backup", config)
end
# Backup MongoDB
if enabled_databases.include? 'mongodb'
Homestead.backup_mongodb(database, "#{dir_prefix}/mongodb_backup", config)
end
end
end
# Turn off CFQ scheduler idling https://github.com/laravel/homestead/issues/896
if settings.has_key?('disable_cfq')
config.vm.provision 'shell' do |s|
s.inline = 'sudo sh -c "echo 0 >> /sys/block/sda/queue/iosched/slice_idle"'
end
config.vm.provision 'shell' do |s|
s.inline = 'sudo sh -c "echo 0 >> /sys/block/sda/queue/iosched/group_idle"'
end
end
# Ajouts perso : exécution de mysql_secure_installation, compte root/root
config.vm.provision 'shell' do |s|
s.inline = "(echo '' ; echo 'n' ; echo 'y' ; echo 'root' ; echo 'root' ; echo 'y' ; echo 'y' ; echo 'y' ; echo 'y' ) | mysql_secure_installation"
end
end
def self.backup_mysql(database, dir, config)
now = Time.now.strftime("%Y%m%d%H%M")
config.trigger.before :destroy do |trigger|
trigger.warn = "Backing up mysql database #{database}..."
trigger.run_remote = {inline: "mkdir -p #{dir}/#{now} && mysqldump --routines #{database} > #{dir}/#{now}/#{database}-#{now}.sql"}
end
end
def self.backup_postgres(database, dir, config)
now = Time.now.strftime("%Y%m%d%H%M")
config.trigger.before :destroy do |trigger|
trigger.warn = "Backing up postgres database #{database}..."
trigger.run_remote = {inline: "mkdir -p #{dir}/#{now} && echo localhost:5432:#{database}:homestead:secret > ~/.pgpass && chmod 600 ~/.pgpass && pg_dump -U homestead -h localhost #{database} > #{dir}/#{now}/#{database}-#{now}.sql"}
end
end
def self.backup_mongodb(database, dir, config)
now = Time.now.strftime("%Y%m%d%H%M")
config.trigger.before :destroy do |trigger|
trigger.warn = "Backing up mongodb database #{database}..."
trigger.run_remote = {inline: "mkdir -p #{dir}/#{now} && mongodump --db #{database} --out #{dir}/#{now}"}
end
end
end

26
scripts/hosts-add.sh Normal file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env bash
# Add new IP-host pair to /etc/hosts.
if [[ "$1" && "$2" ]]
then
IP=$1
HOSTNAME=$2
if [ -n "$(grep [^\.]$HOSTNAME /etc/hosts)" ]
then
echo "$HOSTNAME already exists:";
echo $(grep [^\.]$HOSTNAME /etc/hosts);
else
sudo sed -i "/#### HOMESTEAD-SITES-BEGIN/c\#### HOMESTEAD-SITES-BEGIN\\n$IP\t$HOSTNAME" /etc/hosts
if ! [ -n "$(grep [^\.]$HOSTNAME /etc/hosts)" ]
then
echo "Failed to add $HOSTNAME.";
fi
fi
else
echo "Error: missing required parameters."
echo "Usage: "
echo " addhost ip domain"
fi

7
scripts/hosts-reset.sh Normal file
View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
# Remove any Homestead entries from /etc/hosts and prepare for adding new ones.
sudo sed -i '/#### HOMESTEAD-SITES-BEGIN/,/#### HOMESTEAD-SITES-END/d' /etc/hosts
printf "#### HOMESTEAD-SITES-BEGIN\n#### HOMESTEAD-SITES-END\n" | sudo tee -a /etc/hosts > /dev/null

View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
# scripts/in-flight-service.sh
# this script is solely for doing questionable things to update the base OS
# Without having to ship an entirely new base box.
# Fix expired certs: https://github.com/laravel/homestead/issues/1707
# sudo rm -rf /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
# sudo update-ca-certificates

View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
block="
upstream homesteadup {
server 127.0.1.1:8111;
}
server {
listen 80;
listen 443 ssl default_server;
location / {
proxy_pass http://homesteadup;
proxy_set_header HOST \$host;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}
ssl_certificate /etc/nginx/ssl/homestead.test.crt;
ssl_certificate_key /etc/nginx/ssl/homestead.test.key;
}
"
echo "$block" > "/etc/nginx/sites-available/default"
ln -fs "/etc/nginx/sites-available/default" "/etc/nginx/sites-enabled/default"

153
scripts/install-xhgui.sh Normal file
View File

@ -0,0 +1,153 @@
#!/usr/bin/env bash
# Check If xhgui Has Been Installed
if [ -f /home/vagrant/.homestead-features/xhgui ]
then
echo "xhgui already installed."
exit 0
fi
touch /home/vagrant/.homestead-features/xhgui
chown -Rf vagrant:vagrant /home/vagrant/.homestead-features
apt install -y php-tideways
phpenmod -v ALL tideways
git clone https://github.com/perftools/xhgui.git /opt/xhgui
cat <<'EOT' > /opt/xhgui/webroot/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /xhgui/index.php [QSA,L]
</IfModule>
EOT
cat <<'EOT' > /opt/xhgui/config/config.php
<?php
/**
* Configuration for XHGui.
*/
return array(
// Which backend to use for Xhgui_Saver.
// Must be one of 'mongodb', or 'file'.
//
// Example (save to a temporary file):
//
// 'save.handler' => 'file',
// # Beware of file locking. You can adujst this file path
// # to reduce locking problems (eg uniqid, time ...)
// 'save.handler.filename' => __DIR__.'/../data/xhgui_'.date('Ymd').'.dat',
//
'save.handler' => 'mongodb',
// Database options for MongoDB.
//
// - db.host: Connection string in the form `mongodb://[ip or host]:[port]`.
//
// - db.db: The database name.
//
// - db.options: Additional options for the MongoClient contructor,
// for example 'username', 'password', or 'replicaSet'.
// See <https://secure.php.net/mongoclient_construct#options>.
//
'db.host' => 'mongodb://127.0.0.1:27017',
'db.db' => 'xhprof',
'db.options' => array('username' => 'homestead', 'password' => 'secret'),
// Whether to instrument a user request.
//
// NOTE: Only applies to using the external/header.php include.
//
// Must be a function that returns a boolean,
// or any non-function value to disable the profiler.
//
// Default: Profile 1 in 100 requests.
//
// Example (profile all requests):
//
// 'profiler.enabled' => function() {
// return true;
// },
//
'profiler.enable' => function() {
// Never profile ourself.
if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/xhgui') === 0) {
return false;
}
// Profile if ?xhgui=on, and continue to profile for the next hour.
foreach (array('xhgui') as $switch) {
if (isset($_GET[$switch]) && $_GET[$switch] == 'on') {
setcookie('xhgui', 'on', time() + 3600);
return true;
}
}
// Profile if we have been set to profiling mode.
if (isset($_COOKIE['xhgui']) && $_COOKIE['xhgui'] == 'on') {
return true;
}
// Profile the CLI when the XHGUI environment variable is set.
if (getenv('XHGUI') == 'on') {
return true;
}
},
// Transformation for the "simple" variant of the URL.
// This is stored as `meta.simple_url` and used for
// aggregate data.
//
// NOTE: Only applies to using the external/header.php include.
//
// Must be a function that returns a string, or any
// non-callable value for the default behaviour.
//
// Default: Remove numeric values after `=`. For example,
// it turns "/foo?page=2" into "/foo?page".
'profiler.simple_url' => null,
// Additional options to be passed to the `_enable()` function
// of the profiler extension (xhprof, tideways, etc.).
//
// NOTE: Only applies to using the external/header.php include.
'profiler.options' => array(),
// Date format used when browsing XHGui pages.
//
// Must be a format supported by the PHP date() function.
// See <https://secure.php.net/date>.
'date.format' => 'M jS H:i:s',
// The number of items to show in "Top lists" with functions
// using the most time or memory resources, on XHGui Run pages.
'detail.count' => 6,
// The number of items to show per page, on XHGui list pages.
'page.limit' => 25,
);
EOT
# Add indexes documented at https://github.com/perftools/xhgui#installation
mongo --eval "db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } ); \
db.results.ensureIndex( { 'profile.main().wt' : -1 } ); \
db.results.ensureIndex( { 'profile.main().mu' : -1 } ); \
db.results.ensureIndex( { 'profile.main().cpu' : -1 } ); \
db.results.ensureIndex( { 'meta.url' : 1 } ); \
db.results.ensureIndex( { 'meta.simple_url' : 1 } ); \
db.results.ensureIndex( { "meta.request_ts" : 1 }, { expireAfterSeconds : 432000 } )" xhprof
cd /opt/xhgui
php install.php
for version in 5.6 7.0 7.1 7.2 7.3 7.4
do
cat << 'EOT' > /etc/php/$version/mods-available/xhgui.ini
; Include xhgui's header for performance profiling.
auto_prepend_file="/opt/xhgui/external/header.php"
EOT
done
phpenmod -v ALL xhgui

View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Restart whichever web server isn't disabled
# is nginx enabled?
OUTPUT="$(systemctl is-enabled nginx)"
if [ "$OUTPUT" == "enabled" ]; then
service nginx restart
else
service nginx stop
service apache2 restart
fi

View File

@ -0,0 +1,134 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
SetEnv ${element} \"${params[$element]}\""
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
Header always set ${element} \"${headers[$element]}\""
done
fi
if [ -n "$2" ]
then
if ! [[ "$2" =~ ^[0-9]+$ ]]
then
if ! [[ "$2" =~ ^https: ]]
then
socket=$(echo "$2" | sed -E "s/^http(s?):\/\//ws:\/\//g")
else
socket=$(echo "$2" | sed -E "s/^http(s?):\/\//wss:\/\//g")
fi
proxyPass="
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) $socket/ [P,L]
ProxyPass / ${2}/
ProxyPassReverse / ${2}/
"
else proxyPass="
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:$2/ [P,L]
ProxyPass / http://127.0.0.1:$2/
ProxyPassReverse / http://127.0.0.1:$2/
"
fi
else proxyPass="
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1/ [P,L]
ProxyPass / http://127.0.0.1/
ProxyPassReverse / http://127.0.0.1/
"
fi
export DEBIAN_FRONTEND=noninteractive
sudo service nginx stop
sudo systemctl disable nginx
sudo systemctl enable apache2
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod headers
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html
block="<VirtualHost *:$3>
ServerAdmin webmaster@localhost
ServerName $1
ServerAlias www.$1
ProxyPreserveHost On
RequestHeader set X-Real-IP %{REMOTE_ADDR}s
RequestHeader set Upgrade websocket
RequestHeader set Connection Upgrade
$paramsTXT
$headersTXT
$proxyPass
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
"
echo "$block" > "/etc/apache2/sites-available/$1.conf"
ln -fs "/etc/apache2/sites-available/$1.conf" "/etc/apache2/sites-enabled/$1.conf"
blockssl="<IfModule mod_ssl.c>
<VirtualHost *:$4>
ServerAdmin webmaster@localhost
ServerName $1
ServerAlias www.$1
ProxyPreserveHost On
RequestHeader set X-Real-IP %{REMOTE_ADDR}s
RequestHeader set Upgrade websocket
RequestHeader set Connection Upgrade
$paramsTXT
$headersTXT
SSLEngine on
SSLCertificateFile /etc/ssl/certs/$1.crt
SSLCertificateKeyFile /etc/ssl/certs/$1.key
$proxyPass
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
"
echo "$blockssl" > "/etc/apache2/sites-available/$1-ssl.conf"
ln -fs "/etc/apache2/sites-available/$1-ssl.conf" "/etc/apache2/sites-enabled/$1-ssl.conf"
ps auxw | grep apache2 | grep -v grep > /dev/null
service apache2 restart
if [ $? == 0 ]
then
service apache2 reload
fi

View File

@ -0,0 +1,154 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
SetEnv ${element} \"${params[$element]}\""
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
Header always set ${element} \"${headers[$element]}\""
done
fi
export DEBIAN_FRONTEND=noninteractive
sudo service nginx stop
sudo systemctl disable nginx
sudo systemctl enable apache2
block="<VirtualHost *:$3>
ServerAdmin webmaster@localhost
ServerName $1
ServerAlias www.$1
DocumentRoot "$2"
$paramsTXT
$headersTXT
<Directory "$2">
AllowOverride All
Require all granted
EnableMMAP Off
</Directory>
<IfModule mod_fastcgi.c>
AddHandler php"$5"-fcgi .php
Action php"$5"-fcgi /php"$5"-fcgi
Alias /php"$5"-fcgi /usr/lib/cgi-bin/php"$5"
FastCgiExternalServer /usr/lib/cgi-bin/php"$5" -socket /var/run/php/php"$5"-fpm.sock -pass-header Authorization
</IfModule>
<IfModule !mod_fastcgi.c>
<IfModule mod_proxy_fcgi.c>
<FilesMatch \".+\.ph(ar|p|tml)$\">
SetHandler \"proxy:unix:/var/run/php/php"$5"-fpm.sock|fcgi://localhost\"
</FilesMatch>
</IfModule>
</IfModule>
#LogLevel info ssl:warn
ErrorLog \${APACHE_LOG_DIR}/$1-error.log
CustomLog \${APACHE_LOG_DIR}/$1-access.log combined
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
"
echo "$block" > "/etc/apache2/sites-available/$1.conf"
ln -fs "/etc/apache2/sites-available/$1.conf" "/etc/apache2/sites-enabled/$1.conf"
blockssl="<IfModule mod_ssl.c>
<VirtualHost *:$4>
ServerAdmin webmaster@localhost
ServerName $1
ServerAlias www.$1
DocumentRoot "$2"
$paramsTXT
<Directory "$2">
AllowOverride All
Require all granted
</Directory>
#LogLevel info ssl:warn
ErrorLog \${APACHE_LOG_DIR}/$1-error.log
CustomLog \${APACHE_LOG_DIR}/$1-access.log combined
#Include conf-available/serve-cgi-bin.conf
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
#SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateFile /etc/ssl/certs/$1.crt
SSLCertificateKeyFile /etc/ssl/certs/$1.key
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
#SSLCACertificatePath /etc/ssl/certs/
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
#SSLCARevocationPath /etc/apache2/ssl.crl/
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
#SSLVerifyClient require
#SSLVerifyDepth 10
<FilesMatch \"\.(cgi|shtml|phtml|php)$\">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<IfModule mod_fastcgi.c>
AddHandler php"$5"-fcgi .php
Action php"$5"-fcgi /php"$5"-fcgi
Alias /php"$5"-fcgi /usr/lib/cgi-bin/php"$5"
FastCgiExternalServer /usr/lib/cgi-bin/php"$5" -socket /var/run/php/php"$5"-fpm.sock -pass-header Authorization
</IfModule>
<IfModule !mod_fastcgi.c>
<IfModule mod_proxy_fcgi.c>
<FilesMatch \".+\.ph(ar|p|tml)$\">
SetHandler \"proxy:unix:/var/run/php/php"$5"-fpm.sock|fcgi://localhost\"
</FilesMatch>
</IfModule>
</IfModule>
BrowserMatch \"MSIE [2-6]\" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch \"MSIE [17-9]\" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
"
echo "$blockssl" > "/etc/apache2/sites-available/$1-ssl.conf"
ln -fs "/etc/apache2/sites-available/$1-ssl.conf" "/etc/apache2/sites-enabled/$1-ssl.conf"
ps auxw | grep apache2 | grep -v grep > /dev/null
service apache2 restart
service php"$5"-fpm restart
if [ $? == 0 ]
then
service apache2 reload
fi

View File

@ -0,0 +1,97 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name www.$1;
return 301 http://$1\$request_uri;
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
try_files \$uri \$uri/ /index.php?\$args;
$headersTXT
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log $2/../logs/$1-access.log;
error_log $2/../logs/$1-error.log error;
sendfile off;
location ~ \.php$ {
try_files \$uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,8 @@
#!/usr/bin/env bash
sudo service nginx stop
if [ -d /etc/apache2/sites-available ]
then
sudo service apache2 stop
fi

115
scripts/site-types/elgg.sh Normal file
View File

@ -0,0 +1,115 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root $2;
index index.php index.html index.htm;
error_log /var/log/nginx/$1-error.log error;
access_log off;
gzip on;
gzip_types
# text/html is always compressed by HttpGzipModule
text/css
text/javascript
text/xml
text/plain
text/x-component
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
font/truetype
font/opentype
application/vnd.ms-fontobject
image/svg+xml;
client_max_body_size 100M;
$rewritesTXT
location ~ /.well-known {
allow all;
}
location ~ (^\.|/\.) {
deny all;
}
location = /rewrite.php {
rewrite ^(.*)$ /install.php;
}
location / {
try_files \$uri \$uri/ @elgg;
$headersTXT
}
$configureXhgui
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
try_files \$uri @elgg;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location @elgg {
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root/index.php;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param QUERY_STRING __elgg_uri=\$uri&\$args;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,98 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
if (!-e \$request_filename) {
rewrite ^(.*)$ /index.php?s=/\$1 last;
break;
}
$headersTXT
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,92 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
try_files \$uri /index.php?\$query_string;
$headersTXT
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location = /index.php {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,93 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
$rewritesTXT
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
$headersTXT
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,207 @@
declare -A params=$6 # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
set \$MAGE_ROOT $2;
root \$MAGE_ROOT/pub;
index index.php;
autoindex off;
charset utf-8;
client_max_body_size 100M;
error_page 404 403 = /errors/404.php;
# PHP entry point for setup application
location ~* ^/setup($|/) {
root \$MAGE_ROOT;
location ~ ^/setup/index.php {
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_param PHP_FLAG \"session.auto_start=off \n suhosin.session.cryptua=off\";
fastcgi_param PHP_VALUE \"memory_limit=756M \n max_execution_time=600\";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
include fastcgi_params;
}
location ~ ^/setup/(?!pub/). {
deny all;
}
location ~ ^/setup/pub/ {
add_header X-Frame-Options \"SAMEORIGIN\";
}
}
# PHP entry point for update application
location ~* ^/update($|/) {
root \$MAGE_ROOT;
location ~ ^/update/index.php {
fastcgi_split_path_info ^(/update/index.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
$paramsTXT
include fastcgi_params;
}
# Deny everything but index.php
location ~ ^/update/(?!pub/). {
deny all;
}
location ~ ^/update/pub/ {
add_header X-Frame-Options \"SAMEORIGIN\";
}
}
location / {
try_files \$uri \$uri/ /index.php\$is_args\$args;
}
location /pub/ {
location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) {
deny all;
}
alias \$MAGE_ROOT/pub/;
add_header X-Frame-Options \"SAMEORIGIN\";
}
location /static/ {
# Uncomment the following line in production mode
# expires max;
# Remove signature of the static files that is used to overcome the browser cache
location ~ ^/static/version {
rewrite ^/static/(version[^/]+/)?(.*)$ /static/\$2 last;
}
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2|json)$ {
add_header Cache-Control \"public\";
add_header X-Frame-Options \"SAMEORIGIN\";
expires +1y;
if (!-f \$request_filename) {
rewrite ^/static/?(.*)$ /static.php?resource=\$1 last;
}
}
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
add_header Cache-Control "no-store";
add_header X-Frame-Options "SAMEORIGIN";
expires off;
if (!-f \$request_filename) {
rewrite ^/static/?(.*)$ /static.php?resource=\$1 last;
}
}
if (!-f \$request_filename) {
rewrite ^/static/?(.*)$ /static.php?resource=\$1 last;
}
add_header X-Frame-Options \"SAMEORIGIN\";
}
location /media/ {
try_files \$uri \$uri/ /get.php\$is_args\$args;
location ~ ^/media/theme_customization/.*\.xml {
deny all;
}
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
add_header Cache-Control \"public\";
add_header X-Frame-Options \"SAMEORIGIN\";
expires +1y;
try_files \$uri \$uri/ /get.php\$is_args\$args;
}
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
add_header Cache-Control \"no-store\";
add_header X-Frame-Options \"SAMEORIGIN\";
expires off;
try_files \$uri \$uri/ /get.php\$is_args\$args;
}
add_header X-Frame-Options \"SAMEORIGIN\";
}
location /media/customer/ {
deny all;
}
location /media/downloadable/ {
deny all;
}
location /media/import/ {
deny all;
}
# PHP entry point for main application
location ~ ^/(index|get|static|errors/report|errors/404|errors/503|health_check)\.php$ {
try_files \$uri =404;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param PHP_FLAG \"session.auto_start=off \n suhosin.session.cryptua=off\";
fastcgi_param PHP_VALUE \"memory_limit=756M \n max_execution_time=18000\";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
include fastcgi_params;
}
gzip on;
gzip_disable \"msie6\";
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/xml+rss
image/svg+xml;
gzip_vary on;
# Banned locations (only reached if the earlier PHP entry point regexes don't match)
location ~* (\.php$|\.htaccess$|\.git) {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,85 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=$9 # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "$9" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
if (!-e \$request_filename) {
rewrite ^/(.*)\$ /index.php?q=\$1 last;
}
$headersTXT
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,103 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
if (!-d \$request_filename){
set \$rule_0 1\$rule_0;
}
if (!-f \$request_filename){
set \$rule_0 2\$rule_0;
}
if (\$rule_0 = "21"){
rewrite ^/(.*)$ /index.php?_url=/\$1 last;
}
$headersTXT
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,189 @@
#!/usr/bin/env bash
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y php"$5"-bz2
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="# mime types are covered in nginx.conf by:
# http {
# include mime.types;
# }
server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
client_max_body_size 100M;
index index.php;
access_log off;
error_log /var/log/nginx/$1-ssl-error.log error;
# Pimcore Head-Link Cache-Busting
rewrite ^/cache-buster-(?:\d+)/(.*) /\$1 last;
$rewritesTXT
$configureXhgui
# Stay secure
#
# a) don't allow PHP in folders allowing file uploads
location ~* /var/assets/*\.php(/|\$) {
return 404;
}
# b) Prevent clients from accessing hidden files (starting with a dot)
# Access to /.well-known/ is allowed.
# https://www.mnot.net/blog/2010/04/07/well-known
# https://tools.ietf.org/html/rfc5785
location ~* /\.(?!well-known/) {
deny all;
log_not_found off;
access_log off;
}
# c) Prevent clients from accessing to backup/config/source files
location ~* (?:\.(?:bak|conf(ig)?|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)\$ {
deny all;
}
# Some Admin Modules need this:
# Database Admin, Server Info
location ~* ^/admin/(adminer|external) {
rewrite .* /app.php\$is_args\$args last;
}
# Thumbnails
location ~* .*/(image|video)-thumb__\d+__.* {
try_files /var/tmp/\$1-thumbnails\$uri /app.php;
expires 2w;
access_log off;
add_header Cache-Control \"public\";
$headersTXT
$paramsTXT
}
# Assets
# Still use a whitelist approach to prevent each and every missing asset to go through the PHP Engine.
location ~* (.+?)\.((?:css|js)(?:\.map)?|jpe?g|gif|png|svgz?|eps|exe|gz|zip|mp\d|ogg|ogv|webm|pdf|docx?|xlsx?|pptx?)\$ {
try_files /var/assets\$uri \$uri =404;
expires 2w;
access_log off;
log_not_found off;
add_header Cache-Control \"public\";
$headersTXT
$paramsTXT
}
# Installer
# Remove this if you don't need the web installer (anymore)
if (-f \$document_root/install.php) {
rewrite ^/install(/?.*) /install.php last;
}
location / {
error_page 404 /meta/404;
add_header \"X-UA-Compatible\" \"IE=edge\";
try_files \$uri /app.php\$is_args\$args;
$headersTXT
$paramsTXT
}
# Use this location when the installer has to be run
# location ~ /(app|install)\.php(/|\$) {
#
# Use this after initial install is done:
location ~ /(app|install)\.php(/|\$) {
send_timeout 1800;
fastcgi_read_timeout 1800;
# regex to split \$uri to \$fastcgi_script_name and \$fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
# Check that the PHP script exists before passing it
try_files \$fastcgi_script_name =404;
include fastcgi.conf;
# Bypass the fact that try_files resets \$fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set \$path_info \$fastcgi_path_info;
fastcgi_param PATH_INFO \$path_info;
# Activate these, if using Symlinks and opcache
# fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
# fastcgi_param DOCUMENT_ROOT \$realpath_root;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# PHP-FPM Status and Ping
location /fpm- {
access_log off;
include fastcgi_params;
location /fpm-status {
allow 127.0.0.1;
# add additional IP's or Ranges
deny all;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
}
location /fpm-ping {
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
}
}
# nginx Status
# see: https://nginx.org/en/docs/http/ngx_http_stub_status_module.html
location /nginx-status {
allow 127.0.0.1;
deny all;
access_log off;
stub_status;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"
sudo service nginx restart

View File

@ -0,0 +1,64 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=$9 # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "$9" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
if [ -n "$2" ]
then
if ! [[ "$2" =~ ^[0-9]+$ ]]
then
proxyPass="
proxy_pass ${2};
"
else proxyPass="
proxy_pass http://127.0.0.1:$2;
"
fi
else proxyPass="
proxy_pass http://127.0.0.1;
"
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl;
server_name .$1;
location / {
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host \$host;
proxy_http_version 1.1;
$proxyPass
$headersTXT
$paramsTXT
}
access_log off;
error_log /var/log/nginx/$1-error.log error;
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,142 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
charset utf-8;
client_max_body_size 100M;
if (\$http_x_forwarded_host) {
return 400;
}
$rewritesTXT
location / {
try_files \$uri /index.php?url=\$uri&\$query_string;
$headersTXT
}
error_page 404 /assets/error-404.html;
error_page 500 /assets/error-500.html;
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ^~ /assets/ {
location ~ /\. {
deny all;
}
try_files \$uri /index.php?url=\$uri&\$query_string;
$headersTXT
}
location ~ /framework/.*(main|rpc|tiny_mce_gzip)\.php$ {
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
$paramsTXT
}
location ~ /(mysite|framework|cms)/.*\.(php|php3|php4|php5|phtml|inc)$ {
deny all;
}
location ~ /\.. {
deny all;
}
location ~ \.ss$ {
satisfy any;
allow 127.0.0.1;
deny all;
}
location ~ web\.config$ {
deny all;
}
location ~ \.ya?ml$ {
deny all;
}
location ^~ /vendor/ {
deny all;
}
location ~* /silverstripe-cache/ {
deny all;
}
location ~* composer\.(json|lock)$ {
deny all;
}
location ~* /(cms|framework)/silverstripe_version$ {
deny all;
}
location ~ \.php$ {
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 32k;
fastcgi_busy_buffers_size 64k;
fastcgi_buffers 4 32k;
$paramsTXT
}
$configureXhgui
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

68
scripts/site-types/spa.sh Normal file
View File

@ -0,0 +1,68 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
index index.html;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
try_files \$uri \$uri/ /index.html;
$headersTXT
$paramsTXT
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,95 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
rewrite ^/admin.php.*$ /admin.php;
try_files \$uri \$uri/ /index.php?\$query_string;
$headersTXT
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
$configureXhgui
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,108 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
index index.html index.htm index.php app_dev.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
try_files \$uri \$uri/ /app_dev.php?\$query_string;
$headersTXT
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-ssl-error.log error;
sendfile off;
# DEV
location ~ ^/(app_dev|app_test|config)\.php(/|\$) {
fastcgi_split_path_info ^(.+\.php)(/.*)\$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
internal;
}
location ~ /\.ht {
deny all;
}
$configureXhgui
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,94 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
$headersTXT
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-ssl-error.log error;
sendfile off;
# DEV
location ~ \.php(/|\$) {
fastcgi_split_path_info ^(.+\.php)(/.*)\$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
$configureXhgui
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,97 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location / {
if (!-e \$request_filename) {
rewrite ^(.*)$ /index.php?s=/\$1 last;
break;
}
$headersTXT
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

151
scripts/site-types/umi.sh Normal file
View File

@ -0,0 +1,151 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=$9 # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "$9" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
if [ "$7" = "true" ] && [ "$5" = "7.2" ]
then configureZray="
location /ZendServer {
try_files \$uri \$uri/ /ZendServer/index.php?\$args;
}
"
else configureZray=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location ~* ^\/(classes|errors\/logs|sys\-temp|cache|xmldb|static|packages) {
deny all;
}
location ~* (\/for_del_connector\.php|\.ini|\.conf)\$ {
deny all;
}
location ~* ^(\/files\/|\/images\/|\/yml\/) {
try_files \$uri =404;
}
location ~* ^\/images\/autothumbs\/ {
try_files \$uri @autothumbs =404;
}
location @autothumbs {
rewrite ^\/images\/autothumbs\/(.*)\$ /autothumbs.php?img=\$1\$query_string last;
}
location @clean_url {
rewrite ^/(.*)\$ /index.php?path=\$1 last;
}
location @dynamic {
try_files \$uri @clean_url;
}
location \/yml\/files\/ {
try_files \$uri =404;
}
location / {
rewrite ^\/robots\.txt /sbots_custom.php?path=\$1 last;
rewrite ^\/sitemap\.xml /sitemap.php last;
rewrite ^\/\~\/([0-9]+)\$ /tinyurl.php?id=\$1 last;
rewrite ^\/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)? /releaseStreams.php?scheme=\$1&path=\$3 last;
rewrite ^\/(.*)\.xml\$ /index.php?xmlMode=force&path=\$1 last;
rewrite ^(.*)\.json\$ /index.php?jsonMode=force&path=\$1 last;
$headersTXT
if (\$cookie_umicms_session) {
error_page 412 = @dynamic;
return 412;
}
if (\$request_method = 'POST') {
error_page 412 = @dynamic;
return 412;
}
index index.php;
try_files \$uri @dynamic;
}
location ~* \.js\$ {
rewrite ^\/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)? /releaseStreams.php?scheme=\$1&path=\$3 last;
try_files \$uri =404;
}
location ~* \.(ico|jpg|jpeg|png|gif|swf|css|ttf)\$ {
try_files \$uri =404;
access_log off;
expires 24h;
}
$configureZray
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/\$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

View File

@ -0,0 +1,158 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.php index.html index.htm;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { allow all; access_log off; log_not_found off; }
location ~*/wp-content/uploads {
log_not_found off;
try_files \$uri @prod_site;
}
location @prod_site {
rewrite ^/(.*)$ https://${11}/$1 redirect;
}
location ~ /.*\.(jpg|jpeg|png|js|css)$ {
try_files \$uri =404;
}
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
if (!-e \$request_filename) {
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ \$scheme://\$host\$uri/ permanent;
# WordPress in a subdirectory rewrite rules
rewrite ^/([_0-9a-zA-Z-]+/)?(wp-.*|xmlrpc.php) /wp/\$2 break;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
$configureXhgui
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"
# Additional constants to define in wp-config.php
wpConfigSearchStr="\$table_prefix = 'wp_';"
wpConfigReplaceStr="\$table_prefix = 'wp_';\\n\
\\n\
// Define the default HOME/SITEURL constants and set them to our root domain\\n\
if ( ! defined( 'WP_HOME' ) ) {\\n\
define( 'WP_HOME', 'http://$1' );\\n\
}\\n\
if ( ! defined( 'WP_SITEURL' ) ) {\\n\
define( 'WP_SITEURL', WP_HOME );\\n\
}\\n\
\\n\
if ( ! defined( 'WP_CONTENT_DIR' ) ) {\\n\
define( 'WP_CONTENT_DIR', __DIR__ . '/wp-content' );\\n\
}\\n\
if ( ! defined( 'WP_CONTENT_URL' ) ) {\\n\
define( 'WP_CONTENT_URL', WP_HOME . '/wp-content' );\\n\
}\\n\
\\n\
define( 'WP_DEBUG', true ); \\n\
"
# If wp-cli is installed, try and update it
if [ -f /usr/local/bin/wp ]
then
wp cli update --stable --yes
fi
# If WP is not installed then download it
if [ -d "$2/wp" ]
then
echo "WordPress is already installed."
else
sudo -i -u vagrant -- mkdir "$2/wp"
sudo -i -u vagrant -- wp core download --path="$2/wp" --version=latest
sudo -i -u vagrant -- cp -R $2/wp/wp-content $2/wp-content
sudo -i -u vagrant -- cp $2/wp/index.php $2/index.php
sudo -i -u vagrant -- sed -i "s|/wp-blog-header|/wp/wp-blog-header|g" $2/index.php
sudo -i -u vagrant -- echo "path: $2/wp/" > $2/wp-cli.yml
sudo -i -u vagrant -- wp config create --path=$2/wp/ --dbname=${1/./_} --dbuser=homestead --dbpass=secret --dbcollate=utf8_general_ci
sudo -i -u vagrant -- mv $2/wp/wp-config.php $2/wp-config.php
sudo -i -u vagrant -- sed -i 's|'"$wpConfigSearchStr"'|'"$wpConfigReplaceStr"'|g' $2/wp-config.php
sudo -i -u vagrant -- sed -i "s|define( 'ABSPATH', dirname( __FILE__ ) . '/' );|define( 'ABSPATH', __DIR__ . '/wp/' );|g" $2/wp-config.php
echo "WordPress has been downloaded and config file has been generated, install it manually."
fi

104
scripts/site-types/yii.sh Normal file
View File

@ -0,0 +1,104 @@
#!/usr/bin/env bash
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name .$1;
root \"$2\";
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 100M;
$rewritesTXT
location /index-test.php/ {
try_files \$uri \$uri/ /index-test.php\$is_args\$args;
$headersTXT
}
location / {
try_files \$uri \$uri/ /index.php\$is_args\$args;
$headersTXT
}
location ~ ^/assets/.*\.php\$ {
deny all;
}
$configureXhgui
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
$paramsTXT
try_files \$uri =404;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~* /\. {
deny all;
}
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"

103
scripts/site-types/zf.sh Normal file
View File

@ -0,0 +1,103 @@
#!/usr/bin/env bash
# Script for setting up the web server for any of the following applications:
#
# - Apigility
# - Expressive
# - zend-mvc
#
# Type declaration in Homestead.yaml should be one of:
#
# - apigility
# - expressive
# - zf
#
# The first two are aliases for the last.
declare -A params=$6 # Create an associative array
declare -A headers=${9} # Create an associative array
declare -A rewrites=${10} # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
for element in "${!params[@]}"
do
paramsTXT="${paramsTXT}
fastcgi_param ${element} ${params[$element]};"
done
fi
headersTXT=""
if [ -n "${9}" ]; then
for element in "${!headers[@]}"
do
headersTXT="${headersTXT}
add_header ${element} ${headers[$element]};"
done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
for element in "${!rewrites[@]}"
do
rewritesTXT="${rewritesTXT}
location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
done
fi
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
block="server {
listen ${3:-80};
listen ${4:-443} ssl http2;
server_name $1;
root \"$2\";
charset utf-8;
client_max_body_size 100M;
index index.php index.html;
$rewritesTXT
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
$headersTXT
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/$1-ssl-error.log error;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.*)\$;
fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root/\$fastcgi_script_name;
$paramsTXT
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
$configureXhgui
ssl_certificate /etc/ssl/certs/$1.crt;
ssl_certificate_key /etc/ssl/certs/$1.key;
}
"
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"