X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=bin%2Fdev%2Fvagrant_provision.sh;h=3992550ee15e4ff1a2819310c0c5d95f86000dc5;hb=baf8951745f8841beff1c596b0dd405c5d76f8ed;hp=fc3e266f2e802eea483e0cd9d98fe08deef6218c;hpb=0700452c498297603a09a37b927ca12bff19836f;p=friendica.git diff --git a/bin/dev/vagrant_provision.sh b/bin/dev/vagrant_provision.sh index fc3e266f2e..3992550ee1 100755 --- a/bin/dev/vagrant_provision.sh +++ b/bin/dev/vagrant_provision.sh @@ -1,13 +1,23 @@ #!/bin/bash -#Script to setup the vagrant instance for running friendica +# Script to setup the vagrant instance for running friendica # -#DO NOT RUN on your physical machine as this won't be of any use -#and f.e. deletes your /var/www/ folder! -echo "Friendica configuration settings" -sudo apt-get update +# DO NOT RUN on your physical machine as this won't be of any use +# and f.e. deletes your /var/www/ folder! +# +# Run as root by vagrant +# +## + +ADMIN_NICK="admin" +ADMIN_PASSW="admin" + +USER_NICK="user" +USER_PASSW="user" + +## -# Install virtualbox guest additions -sudo apt-get install virtualbox-guest-x11 +echo "Friendica configuration settings" +apt-get update #Selfsigned cert echo ">>> Installing *.xip.io self-signed SSL" @@ -16,41 +26,47 @@ DOMAIN="*.xip.io" EXTRADOMAIN="friendica.local" PASSPHRASE="vaprobash" SUBJ=" -C=US -ST=Connecticut -O=Vaprobash -localityName=New Haven -commonName=$DOMAIN +C=US/ +ST=Connecticut/ +O=Vaprobash/ +localityName=New Haven/ +commonName=$DOMAIN/ subjectAltName=DNS:$EXTRADOMAIN -organizationalUnitName= -emailAddress= " -sudo mkdir -p "$SSL_DIR" -sudo openssl genrsa -out "$SSL_DIR/xip.io.key" 4096 -sudo openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.csr" -passin pass:$PASSPHRASE -sudo openssl x509 -req -days 365 -in "$SSL_DIR/xip.io.csr" -signkey "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.crt" +mkdir -p "$SSL_DIR" +openssl genrsa -out "$SSL_DIR/xip.io.key" 4096 +openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.csr" -passin pass:$PASSPHRASE +openssl x509 -req -days 365 -in "$SSL_DIR/xip.io.csr" -signkey "$SSL_DIR/xip.io.key" -out "$SSL_DIR/xip.io.crt" #Install apache2 echo ">>> Installing Apache2 webserver" -sudo apt-get install -y apache2 -sudo a2enmod rewrite actions ssl -sudo cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost -sudo chmod guo+x /usr/local/bin/vhost - sudo vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.local - sudo a2dissite 000-default - sudo service apache2 restart +apt-get install -qq apache2 +a2enmod rewrite actions ssl +cp /vagrant/bin/dev/vagrant_vhost.sh /usr/local/bin/vhost +chmod guo+x /usr/local/bin/vhost +vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.local +a2dissite 000-default +service apache2 restart #Install php echo ">>> Installing PHP7" -sudo apt-get install -y php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml imagemagick php-imagick php-zip -sudo systemctl restart apache2 +apt-get install -qq php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml imagemagick php-imagick php-zip +systemctl restart apache2 + +echo ">>> Installing PHP8" +apt-get install -qq -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg +echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list +wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add - +apt update +apt-get install -qq php8.0 php8.0-cli php8.0-mysql php8.0-curl php8.0-gd php8.0-mbstring php8.0-xml php8.0-imagick php8.0-zip +systemctl restart apache2 #Install mysql echo ">>> Installing Mysql" -sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password root" -sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password root" -sudo apt-get install -qq mysql-server +debconf-set-selections <<< "mariadb-server mariadb-server/root_password password root" +debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password root" +apt-get install -qq mariadb-server # enable remote access # setting the mysql bind-address to allow connections from everywhere sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf @@ -68,35 +84,49 @@ $MYSQL -uroot -proot -e "FLUSH PRIVILEGES" systemctl restart mysql - #configure rudimentary mail server (local delivery only) #add Friendica accounts for local user accounts, use email address like vagrant@friendica.local, read the email with 'mail'. +echo ">>> Installing 'Local Only' postfix" debconf-set-selections <<< "postfix postfix/mailname string friendica.local" debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'" -sudo apt-get install -y postfix mailutils libmailutils-dev -sudo echo -e "friendica1: vagrant\nfriendica2: vagrant\nfriendica3: vagrant\nfriendica4: vagrant\nfriendica5: vagrant" >> /etc/aliases && sudo newaliases +apt-get install -qq postfix mailutils libmailutils-dev +echo -e "$ADMIN_NICK: vagrant\n$USER_NICK: vagrant" >> /etc/aliases && newaliases + +# Friendica needs git for fetching some dependencies +echo ">>> Installing git" +apt-get install -qq git #make the vagrant directory the docroot -sudo rm -rf /var/www/ -sudo ln -fs /vagrant /var/www +echo ">>> Symlink /var/www to /vagrant" +rm -rf /var/www/ +ln -fs /vagrant /var/www -# install deps with composer -sudo apt install unzip +# Setup Friendica cd /var/www -php bin/composer.phar install +echo ">>> Setup Friendica" -# initial config file for friendica in vagrant -cp /vagrant/util/htconfig.vagrant.php /vagrant/.htconfig.php +# copy the .htaccess-dist file to .htaccess so that rewrite rules work +cp /vagrant/.htaccess-dist /vagrant/.htaccess # create the friendica database echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot -# import test database -$MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql + +# install friendica +bin/console autoinstall -f /vagrant/mods/local.config.vagrant.php + +# add users +# (disable a bunch of validation because this is a dev install, deh, it needs invalid emails and stupid passwords) +bin/console config system disable_email_validation 1 +bin/console config system disable_password_exposed 1 +bin/console user add "$ADMIN_NICK" "$ADMIN_NICK" "$ADMIN_NICK@friendica.local" en +bin/console user password "$ADMIN_NICK" "$ADMIN_PASSW" +bin/console user add "$USER_NICK" "$USER_NICK" "$USER_NICK@friendica.local" en +bin/console user password "$USER_NICK" "$USER_PASSW" # create cronjob - activate if you have enough memory in you dev VM -echo "*/10 * * * * cd /vagrant; /usr/bin/php bin/worker.php" >> friendicacron -sudo crontab friendicacron -sudo rm friendicacron +# cronjob runs as www-data user +echo ">>> Installing cronjob" +echo "*/10 * * * * www-data cd /vagrant; /usr/bin/php bin/worker.php" >> /etc/cron.d/friendica # friendica needs write access to /tmp -sudo chmod 777 /tmp +chmod 777 /tmp