After endless years of using the old classic WordPress Theme, i started to creating my own Theming. So it might be a little bit edgy round the corners during the next days :-). Thank you to falkh for giving me a basic start with the nice Post-Caption-Thingys :-).
Month: February 2012
Counter Update
I just finished my latest improvements to the legacy version of my counter script.
I just added the lookup for ISPs and added dynamic scaling for the axis legend.
I will now going forward to change the whole system to a more sophisticated software, e.g. using a Datawarehouse approach. The first version of the Data-Model is finished.
So from the old version (that was just some plain tables, flowing around)
I created a new Model with more Tables, connected to each other. Basically i devided the Model into a basic Fact (Count) and some Dimensions (for every Value):
With my current values (around 22k Facts), i have already to limit the facts that are queryed from the Datebase. I wrote a short script to migrate all old Datasets to the new Data-Model.
Joyent SmartOS Mysql VM Setup
I just played around with the new SmartOS from Joyent ( Homepage ). I followed a basic tutorial from a Blog called opusmagnus to setup my basic SmartOS Machine on Virtualbox. You basically just have to insert the latest iso image and startup the VM (SmartOS is a system that runs from a live Medium – an DVD- or USB Image, so all your harddisk belongs to your VMs).
I will just summarize the basic steps to setup a basic VM for Mysql (you should also read the original post here).
After you installed your VM (setup Networking/ZFS Pool – you should use >3 virtual harddisks), you login into your new system and perfom the following steps:
Check for VM-Templates to install:
# dsadm avail UUID OS PUBLISHED URN 9dd7a770-59c7-11e1-a8f6-bfd6347ab0a7 smartos 2012-02-18 sdc:sdc:percona:1.3.8 467ca742-4873-11e1-80ea-37290b38d2eb smartos 2012-02-14 sdc:sdc:smartos64:1.5.3 7ecb80f6-4872-11e1-badb-3f567348a4b1 smartos 2012-02-14 sdc:sdc:smartos:1.5.3 1796eb3a-48d3-11e1-94db-3ba91709fad9 smartos 2012-01-27 sdc:sdc:riak:1.5.5 86112bde-43c4-11e1-84df-8f7fd850d78d linux 2012-01-25 sdc:sdc:centos6:0.1.1 ... 5fef6eda-05f2-11e1-90fc-13dac5e4a347 smartos 2011-11-03 sdc:sdc:percona:1.2.2 d91f80a6-03fe-11e1-8f84-df589c77d57b smartos 2011-11-01 sdc:sdc:percona:1.2.1 ... 9199134c-dd79-11e0-8b74-1b3601ba6206 smartos 2011-09-12 sdc:sdc:riak:1.4.1 3fcf35d2-dd79-11e0-bdcd-b3c7ac8aeea6 smartos 2011-09-12 sdc:sdc:mysql:1.4.1 ... 7456f2b0-67ac-11e0-b5ec-832e6cf079d5 smartos 2011-04-15 sdc:sdc:nodejs:1.1.3 febaa412-6417-11e0-bc56-535d219f2590 smartos 2011-04-11 sdc:sdc:smartos:1.3.12
I choose a percona VM (that is a VM with MySQL and some Backup Stuff pre-install – more here).
# dsadm import a9380908-ea0e-11e0-aeee-4ba794c83c33 a9380908-ea0e-11e0-aeee-4ba794c83c33 doesnt exist. continuing with install a9380908-ea0e-11e0-aeee-4ba794c83c33 successfully installed
Then you need to create a basic VM-Config file /tmp/percona-vm:
{ "alias": "percona-vm", "brand": "joyent", "dataset_uuid": "a9380908-ea0e-11e0-aeee-4ba794c83c33", "dns_domain": "haussleiter.de", "quota": "10", "nics": [ { "nic_tag": "admin", "ip": "192.168.178.42", "netmask": "255.255.255.0", "gateway": "192.168.178.1" } ] }
You are now able to create your VM:
# vmadm create -f /tmp/percona-vm Successfully created df4108a7-c3af-4372-b959-6066c70661e9
You can check if your new VM is running:
# vmadm list UUID TYPE RAM STATE ALIAS df4108a7-c3af-4372-b959-6066c70661e9 OS 256 running percona-vm # ping 192.168.178.42 192.168.178.42 is alive
You can login in your VM (that is a Zone to be precisely with the zlogin command):
# zlogin df4108a7-c3af-4372-b959-6066c70661e9 [Connected to zone 'df4108a7-c3af-4372-b959-6066c70661e9' pts/2]
Becourse i could not found any information about the predifined MySQL Password, i just change it using standard-Mylsq CMDs:
First you need to stop the Mysql Service:
# svcadm disable mysql:percona
Then you need to start Mysql again with skipping the tables for user-credentials.
# mysqld_safe --skip-grant-tables &
Enter Mysql CMD-Tools and change the root Password:
# mysql -uroot mysql> use mysql; mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root'; mysql> flush privileges; mysql> quit;
You need to shutdown your MySQL instance:
# prstat PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP ... 10921 root 4060K 3016K cpu2 1 0 0:00:00 0.0% prstat/1 10914 root 3200K 2236K sleep 1 0 0:00:00 0.0% bash/1 10913 root 3172K 2244K sleep 1 0 0:00:00 0.0% login/1 10894 mysql 207M 37M sleep 1 0 0:00:00 0.0% mysqld/27 ...
kill 10894
You now can start the MySQL Daemon again.
# svcadm enable mysql:percona
I hope i will have time to look into more features of SmartOS. It seems to be a great System to Virtualize a lot of differend Service. It also supports virtualizing Windows VMs with KVM.
Counter Update
Before i will do the great update of my counter script (i plan to switch to Java/Play with some basic DWH Features), i just added some dynamic webpage screen rendering based on thumbalizr (have a look here)
Running a Rails 3 Application in a Sub-URI Enviroment
Sometimes you need to run your Rails (3) Application on a Sub-URI (e.g. examle.com/prod, example.com/dev). In my current Project there was a Problem with that Configuration and the Rails url-helpers (link_for, url_for, usw.) becourse the app wasn’t aware of the necessary prefix (in our example “/dev”, “/prod”).
There is always the possibility to set the apps basic URL within your app-Context. Together with setting the prefix in a System Enviroment it was possible to achieve the wanted app behaviour.
How to configure a Rails3 App with Passenger in a Sub-URI Configuration please have a look in the Phusion Passenger users guide here or in another blog post here.
The Basic Apache Configuration looks somehow like this:
<VirtualHost *:80> ServerName example.com ServerAdmin admin@example.com DocumentRoot /var/www # we added two file hardlinks from our apps public folder to /var/www/dev, /var/www/prod <Directory /var/www/prod> ... SetEnv RAILS_RELATIVE_URL_ROOT /prod ... </Directory> <Directory /var/www/dev> ... SetEnv RAILS_RELATIVE_URL_ROOT /dev ... </Directory> </VirtualHost>
The last part is to add a Before-Hook to the ApplicationController for updating the apps default_url if RAILS_RELATIVE_URL_ROOT is set:
class ApplicationController < ActionController::Base protect_from_forgery before_filter :action_set_url_options def action_set_url_options if ENV['RAILS_RELATIVE_URL_ROOT'] @host = request.host+":"+request.port.to_s+"/"+ENV['RAILS_RELATIVE_URL_ROOT'] else @host = request.host+":"+request.port.to_s end Rails.application.routes.default_url_options = { :host => @host} end end