Line 4: |
Line 4: |
| = Components = | | = Components = |
| | | |
| + | == Setup Network == |
| + | Set the IP address for the each nic |
| | | |
− | == Web ==
| + | /etc/networks/interfaces |
| + | <pre> |
| + | # The loopback network interface |
| + | auto lo |
| + | iface lo inet loopback |
| + | |
| + | # The primary network interface |
| + | auto eth0 |
| + | iface eth0 inet static |
| + | address 10.0.0.101 |
| + | netmask 255.255.255.0 |
| + | network 10.0.0.0 |
| + | broadcast 10.0.0.255 |
| + | gateway 10.0.0.1 |
| + | |
| + | #auto eth1 |
| + | iface eth1 inet static |
| + | address 10.0.0.201 |
| + | netmask 255.255.255.0 |
| + | network 10.0.0.0 |
| + | broadcast 10.0.0.255 |
| + | gateway 10.0.0.1 |
| + | </pre> |
| | | |
− | == Database == | + | restart the network |
− | Standard web node
| + | |
| + | /etc/init.d/networking restart |
| + | |
| + | == Install php server == |
| | | |
| ===Install needed packages=== | | ===Install needed packages=== |
− | apt-get install mysql-client-5.0 mysql-server-5.0 | + | sudo apt-get install gettext |
| + | |
| + | ===Install required php modules=== |
| + | sudo pear config-set preferred_state beta |
| + | sudo pear install Archive_Zip |
| + | |
| + | ===Create user to run scripts=== |
| + | sudo useradd -d /srv/activities activities |
| + | |
| + | Make sure that all files in /srv/activities |
| + | * has apache(web-data) user |
| + | * ''activities'' group |
| + | * group write access |
| + | * umask is 002 |
| | | |
− | ===Create database and set permissions=== | + | ===Switch to activities user=== |
− | mysqladmin -u root -p create activities
| |
− | mysql -u root -p
| |
| | | |
− | GRANT ALL ON *.* TO 'activities'@'xxx.xxx.xxx' IDENTIFIED BY 'XXXX'; | + | sudo -i -u activities |
− | exit;
| |
| | | |
− | ===Configuring database=== | + | ===Checkout ASLO sources=== |
− | /etc/mysql/my.cnf
| |
| | | |
− | <pre>
| + | git clone git://git.sugarlabs.org/slo-activities/mainline.git ~ |
− | [mysqld_safe]
| + | git checkout production -b production |
− | socket = /var/run/mysqld/mysqld.sock
| |
− | nice = 0
| |
| | | |
− | [mysqld]
| + | ===Fetch external dependencies=== |
− | # * IMPORTANT
| |
− | # If you make changes to these settings and your system uses apparmor, you may
| |
− | # also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
| |
| | | |
− | user = mysql
| + | cd ~/site/vendors/ |
− | pid-file = /var/run/mysqld/mysqld.pid
| + | svn co http://svn.mozilla.org/libs/product-details |
− | socket = /var/run/mysqld/mysqld.sock
| + | svn co http://svn.mozilla.org/libs/fizzypop.mozdev fizzypop |
− | port = 3306
| + | svn co http://svn.mozilla.org/libs/phorms |
− | basedir = /usr
| + | svn co http://svn.mozilla.org/libs/zxtm-api |
− | datadir = /var/lib/mysql
| |
− | tmpdir = /tmp
| |
− | skip-external-locking
| |
| | | |
| | | |
− | # Instead of skip-networking the default is now to listen only on
| + | ===Set up NFS mount points=== |
− | # localhost which is more compatible and is not less secure.
| + | Create directories |
− | # bind-address = 127.0.0.1
| + | mkdir -p ~/files |
| + | mkdir -p ~/staging |
| | | |
− | # * Tuning
| + | Add the following lines to the end of `/etc/fstab' |
− | #
| |
| | | |
− | tmp_table_size = 16M
| + | sunjammer.sugarlabs.org:/srv/nfs/activities/files /srv/activities/files nfs rsize=8192,wsize=8192,timeo=14,intr |
− |
| + | sunjammer.sugarlabs.org:/srv/nfs/activities/staging /srv/activities/staging nfs rsize=8192,wsize=8192,timeo=14,intr |
− | innodb_buffer_pool_size = 1024M
| |
− |
| |
− | key_buffer = 64M
| |
− | | |
− | max_allowed_packet = 16M
| |
− | thread_stack = 128K
| |
− | thread_cache_size = 8
| |
− | # This replaces the startup script and checks MyISAM tables if needed
| |
− | # the first time they are touched
| |
− | myisam-recover = BACKUP
| |
− |
| |
− | max_connections = 151
| |
− | | |
− | table_cache = 128
| |
− | #thread_concurrency = 10
| |
− |
| |
− | query_cache_limit = 2M
| |
− | query_cache_size = 32M
| |
| | | |
− | # * Logging and Replication
| + | ===First-time ASLO setup=== |
− | #
| |
− | # Both location gets rotated by the cronjob.
| |
− | # Be aware that this log type is a performance killer.
| |
− | #log = /var/log/mysql/mysql.log
| |
− | #
| |
− | # Error logging goes to syslog. This is a Debian improvement :)
| |
− | #
| |
− | # Here you can see queries with especially long duration
| |
− | log_slow_queries = /var/log/mysql/mysql-slow.log
| |
− | long_query_time = 1
| |
− | #log-queries-not-using-indexes
| |
− | #
| |
− | # The following can be used as easy to replay backup logs or for replication.
| |
− | # note: if you are setting up a replication slave, see README.Debian about
| |
− | # other settings you may need to change.
| |
− | #server-id = 1
| |
− | #log_bin = /var/log/mysql/mysql-bin.log
| |
− | expire_logs_days = 10
| |
− | max_binlog_size = 100M
| |
− | #binlog_do_db = include_database_name
| |
− | #binlog_ignore_db = include_database_name
| |
− | #
| |
− | # * InnoDB
| |
− | #
| |
− | # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
| |
− | # Read the manual for more InnoDB related options. There are many!
| |
− | # You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
| |
− | #skip-innodb
| |
− | #
| |
− | # * Federated
| |
− | #
| |
− | # The FEDERATED storage engine is disabled since 5.0.67 by default in the .cnf files
| |
− | # shipped with MySQL distributions (my-huge.cnf, my-medium.cnf, and so forth).
| |
− | #
| |
| | | |
− | #
| + | Using ''~/aslo/config.php'' as template, setup ASLO settings in file ''~/site/app/config/config.php''. Template file was configured for ''dev'' environment, switch it to production by setting ''SITE_STATE'' variable to ''production''. |
− | # Read the manual, too, if you want chroot!
| |
− | # chroot = /var/lib/mysql/
| |
− | #
| |
− | # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
| |
− | #
| |
− | # ssl-ca=/etc/mysql/cacert.pem
| |
− | # ssl-cert=/etc/mysql/server-cert.pem
| |
− | # ssl-key=/etc/mysql/server-key.pem
| |
| | | |
− | [mysqldump]
| + | Setup other env defines in file ''~/site/app/config/config-local.php'' |
− | quick
| + | define('DEBUG', 0); |
− | quote-names
| + | define('DEV', false); |
− | max_allowed_packet = 16M
| + | define('QUERY_CACHE', true); |
| | | |
− | [mysql]
| + | Create directories |
− | #no-auto-rehash # faster start of mysql but no tab completition
| + | mkdir -p ~/site/app/tmp/cache/persistent |
| + | mkdir -p ~/site/app/tmp/cache/models |
| + | mkdir -p ~/site/app/tmp/cache/views |
| + | mkdir -p ~/files/temp |
| + | mkdir -p ~/files/extracted |
| + | mkdir -p ~/data |
| | | |
− | [isamchk]
| + | Minify css/js stuff |
− | key_buffer = 16M
| + | ~/aslo/minify.py |
| | | |
− | #
| + | Merge ASLO gettext strings |
− | # * NDB Cluster
| + | ~/aslo/po-compile.sh |
− | #
| |
− | # See /usr/share/doc/mysql-server-*/README.Debian for more information.
| |
− | #
| |
− | # The following configuration is read by the NDB Data Nodes (ndbd processes)
| |
− | # not from the NDB Management Nodes (ndb_mgmd processes).
| |
− | #
| |
− | # [MYSQL_CLUSTER]
| |
− | # ndb-connectstring=127.0.0.1
| |
| | | |
| + | ===Crontab for activities user=== |
| | | |
− | #
| + | @hourly $HOME/aslo/cron/hourly |
− | # * IMPORTANT: Additional settings that can override those from this file! | + | # do not use @daily to make sure that we start job after aslo-proxy |
− | # The files must end with '.cnf', otherwise they'll be ignored.
| + | 01 08 * * * $HOME/aslo/cron/daily |
− | #
| |
− | !includedir /etc/mysql/conf.d/
| |
− | </pre>
| |
| | | |
− | ===Log Rotate=== | + | ===Create vhost=== |
− | /etc/logrotate.d/mysql-server | + | vim /etc/apache2/sites-available/activities.sl.org |
| <pre> | | <pre> |
− | # - I put everything in one block and added sharedscripts, so that mysql gets
| + | <VirtualHost *:80 *:443> |
− | # flush-logs'd only once.
| + | ServerName activities.sugarlabs.org |
− | # Else the binary logs would automatically increase by n times every day. | + | ServerAlias activities2.sugarlabs.org # for test/install |
− | # - The error log is obsolete, messages go to syslog now.
| + | ServerAdmin webmaster@sugarlabs.org |
− | /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log { | + | |
− | daily
| + | DocumentRoot /srv/activities/site/app/webroot |
− | rotate 7
| + | |
− | missingok
| + | LogFormat "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{HTTP_COOKIE}i\"" addons |
− | create 640 mysql adm
| + | CustomLog /srv/activities/data/access addons |
− | compress
| + | CustomLog /var/log/apache2/all-access.log vhost_combined |
− | sharedscripts
| + | #CustomLog /var/log/apache2/performance.log performance |
− | postrotate | + | </VirtualHost> |
− | test -x /usr/bin/mysqladmin || exit 0
| |
− |
| |
− | # If this fails, check debian.conf!
| |
− | MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
| |
− | if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
| |
− | # Really no mysqld or rather a missing debian-sys-maint user?
| |
− | # If this occurs and is not a error please report a bug.
| |
− | if ps cax | grep -q mysqld; then
| |
− | exit 1
| |
− | fi
| |
− | else
| |
− | $MYADMIN flush-logs
| |
− | fi
| |
− | endscript
| |
− | }
| |
| </pre> | | </pre> |
− |
| |
− | ==== Turn off database by default ====
| |
− |
| |
− | sudo update-rc.d -f mysql remove
| |