Skip to content

Instantly share code, notes, and snippets.

@bohanyang
Last active January 4, 2019 03:15
Show Gist options
  • Save bohanyang/024edb232a175b2697398442ed78fc16 to your computer and use it in GitHub Desktop.
Save bohanyang/024edb232a175b2697398442ed78fc16 to your computer and use it in GitHub Desktop.
# Optional: php7.3-imap php7.3-ldap php7.3-pgsql php-memcached php-smbclient
sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.xyz/php/apt.gpg; \
echo "deb https://packages.sury.xyz/php $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list; \
sudo apt update; \
sudo apt upgrade -y; \
sudo apt install -y php7.3-fpm php7.3-bcmath php7.3-bz2 php7.3-curl php7.3-gd php7.3-gmp php7.3-intl php7.3-json php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-readline php7.3-sqlite3 php7.3-xml php7.3-zip php-apcu php-redis php-imagick redis-server mariadb-server nginx; \
echo "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost' AND plugin = 'unix_socket';" | sudo mysql; \
sudo mysql_secure_installation; \
sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.backup; \
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1
# SELECT User, Host, plugin FROM mysql.user;
# CREATE USER 'www-data'@'localhost' IDENTIFIED WITH 'unix_socket';
# GRANT ALL PRIVILEGES ON *.* TO 'www-data'@'localhost';
# FLUSH PRIVILEGES;
sudo systemctl restart mariadb; \
echo "CREATE USER 'nextcloud'@'localhost' IDENTIFIED WITH 'mysql_native_password'; SET PASSWORD FOR 'nextcloud'@'localhost' = PASSWORD('{{dbsecret}}'); CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';" | sudo mysql -p; \
printf "\napc.enable_cli=1\n" | sudo tee -a /etc/php/7.3/mods-available/apcu.ini; \
sudo cp /etc/php/7.3/fpm/php.ini /etc/php/7.3/fpm/php.ini.backup; \
sudo sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.enable=1/opcache.enable=1/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.enable_cli=0/opcache.enable_cli=1/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.memory_consumption=128/opcache.memory_consumption=128/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=8/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.revalidate_freq=2/opcache.revalidate_freq=1/' /etc/php/7.3/fpm/php.ini; \
sudo sed -i 's/^;opcache.save_comments=1/opcache.save_comments=1/' /etc/php/7.3/fpm/php.ini; \
sudo cp /etc/php/7.3/fpm/pool.d/www.conf /etc/php/7.3/fpm/pool.d/www.conf.backup; \
sudo sed -i 's/^;clear_env = no/clear_env = no/' /etc/php/7.3/fpm/pool.d/www.conf; \
sudo systemctl restart php7.3-fpm; \
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.backup; \
sudo sed -i 's,^# unixsocket /var/run/redis/redis.sock,unixsocket /var/run/redis/redis.sock,' /etc/redis/redis.conf; \
sudo sed -i 's,^# unixsocketperm 700,unixsocketperm 666,' /etc/redis/redis.conf; \
sudo sed -i 's,^# requirepass foobared,requirepass {{rdsecret}},' /etc/redis/redis.conf; \
sudo systemctl restart redis-server; \
git clone git@github.com:brentybh/nextcloud-nginx-config.git; \
wget https://github.com/nginx/nginx/archive/release-1.10.3.tar.gz; \
mkdir nginx-source; \
tar --extract --file=release-1.10.3.tar.gz --strip-components=1 --directory=nginx-source; \
rm release-1.10.3.tar.gz; \
cp -R /etc/nginx nginx-config; \
sudo rm -r /etc/nginx; \
sudo mkdir /etc/nginx; \
sudo cp -R nginx-source/conf/. /etc/nginx; \
sudo cp -R nextcloud-nginx-config/* /etc/nginx; \
sudo nginx -t; \
sudo systemctl reload nginx; \
sudo mkdir -p /var/data/nextcloud /var/www/nextcloud; \
wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.tar.bz2; \
sudo tar --extract --file=nextcloud-15.0.0.tar.bz2 --strip-components=1 --directory=/var/www/nextcloud; \
rm nextcloud-15.0.0.tar.bz2; \
sudo chown -R www-data:www-data /var/data/nextcloud /var/www/nextcloud
alias occ='sudo -u www-data -g www-data php /var/www/nextcloud/occ'
occ maintenance:install --database mysql --database-name nextcloud --database-user nextcloud --database-pass '{{dbsecret}}' --database-table-prefix '' --admin-user '{{username}}' --admin-pass '{{ocsecret}}' --admin-email '{{useremail}}' --data-dir /var/data/nextcloud; \
occ db:convert-filecache-bigint; \
occ config:system:set overwrite.cli.url --value='https://nextcloud.bohan.co'; \
occ config:system:set trusted_domains 0 --value=nextcloud.bohan.co; \
occ config:system:set memcache.local --value='\OC\Memcache\APCu'; \
occ config:system:set redis host --value=/var/run/redis/redis.sock; \
occ config:system:set redis port --type=integer --value=0; \
occ config:system:set redis dbindex --type=integer --value=1; \
occ config:system:set redis password --value='{{rdsecret}}'; \
occ config:system:set redis timeout --type=float --value=1.5; \
occ config:system:set memcache.locking --value='\OC\Memcache\Redis'; \
occ config:system:set mail_smtpmode --value='smtp'; \
occ config:system:set mail_smtphost --value='{{smtphost}}'; \
occ config:system:set mail_sendmailmode --value='smtp'; \
occ config:system:set mail_smtpauth --type=boolean --value='true'; \
occ config:system:set mail_smtpport --type=integer --value={{smtpport}}; \
occ config:system:set mail_smtpauthtype --value='LOGIN'; \
occ config:system:set mail_from_address --value='{{smtppreat}}'; \
occ config:system:set mail_domain --value='{{smtppostat}}'; \
occ config:system:set mail_smtpsecure --value='{{smtpsecure}}'; \
occ config:system:set mail_smtpname --value='{{smtpusername}}'; \
occ config:system:set mail_smtppassword --value='{{smtpsecret}}'
sudo tee /etc/systemd/system/nextcloud-cron.service << EOF
[Unit]
Description=Nextcloud Cron Job
[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
[Install]
WantedBy=basic.target
EOF
sudo tee /etc/systemd/system/nextcloud-cron.timer << EOF
[Unit]
Description=Run Nextcloud Cron Job Every 15 Minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=15min
Unit=nextcloud-cron.service
[Install]
WantedBy=timers.target
EOF
sudo systemctl start nextcloud-cron.timer; \
sudo systemctl enable nextcloud-cron.timer
printf "\n" >> .zshrc; \
echo "alias occ='sudo -u www-data -g www-data php /var/www/nextcloud/occ'" >> .zshrc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment