http://techwiki.co.uk/index.php?title=Moodle_Initial_Script&feed=atom&action=history
Moodle Initial Script - Revision history
2024-03-29T13:05:09Z
Revision history for this page on the wiki
MediaWiki 1.34.0
http://techwiki.co.uk/index.php?title=Moodle_Initial_Script&diff=148&oldid=prev
Adam.birds at 17:27, 30 April 2016
2016-04-30T17:27:52Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 17:27, 30 April 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l666" >Line 666:</td>
<td colspan="2" class="diff-lineno">Line 666:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category:Moodle]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Nginx]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Nginx]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:PHP]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:PHP]]</div></td></tr>
</table>
Adam.birds
http://techwiki.co.uk/index.php?title=Moodle_Initial_Script&diff=97&oldid=prev
Adam.birds: Created page with "'''Here is the Initial Script for the Moodle Stack:''' <pre> #! /bin/bash #### ## INITIAL.SH #### # ToDo # tcp window size # cherokee and stuff # at job mail support fo..."
2016-04-28T10:50:49Z
<p>Created page with "'''Here is the Initial Script for the Moodle Stack:''' <pre> #! /bin/bash #### ## INITIAL.SH #### # ToDo # tcp window size # cherokee and stuff # at job mail support fo..."</p>
<p><b>New page</b></p><div>'''Here is the Initial Script for the Moodle Stack:'''<br />
<br />
<pre><br />
#! /bin/bash<br />
####<br />
## INITIAL.SH<br />
####<br />
# ToDo<br />
# tcp window size<br />
# cherokee and stuff<br />
# at job mail support for tuning checkup<br />
# this stuff:<br />
# echo deadline > /sys/block/sda/queue/scheduler<br />
# echo noop > /sys/block/sda/queue/scheduler<br />
# cat /proc/sys/vm/swappiness<br />
# echo 0 > cat /proc/sys/vm/swappiness<br />
# sysctl -p<br />
# ktune<br />
# compcache<br />
# Dane tmpfs init<br />
# chef?!?<br />
# disable repos<br />
# gzip_vary on; https://developers.google.com/speed/docs/best-practices/caching?hl=sv#LeverageProxyCaching<br />
# sed '-' out of dbname<br />
###<br />
<br />
#### ####<br />
## Edit stuff below this point if you don't want defaults ##<br />
#### ####<br />
<br />
#Write your own domain in, just leave out the www<br />
#Can be left blank to use example.com as a standin<br />
DOMAIN=""<br />
#IP can be ext, int or write it in yourself<br />
IP="ext"<br />
#Change SSL to "yes" if you want the nginx SSL section including<br />
SSL="yes"<br />
<br />
#### ####<br />
## Don't edit stuff below here if you want the script to work ##<br />
#### ####<br />
<br />
unset HISTFILE<br />
<br />
###<br />
# Quick bc install for some of the vars<br />
###<br />
<br />
yum install bc at -y<br />
service atd start<br />
chkconfig atd on<br />
<br />
# Other utils that don't come as default<br />
yum install tcpdump lsof wget telnet -y<br />
<br />
####<br />
# Also pwgen<br />
####<br />
yum install epel-release -y<br />
yum install pwgen --enablerepo=epel -y<br />
<br />
###<br />
# Variables 'n' shit<br />
###<br />
<br />
if [ -z ${DOMAIN} ]<br />
then<br />
DOMAIN="example.com"<br />
fi<br />
<br />
if [ "$IP" = "int" ]<br />
then<br />
# '-m1' to return first match only<br />
IP=`ip a|egrep -m1 '(172\.|192.168\.|10\.0\.)'|awk '{print $2}'|sed -e 's_/.*__'`<br />
elif [ "$IP" = "ext" ]<br />
then<br />
IP=`curl -s icanhazip.com`<br />
fi<br />
<br />
ARCH=`arch`<br />
THREADCON=$(echo 2*$(grep -c "processor" /proc/cpuinfo)+2|bc)<br />
NGINXWORKER=$(grep -c "processor" /proc/cpuinfo)<br />
POOLSIZE=$(echo $(echo $(grep MemTot /proc/meminfo |awk '{print $2}')/2|bc)k)<br />
DOMNODOT=`echo $DOMAIN| sed 's/\.//g'`<br />
BACKEND=$(echo $(echo $DOMNODOT)backend)<br />
USERPASS=`pwgen -cn1`<br />
MOODLEUSER="admin-$(cat /dev/urandom | tr -dc '0-9a-zA-Z' | head -c 2)"<br />
MOODLEPASS=`pwgen -cn1`<br />
MYSQL=`echo $DOMNODOT|sed -n 's/^\(......\).*/\1/p'`<br />
MYSQL="${MYSQL}$(cat /dev/urandom | tr -dc '0-9a-zA-Z' | head -c 4)"<br />
MYSQLPASS=`pwgen -cn1`<br />
MYSQLROOTPASS=`pwgen -cn1`<br />
USERNAME=$(echo $DOMNODOT|cut -c 1-15)<br />
USERNAME="${USERNAME}$(cat /dev/urandom|tr -dc '0-9a-z'| head -c 6)"<br />
DBNAME=`echo $DOMNODOT|sed 's/-//g'`<br />
<br />
#install atomic<br />
wget -q -O - http://www.atomicorp.com/installers/atomic | sed -e '/check_input "Enable repo/d' -e 's/query=$INPUTTEXT/query="yes"/g'|NON_INT=1 sh<br />
sed -i 's/gpgcheck = 1/gpgcheck = 0/g' /etc/yum.repos.d/atomic.repo<br />
<br />
if [[ "`grep "release 7" /etc/redhat-release`" =~ "release 7" ]]; then<br />
yum -y install https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-14.ius.centos7.noarch.rpm<br />
yum -y install php56u-gd php56u-cli php56u-devel php56u-fpm php56u-process php56u-soap php56u-pecl-jsonc php56u-pdo php56u php56u-mysqlnd php56u-gmp php56u-opcache php56u-pear php56u-common php56u-xmlrpc php56u-odbc php56u-mbstring php56u-ldap php56u-pecl-jsonc-devel php56u-xml php56u-pgsql php56u-intl php56u-mcrypt openldap-devel openldap-clients openldap-servers openldap openldap-servers-sql<br />
else<br />
yum -y install https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-14.ius.centos6.noarch.rpm<br />
yum -y install php56u-gd php56u-cli php56u-devel php56u-fpm php56u-process php56u-soap php56u-pecl-jsonc php56u-pdo php56u php56u-mysqlnd php56u-gmp php56u-opcache php56u-pear php56u-common php56u-xmlrpc php56u-odbc php56u-mbstring php56u-ldap php56u-pecl-jsonc-devel php56u-xml php56u-pgsql php56u-intl php56u-mcrypt openldap-devel openldap-clients openldap-servers openldap openldap-servers-sql<br />
fi<br />
<br />
<br />
# todo install epel nicer? from their epel-release rpm?<br />
sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo<br />
<br />
#yum -y install php-mcrypt-5.3* --enablerepo=epel<br />
<br />
<br />
###<br />
# Check httpd isn't going to mess stuff up<br />
###<br />
<br />
service httpd stop<br />
chkconfig httpd off<br />
<br />
###<br />
# Same with cherokee<br />
###<br />
<br />
rpm -e --nodeps cherokee<br />
<br />
###<br />
# misc atop vim screen install<br />
###<br />
<br />
yum install atop vim-enhanced screen -y<br />
chkconfig atop on<br />
service atop start<br />
<br />
###<br />
# Time to get memcached on<br />
###<br />
yum install memcached -y<br />
service memcached start<br />
chkconfig memcached on<br />
<br />
###<br />
# And then redis...<br />
###<br />
yum -y install redis<br />
service redis start<br />
chkconfig redis on<br />
<br />
###<br />
# Now for nginx<br />
###<br />
<br />
echo "<br />
[nginx]<br />
name=nginx repo<br />
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/<br />
gpgcheck=0<br />
enabled=1<br />
" >> /etc/yum.repos.d/nginx.repo<br />
yum install nginx -y<br />
chkconfig nginx on<br />
<br />
###<br />
# Install apc/memcache<br />
# Also zlib-devel for memcache<br />
###<br />
<br />
yum install gcc make zlib-devel pcre-devel -y<br />
# need to install memcache-beta to make sure its v3.0.6 for memcache<br />
printf "\n" |pecl install memcache-beta<br />
# redis module, just in case<br />
printf "\n" |pecl install redis<br />
<br />
echo "<br />
extension=memcache.so<br />
" > /etc/php.d/memcache.ini<br />
<br />
echo "<br />
extension=redis.so<br />
" >> /etc/php.d/redis.ini<br />
<br />
<br />
###<br />
# PHP tweaks<br />
###<br />
<br />
sed -e "s_;date.timezone =_date.timezone = \"Europe/London\"_g" \<br />
-e "s/memory_limit = 128M/memory_limit = 512M/" \<br />
-e "s/max_execution_time = 30/max_execution_time = 600/" \<br />
-e "s/session.save_handler = files/session.save_handler = memcache/" \<br />
-e '/session.save_path = "\//c\session.save_path = "tcp:\/\/127.0.0.1:11211"' \<br />
-e "s/short_open_tag = Off/short_open_tag = On/"\<br />
/etc/php.ini > /etc/php.ini.new && mv -f /etc/php.ini.new /etc/php.ini<br />
<br />
#fixpath for moodle<br />
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo = 0/g' /etc/php.ini<br />
<br />
<br />
###<br />
# For testing purposes, installing mysql first<br />
###<br />
<br />
#yum install mysql mysql-server -y<br />
#service mysqld start<br />
<br />
###<br />
# Percona Swap-out<br />
###<br />
<br />
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm<br />
service mysqld stop<br />
rpm -e --nodeps mysql mysql-server<br />
cp -rp /var/lib/mysql /var/lib/mysql.copy<br />
rm -rf /var/lib/mysql<br />
yum install Percona-Server-client-56 Percona-Server-server-56 Percona-Server-shared-compat -y<br />
service mysql start<br />
chkconfig mysql on<br />
mysql_upgrade<br />
service mysql stop<br />
<br />
###<br />
# MySQL optimisations<br />
###<br />
<br />
cat /dev/null > /etc/my.cnf<br />
<br />
echo "<br />
[mysqld]<br />
datadir=/var/lib/mysql<br />
socket=/var/lib/mysql/mysql.sock<br />
user=mysql<br />
<br />
# Start of Base Moodle Optimisation<br />
innodb_flush_log_at_trx_commit = 2<br />
innodb_flush_method = O_DIRECT<br />
innodb_file_per_table<br />
innodb_thread_concurrency = $THREADCON<br />
query_cache_size = 128M<br />
query_cache_limit = 8M<br />
thread_cache_size = 64<br />
key_buffer_size = 512M<br />
max_allowed_packet = 64M<br />
table_open_cache = 512<br />
sort_buffer_size = 4M<br />
read_buffer_size = 4M<br />
read_rnd_buffer_size = 2M<br />
myisam_sort_buffer_size = 64M<br />
max_heap_table_size = 128M<br />
tmp_table_size = 128M<br />
query_cache_type = 1<br />
wait_timeout = 300<br />
max_connections = 200<br />
innodb_buffer_pool_size = $POOLSIZE<br />
# End of Base Moodle Optimisation<br />
<br />
[mysqld_safe]<br />
log-error=/var/log/mysqld.log<br />
pid-file=/var/run/mysqld/mysqld.pid<br />
<br />
[client]<br />
socket=/var/lib/mysql/mysql.sock<br />
" >> /etc/my.cnf<br />
<br />
service mysql start<br />
<br />
###<br />
# nginx shit<br />
###<br />
<br />
cat /dev/null > /etc/nginx/nginx.conf<br />
<br />
echo "<br />
user nginx;<br />
worker_processes $NGINXWORKER;<br />
error_log /var/log/nginx/error.log;<br />
pid /var/run/nginx.pid;<br />
<br />
events {<br />
worker_connections 1024;<br />
multi_accept on;<br />
use epoll;<br />
}<br />
<br />
http {<br />
include /etc/nginx/mime.types;<br />
default_type application/octet-stream;<br />
server_tokens on;<br />
<br />
log_format main '\$remote_addr - \$remote_user [\$time_local] \"\$request \"'<br />
'\$status \$body_bytes_sent \"\$http_referer\" '<br />
'\"\$http_user_agent\" \"\$http_x_forwarded_for\"'<br />
'[RT:\$request_time] [C:\$connection]';<br />
access_log /var/log/nginx/access.log main buffer=32k flush=300;<br />
<br />
sendfile on;<br />
tcp_nopush on;<br />
tcp_nodelay on;<br />
autoindex off;<br />
map \$scheme \$fastcgi_https { ## Detect when HTTPS is used<br />
default off;<br />
https on;<br />
}<br />
<br />
# Dirty fix as some Magento scripts (admin) take up-to 10 minutes!<br />
fastcgi_read_timeout 600;<br />
fastcgi_send_timeout 600;<br />
<br />
#big header fixes<br />
proxy_buffers 8 16k;<br />
proxy_buffer_size 32k;<br />
fastcgi_buffers 16 16k;<br />
fastcgi_buffer_size 32k;<br />
<br />
client_body_buffer_size 10K;<br />
client_header_buffer_size 1k;<br />
client_max_body_size 15m;<br />
large_client_header_buffers 2 1k;<br />
<br />
keepalive_timeout 60;<br />
<br />
gzip on;<br />
gzip_comp_level 9;<br />
gzip_proxied any;<br />
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;<br />
gzip_min_length 20;<br />
<br />
open_file_cache max=10000 inactive=5m;<br />
open_file_cache_valid 2m;<br />
open_file_cache_min_uses 1;<br />
open_file_cache_errors on;<br />
<br />
# Load config files from the /etc/nginx/conf.d directory<br />
include /etc/nginx/conf.d/*.conf;<br />
<br />
}<br />
" >> /etc/nginx/nginx.conf<br />
<br />
###<br />
# SSL Offloading fix<br />
###<br />
<br />
echo "<br />
if (\$http_x_forwarded_proto = \"https\") { ## Safety net to catch SSL-Offloading<br />
set \$fastcgi_https \"on\";<br />
}<br />
" >> /etc/nginx/ssl_offloading.inc<br />
<br />
<br />
###<br />
# Adding first domain<br />
###<br />
if [ "$SSL" = "no" ]; then<br />
echo "<br />
# Uncomment the server definition below should you wish to<br />
# redirect from $DOMAIN to www.$DOMAIN<br />
#server {<br />
# listen $IP;<br />
# server_name $DOMAIN;<br />
# #rewrite / \$scheme://www.\$host\$request_uri permanent;<br />
#}<br />
<br />
#<br />
# Change this backend name (and the socket pointer)<br />
# as additional virtual hosts are added. This should<br />
# point to the spawn-fcgi wrapper running as the<br />
# appropriate user.<br />
#<br />
upstream $BACKEND {<br />
server unix:/var/run/php-fcgi-$DOMNODOT.sock;<br />
}<br />
<br />
server {<br />
listen $IP:80;<br />
server_name $DOMAIN *.$DOMAIN;<br />
root /var/www/vhosts/$DOMAIN/htdocs;<br />
<br />
location / {<br />
index index.html index.php;<br />
try_files \$uri \$uri/ @handler;<br />
expires 30d;<br />
}<br />
<br />
location /app/ { deny all; }<br />
location /includes/ { deny all; }<br />
location /media/downloadable/ { deny all; }<br />
location /pkginfo/ { deny all; }<br />
location /report/config.xml { deny all; }<br />
location /var/ { deny all; }<br />
<br />
location /. {<br />
return 404;<br />
}<br />
<br />
location @handler {<br />
rewrite / /index.php;<br />
}<br />
<br />
location /dataroot/ {<br />
internal;<br />
alias /var/www/vhosts/$DOMAIN/moodledata/;<br />
}<br />
<br />
include \"ssl_offloading.inc\";<br />
<br />
location ~ [^/]\.php(/|$) {<br />
fastcgi_split_path_info ^(.+\.php)(/.+)$;<br />
fastcgi_index index.php;<br />
fastcgi_pass $BACKEND;<br />
include fastcgi_params;<br />
fastcgi_param PATH_INFO \$fastcgi_path_info;<br />
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;<br />
}<br />
<br />
}<br />
" >> /etc/nginx/conf.d/$DOMAIN.conf<br />
else<br />
echo "<br />
# Uncomment the server definition below should you wish to<br />
# redirect from $DOMAIN to www.$DOMAIN<br />
#server {<br />
# listen $IP;<br />
# server_name $DOMAIN;<br />
# #rewrite / \$scheme://www.\$host\$request_uri permanent;<br />
#}<br />
<br />
#<br />
# Change this backend name (and the socket pointer)<br />
# as additional virtual hosts are added. This should<br />
# point to the spawn-fcgi wrapper running as the<br />
# appropriate user.<br />
#<br />
upstream $BACKEND {<br />
server unix:/var/run/php-fcgi-$DOMNODOT.sock;<br />
}<br />
<br />
server {<br />
listen $IP:80;<br />
listen $IP:443 ssl;<br />
server_name $DOMAIN *.$DOMAIN;<br />
root /var/www/vhosts/$DOMAIN/htdocs;<br />
<br />
ssl_certificate /etc/nginx/ssl/$DOMAIN.crt;<br />
ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;<br />
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<br />
ssl_ciphers RC4-SHA:!HIGH:!ADH;<br />
<br />
location / {<br />
index index.html index.php;<br />
try_files \$uri \$uri/ @handler;<br />
expires 30d;<br />
}<br />
<br />
location /app/ { deny all; }<br />
location /includes/ { deny all; }<br />
location /media/downloadable/ { deny all; }<br />
location /pkginfo/ { deny all; }<br />
location /report/config.xml { deny all; }<br />
location /var/ { deny all; }<br />
<br />
location /. {<br />
return 404;<br />
}<br />
<br />
location @handler {<br />
rewrite / /index.php;<br />
}<br />
<br />
location /dataroot/ {<br />
internal;<br />
alias /var/www/vhosts/$DOMAIN/moodledata/;<br />
}<br />
<br />
include \"ssl_offloading.inc\";<br />
<br />
location ~ [^/]\.php(/|$) {<br />
fastcgi_split_path_info ^(.+\.php)(/.+)$;<br />
fastcgi_index index.php;<br />
fastcgi_pass $BACKEND;<br />
include fastcgi_params;<br />
fastcgi_param PATH_INFO \$fastcgi_path_info;<br />
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;<br />
}<br />
<br />
}<br />
" >> /etc/nginx/conf.d/$DOMAIN.conf<br />
<br />
mkdir -p /etc/nginx/ssl<br />
<br />
#generate self signed for placeholder<br />
openssl genrsa 2048 > /etc/nginx/ssl/$DOMAIN.key<br />
openssl req -new -key /etc/nginx/ssl/$DOMAIN.key -x509 -days 365 -out /etc/nginx/ssl/$DOMAIN.crt -batch<br />
fi<br />
<br />
mkdir -p /var/www/vhosts/$DOMAIN/htdocs<br />
useradd -d /var/www/vhosts/$DOMAIN -s /sbin/nologin $USERNAME<br />
echo $USERPASS|passwd --stdin $USERNAME<br />
touch /var/www/vhosts/$DOMAIN/phpfpm-slow.log<br />
touch /var/www/vhosts/$DOMAIN/phpfpm-error.log<br />
chown -R $USERNAME:$USERNAME /var/www/vhosts/$DOMAIN<br />
<br />
###<br />
# Clean up nginx<br />
###<br />
<br />
rm -f /etc/nginx/conf.d/default.conf<br />
rm -f /etc/nginx/conf.d/example_ssl.conf<br />
<br />
###<br />
# PHP time<br />
###<br />
<br />
rm -f /etc/php-fpm.d/*<br />
chkconfig php-fpm on<br />
<br />
echo "<br />
[$DOMNODOT]<br />
<br />
listen = '/var/run/php-fcgi-$DOMNODOT.sock'<br />
;listen.backlog = -1<br />
listen.allowed_clients = 127.0.0.1<br />
listen.owner = nginx<br />
listen.group = nginx<br />
;listen.mode = 0666<br />
<br />
user = $USERNAME<br />
group = $USERNAME<br />
<br />
pm = dynamic<br />
pm.max_children = 50<br />
pm.start_servers = 5<br />
pm.min_spare_servers = 5<br />
pm.max_spare_servers = 20<br />
pm.max_requests = 2000<br />
;pm.status_path = /status<br />
<br />
;ping.path = /ping<br />
;ping.response = pong<br />
<br />
;request_terminate_timeout = 0<br />
;request_slowlog_timeout = 0<br />
slowlog = /var/www/vhosts/$DOMAIN/phpfpm-slow.log<br />
<br />
;rlimit_files = 1024<br />
;rlimit_core = 0<br />
<br />
;chroot =<br />
<br />
;chdir = /var/www<br />
<br />
;catch_workers_output = yes<br />
<br />
;env[HOSTNAME] = \$HOSTNAME<br />
;env[PATH] = /usr/local/bin:/usr/bin:/bin<br />
;env[TMP] = /tmp<br />
;env[TMPDIR] = /tmp<br />
;env[TEMP] = /tmp<br />
<br />
php_admin_value[error_log] = /var/www/vhosts/$DOMAIN/phpfpm-error.log<br />
php_admin_flag[log_errors] = on<br />
" >> /etc/php-fpm.d/$DOMNODOT.conf<br />
<br />
# Segfault fix<br />
# Pretty sure this is incredibly irrelevant now, commenting out<br />
#sed -i '/RETVAL=0/ i\export ZEND_DONT_UNLOAD_MODULES=1' /etc/init.d/php-fpm<br />
<br />
###<br />
# Create a default DB<br />
###<br />
<br />
echo "CREATE DATABASE $DBNAME;" | mysql<br />
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO '$MYSQL'@'localhost' IDENTIFIED BY '$MYSQLPASS';" | mysql<br />
echo "FLUSH PRIVILEGES;" | mysql<br />
<br />
###<br />
# Set the root password for the database<br />
###<br />
<br />
echo "SET PASSWORD FOR root@'localhost' = PASSWORD('$MYSQLROOTPASS');" | mysql<br />
echo "FLUSH PRIVILEGES;" | mysql<br />
<br />
#Set .my.cnf for default login<br />
<br />
touch /root/.my.cnf<br />
cat /dev/null > /root/.my.cnf<br />
echo "<br />
[client]<br />
host = localhost<br />
user = root<br />
password = $MYSQLROOTPASS<br />
" > /root/.my.cnf<br />
mysql_upgrade<br />
<br />
###<br />
# FTP stuff<br />
###<br />
<br />
yum install vsftpd -y<br />
chkconfig vsftpd on<br />
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf<br />
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf<br />
service vsftpd start<br />
<br />
#disable atomic<br />
sed -i 's/enabled = 1/enabled = 0/' /etc/yum.repos.d/atomic.repo<br />
<br />
###<br />
# Install Moodle<br />
###<br />
<br />
wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable30/moodle-latest-30.tgz<br />
tar --strip 1 -C /var/www/vhosts/$DOMAIN/htdocs/ -xzf /tmp/moodle.tgz<br />
mkdir /var/www/vhosts/$DOMAIN/moodledata<br />
chmod 777 /var/www/vhosts/$DOMAIN/moodledata #Sorry. Moodle reccomended. will be a way around it, need to look into it.<br />
chown -R $USERNAME:$USERNAME /var/www/vhosts/$DOMAIN<br />
find /var/www/vhosts/$DOMAIN/htdocs/ -type f -exec chmod 0644 {} \;<br />
find /var/www/vhosts/$DOMAIN/htdocs/ -type d -exec chmod 0755 {} \;<br />
sudo -u $USERNAME /usr/bin/php /var/www/vhosts/$DOMAIN/htdocs/admin/cli/install.php --chmod=0777 --lang=en --wwwroot=https://$DOMAIN --dataroot=/var/www/vhosts/$DOMAIN/moodledata --dbname=$DBNAME --dbuser=$MYSQL --dbpass=$MYSQLPASS --fullname=$DOMAIN --shortname=$DOMAIN --summary=default --adminuser=$MOODLEUSER --adminpass=$MOODLEPASS --adminemail=admin@$DOMAIN --non-interactive --agree-license<br />
<br />
crontab -u $USERNAME -l | { cat; echo "* * * * * /usr/bin/php /var/www/vhosts/$DOMAIN/htdocs/admin/cli/cron.php >/dev/null"; } | crontab -u $USERNAME -<br />
<br />
sed -i "/directoryp/a\$CFG->xsendfile = 'X-Accel-Redirect';\n\$CFG->xsendfilealiases = array(\n '/dataroot/' => \$CFG->dataroot\n);" /var/www/vhosts/$DOMAIN/htdocs/config.php<br />
<br />
<br />
###<br />
# Start it all up<br />
###<br />
<br />
service nginx start<br />
service php-fpm start<br />
<br />
echo "<br />
# $DOMAIN now set up<br />
# Their username is $USERNAME<br />
# Their password is $USERPASS<br />
#<br />
# Their database name is $DBNAME<br />
# Their DB username is $MYSQL<br />
# Their DB password is $MYSQLPASS<br />
<br />
# Their Moodle admin user is $MOODLEUSER<br />
# Their Moodle admin password is $MOODLEPASS<br />
#<br />
# This file will self destruct in 24 hours.<br />
#<br />
# Note: MySQL root password set to $MYSQLROOTPASS<br />
" >> /root/finished$DOMAIN<br />
<br />
cat /root/finished$DOMAIN<br />
echo "rm -f /root/finished$DOMAIN" | at now + 24 hours<br />
<br />
if [ "$SSL" = "yes" ]<br />
then<br />
echo "<br />
# Self signed SSL certificates generated in the following location:<br />
# /etc/nginx/ssl/$DOMNODOT.key<br />
# /etc/nginx/ssl/$DOMNODOT.crt<br />
# So don't forget to replace them with legit ones<br />
" >> /root/finished$DOMAIN<br />
fi<br />
<br />
#Delete self<br />
history -c<br />
rm -f $0<br />
</pre><br />
<br />
[[Category:Nginx]]<br />
[[Category:PHP]]<br />
[[Category:Scripts]]<br />
[[Category:Bash Scripts]]<br />
[[Category:Linux]]<br />
[[Category:Contents]]</div>
Adam.birds