Archive for August, 2009
Updated PHP For BlueOnyx Totally Doable!
Posted by Jonathan Kinney in Development, Server Administration on August 31, 2009
Is doable really a word? I guess so, I don’t see it popping up as a misspelled word. Anyway, I have been doing some development for some clients who had a desire for more functionality with the PHP install that BlueOnyx uses. Well that is a complicated bag of monkeys, can of worms, box of cats?, or what ever, because BlueOnyx uses the installed version of PHP for the control panel, and it has modules that it needs to use that were specifically compiled against the CentOS 5.3 included PHP 5.1.6. This makes things unusual when it comes to wanting to install a newer version of PHP. These clients also wanted zip functionality, and they were specifically pointing to having it built with zip functionality, rather than the PECL based install, which was too foreign to me at the time to actually consider and present as an option. PHP 5.1.6 or 5.1.x in general did not have built in zip functionality, as it seems that there was a bit of a drop out with the maintenance of the library it depended on during that PHP version’s time, so that made things even more complicated. Staying in the PHP 5.1.x range might have been close enough for me to build as a drop in replacement without breaking the BlueOnyx control panel requirements. Another thing to consider was that a drop in replacement might run into issues with a yum update overwriting it if done wrong.
So, this left me with few options. One of the clear needs was to be able to have a different PHP install that did not disrupt the PHP version that comes with CentOS 5.3. As I saw it, I had 2 options, build a custom PHP RPM install, or build PHP from source to be placed in a different location. Building PHP from source is not as clean and easily controllable as I would prefer, but as long as good backups were made, it was worth a try. One thing I have not mentioned yet is that we have ruled out PHP 5.3, as the changes seemed to be fairly extreme from the PHP 5.1.6 install, and the changes could be much more of a headache to work through than our client or many clients would like to have to deal with just yet, so we are focusing on PHP 5.2.10.
My first attempt was to built PHP 5.2.10 from source, but specifically building it to run from a different location, which I setup in a directory on the server as “/alt/”. First thing first, due to the fact that in the source build and install step of “make install” does not really fully take into consideration any concept of installing in a different location, I needed to back up all of the RPM installed PHP related files. To do this I ran the following:
for X in `rpm -qa|grep php-`;do tar cpjf $X.backup.tar.bz2 `rpm -ql $X`;done
This will iterate through the RPM packages that are installed that contain “php-” in their package name, and then backup all files listed in that package into a tar.bz2 archive, so that if anything gets overwritten or messed with that I did not want, I could simply restore by going to the root directory and then run “tar xpjf /root/php-*.backup.tar.bz2” (or wherever the backups are stored) and I would have all the related files restored.
Now that we have the backup made, I needed a good build environment, and with our base install of BlueOnyx, there are no development packages installed, or even a compiler (a BlueOnyx security decision). So here is a list of packages that were installed to get things going, but first I would suggest doing a full yum update and reboot:
apr-devel-1.2.7-11.el5_3.1.i386
apr-util-devel-1.2.7-7.el5_3.2.i386
aspell-devel-0.60.3-7.1.i386
at-spi-1.7.11-3.el5.i386
audiofile-0.2.6-5.i386
autoconf-2.59-12.noarch
automake14-1.4p6-13.noarch
automake15-1.5-16.noarch
automake16-1.6.3-8.noarch
automake17-1.7.9-7.noarch
automake-1.9.6-2.1.noarch
avahi-0.6.16-1.el5_2.1.i386
avahi-glib-0.6.16-1.el5_2.1.i386
beecrypt-devel-4.1.2-10.1.1.i386
bison-2.3-2.1.i386
boost-1.33.1-10.el5.i386
boost-devel-1.33.1-10.el5.i386
byacc-1.9-29.2.2.i386
bzip2-devel-1.0.3-4.el5_2.i386
ccid-1.3.8-1.el5.i386
coolkey-1.1.0-6.el5.i386
coolkey-devel-1.1.0-6.el5.i386
cpp-4.1.2-44.el5.i386
cscope-15.5-15.1.el5_3.1.i386
ctags-5.6-1.1.i386
curl-devel-7.15.5-2.1.el5_3.5.i386
cvs-1.11.22-5.el5.i386
cyrus-sasl-devel-2.1.22-4.i386
db4-devel-4.3.29-9.fc6.i386
dbus-devel-1.1.2-12.el5.i386
dbus-python-0.70-7.el5.i386
desktop-file-utils-0.10-7.i386
dev86-0.16.17-2.2.i386
diffstat-1.41-1.2.3.el5.i386
dogtail-0.6.1-2.el5.noarch
doxygen-1.4.7-1.1.i386
e2fsprogs-devel-1.39-20.el5.i386
elfutils-devel-0.137-3.el5.i386
elfutils-devel-static-0.137-3.el5.i386
elfutils-libelf-devel-0.137-3.el5.i386
elfutils-libelf-devel-static-0.137-3.el5.i386
esound-0.2.36-3.i386
expat-devel-1.95.8-8.2.1.i386
flex-2.5.4a-41.fc6.i386
fontconfig-devel-2.4.1-7.el5.i386
freetype-devel-2.2.1-21.el5_3.i386
gail-1.9.2-1.fc6.i386
gamin-0.1.7-8.el5.i386
gcc-4.1.2-44.el5.i386
gcc-c++-4.1.2-44.el5.i386
gcc-gfortran-4.1.2-44.el5.i386
GConf2-2.14.0-9.el5.i386
gdb-6.8-27.el5.i386
gdbm-devel-1.8.0-26.2.1.i386
gd-devel-2.0.33-9.4.el5_1.1.i386
gettext-0.14.6-4.el5.i386
glib2-devel-2.12.3-4.el5_3.1.i386
glibc-devel-2.5-34.el5_3.1.i386
glibc-headers-2.5-34.el5_3.1.i386
gmp-devel-4.1.4-10.el5.i386
gnome-keyring-0.6.0-1.fc6.i386
gnome-mime-data-2.4.2-3.1.i386
gnome-mount-0.5-3.el5.i386
gnome-python2-2.16.0-1.fc6.i386
gnome-python2-bonobo-2.16.0-1.fc6.i386
gnome-python2-gconf-2.16.0-1.fc6.i386
gnome-python2-gnomevfs-2.16.0-1.fc6.i386
gnome-vfs2-2.16.2-4.el5.i386
gpm-devel-1.20.1-74.1.i386
hesiod-devel-3.1.0-8.i386
httpd-devel-2.2.3-22.el5.centos.2.i386
ifd-egate-0.05-15.i386
imake-1.0.2-3.i386
indent-2.2.9-14.fc6.i386
kernel-headers-2.6.18-128.4.1.el5.i386
keyutils-libs-devel-1.2-1.el5.i386
krb5-devel-1.6.1-31.el5_3.3.i386
kudzu-devel-1.2.57.1.21-1.el5.centos.i386
libacl-devel-2.2.39-3.el5.i386
libattr-devel-2.4.32-1.1.i386
libbonobo-2.16.0-1.fc6.i386
libbonoboui-2.16.0-1.fc6.i386
libcap-devel-1.10-26.i386
libc-client-devel-2004g-2.2.1.i386
libdaemon-0.10-5.el5.i386
libdrm-2.0.2-1.1.i386
libgcrypt-devel-1.2.4-1.el5.i386
libgfortran-4.1.2-44.el5.i386
libglade2-2.6.0-2.i386
libgnome-2.16.0-6.el5.i386
libgnomecanvas-2.14.0-4.1.i386
libgnomeui-2.16.0-5.el5.i386
libgomp-4.3.2-7.el5.i386
libgpg-error-devel-1.4-2.i386
libicu-3.6-5.11.4.i386
libIDL-0.8.7-1.fc6.i386
libidn-devel-0.6.5-1.1.i386
libjpeg-devel-6b-37.i386
libmcrypt-devel-2.5.8-4.el5.centos.i386
libmhash-0.9.9-SOL2.i386
libnotify-0.4.2-6.el5.i386
libogg-1.1.3-3.el5.i386
libogg-devel-1.1.3-3.el5.i386
libpfm-3.2-0.060926.4.el5.i386
libpng-devel-1.2.10-7.1.el5_3.2.i386
libselinux-devel-1.33.4-5.1.el5.i386
libsepol-devel-1.15.2-1.el5.i386
libstdc++-devel-4.1.2-44.el5.i386
libtermcap-devel-2.0.8-46.1.i386
libtool-1.5.22-6.1.i386
libusb-devel-0.1.12-5.1.i386
libuser-devel-0.54.7-2.el5.5.i386
libvorbis-1.1.2-3.el5_3.3.i386
libvorbis-devel-1.1.2-3.el5_3.3.i386
libwnck-2.16.0-4.fc6.i386
libX11-devel-1.0.3-9.el5.i386
libXau-devel-1.0.1-3.1.i386
libXaw-1.0.2-8.1.i386
libXdmcp-devel-1.0.1-2.1.i386
libXevie-1.0.1-3.1.i386
libXfontcache-1.0.2-3.1.i386
libxml2-devel-2.6.26-2.1.2.8.i386
libXmu-1.0.2-5.i386
libXpm-devel-3.5.5-3.i386
libXres-1.0.1-3.1.i386
libxslt-devel-1.1.17-2.el5_2.2.i386
libXt-1.0.2-3.1.fc6.i386
libXTrap-1.0.0-3.1.i386
libXxf86misc-1.0.1-3.1.i386
libXxf86vm-1.0.1-3.1.i386
lockdev-1.0.1-10.i386
lockdev-devel-1.0.1-10.i386
ltrace-0.5-7.45svn.el5.i386
mcrypt-2.6.7-SOL2.i386
mesa-libGL-6.5.1-7.7.el5.i386
mesa-libGL-devel-6.5.1-7.7.el5.i386
mysql-devel-5.0.45-7.el5.i386
ncurses-devel-5.5-24.20060715.i386
neon-0.25.5-10.el5.i386
net-snmp-devel-5.3.2.2-5.el5_3.2.i386
newt-devel-0.52.2-12.el5.i386
notification-daemon-0.3.5-9.el5.i386
nspr-devel-4.7.4-1.el5_3.1.i386
nss-devel-3.12.3.99.3-1.el5.centos.2.i386
openldap-devel-2.3.43-3.el5.i386
openssl-devel-0.9.8e-7.el5.i386
oprofile-0.9.3-18.el5.i386
ORBit2-2.14.3-5.el5.i386
pam-devel-0.99.6.2-5BX01.centos5.i386
patch-2.5.4-29.2.3.el5.i386
patchutils-0.2.31-2.2.2.i386
pciutils-devel-2.2.3-5.i386
pcre-devel-6.6-2.el5_1.7.i386
pcsc-lite-1.4.4-0.1.el5.i386
pcsc-lite-devel-1.4.4-0.1.el5.i386
pcsc-lite-libs-1.4.4-0.1.el5.i386
pfmon-3.2-0.060926.5.el5.i386
postgresql-devel-8.1.11-1.el5_1.1.i386
pstack-1.2-7.2.2.i386
pycairo-1.2.0-1.1.i386
pygobject2-2.12.1-5.el5.i386
pygtk2-2.10.1-12.el5.i386
pyorbit-2.14.1-1.1.i386
pyspi-0.6.1-1.el5.i386
python-devel-2.4.3-24.el5_3.6.i386
python-ldap-2.2.0-2.1.i386
python-numeric-23.7-2.2.2.i386
rcs-5.7-30.1.i386
readline-devel-5.1-1.1.i386
redhat-rpm-config-8.0.45-29.el5.noarch
rpm-build-4.4.2.3-9.el5.i386
rpm-devel-4.4.2.3-9.el5.i386
shared-mime-info-0.19-5.el5.i386
slang-devel-2.0.6-4.el5.i386
splint-3.1.1-16.el5.i386
sqlite-devel-3.3.6-2.i386
startup-notification-0.8-4.1.i386
strace-4.5.18-2.el5_3.3.i386
subversion-1.4.2-4.el5_3.1.i386
swig-1.3.29-2.el5.i386
systemtap-0.7.2-3.el5_3.i386
systemtap-runtime-0.7.2-3.el5_3.i386
texinfo-4.8-14.el5.i386
valgrind-3.2.1-6.el5.i386
xmlsec1-devel-1.2.9-8.1.i386
xorg-x11-fonts-base-7.1-2.1.el5.noarch
xorg-x11-proto-devel-7.1-9.el5.centos.i386
xorg-x11-server-utils-7.1-4.fc6.i386
xorg-x11-server-Xvfb-1.1.1-48.52.el5.i386
xorg-x11-xauth-1.0.1-2.1.i386
xorg-x11-xinit-1.0.2-15.el5.i386
xulrunner-1.9.0.12-1.el5.i386
xulrunner-devel-1.9.0.12-1.el5.i386
zlib-devel-1.2.3-3.i386
I know that is a lot of packages, but its better to have everything you might need there, just in case, and you can always grab the section from your “/var/log/yum.log” where you installed these, put it in a file called, for example “/tmp/devel-yum-packages.txt”, and then do an “rpm -e `awk ‘{ print $5 }’ /tmp/devel-yum-packages.txt`” to remove them all when you are done with them. Next I downloaded the latest .tar.bz source archive of php-5.2.10 to “/usr/src/redhat/SOURCES/” and extracted them to “/usr/src/redhat/BUILD/” and configured it with this set of configuration directives:
‘./configure’ \
‘–host=i686-pc-linux-gnu’ \
‘–build=i686-pc-linux-gnu’ \
‘–target=i386-redhat-linux-gnu’ \
‘–program-prefix=’ \
‘–prefix=/alt/usr’ \
‘–exec-prefix=/alt/usr’ \
‘–bindir=/alt/usr/bin’ \
‘–sbindir=/alt/usr/sbin’ \
‘–sysconfdir=/alt/etc’ \
‘–datadir=/alt/usr/share’ \
‘–includedir=/alt/usr/include’ \
‘–libdir=/alt/usr/lib’ \
‘–libexecdir=/alt/usr/libexec’ \
‘–localstatedir=/alt/var’ \
‘–sharedstatedir=/alt/usr/com’ \
‘–mandir=/alt/usr/share/man’ \
‘–infodir=/alt/usr/share/info’ \
‘–cache-file=config.cache’ \
‘–with-config-file-path=/etc’ \
‘–with-config-file-scan-dir=/alt/etc/php.d’ \
‘–enable-force-cgi-redirect’ \
‘–disable-debug’ \
‘–disable-rpath’ \
‘–enable-inline-optimization’ \
‘–with-bz2’ \
‘–with-db4=/usr’ \
‘–with-curl’ \
‘–with-exec-dir=/usr/bin’ \
‘–with-freetype-dir=/usr’ \
‘–with-gd’ \
‘–enable-gd-native-ttf’ \
‘–without-gdbm’ \
‘–with-gettext’ \
‘–with-ncurses’ \
‘–with-gmp’ \
‘–with-iconv’ \
‘–with-jpeg-dir=/usr’ \
‘–with-openssl’ \
‘–with-pspell’ \
‘–with-regex=system’ \
‘–with-xmlrpc=shared’ \
‘–with-pcre-regex’ \
‘–with-zlib’ \
‘–with-layout=GNU’ \
‘–enable-zip’ \
‘–enable-bcmath’ \
‘–enable-exif’ \
‘–enable-ftp’ \
‘–enable-magic-quotes’ \
‘–enable-sockets’ \
‘–enable-sysvsem’ \
‘–enable-sysvshm’ \
‘–enable-discard-path’ \
‘–enable-wddx’ \
‘–without-oci8’ \
‘–with-pear=/alt/usr/share/pear’ \
‘–with-imap=shared’ \
‘–with-imap-ssl’ \
‘–with-kerberos’ \
‘–with-ldap=shared’ \
‘–with-mysql=shared,/usr’ \
‘–with-snmp=shared,/usr’ \
‘–with-snmp=shared’ \
‘–enable-ucd-snmp-hack’ \
‘–enable-bcmath’ \
‘–enable-shmop’ \
‘–enable-calendar’ \
‘–enable-mbstring=shared’ \
‘–enable-mbregex’ \
‘–with-pic’ \
‘–with-apxs2=/usr/sbin/apxs’ \
‘–with-mysqli’ \
‘–with-mcrypt’ \
Then I just ran a “make all” and then a “make install” which got most of the files installed the way I wanted them to be, but not all of them, so I quickly restored the backups I had just created, as it replaced the old “/etc/httpd/libexec/modules/libphp5.so” and messed with the PEAR install. It also messed with the original httpd.conf, so to undo that, I ran “cat /etc/httpd/conf/httpd.conf.bak > /etc/httpd/conf/httpd.conf” to get it back, it created the .bak with the “make install” command. All in all, this process worked, but it was dirty, and I felt dirty for doing it.
After a quick shower, so I felt a little cleaner after such a dirty install method, I looked at it again. There had to be a better way. I had tested and shown that there is potential in taking some updated RPM files I found on “http://dev.centos.org/centos/5/testing/i386/” and installing them in “/alt/” with the use of rpm2cpio, and then modifying the httpd startup script so that it set the “PHPRC=” environment variable so that PHP would look for the php.ini file in a different location. But there were complications with that which I had not fully overcame. The BlueOnyx control panel uses the same apache binary and PHP binary and modules, but it uses its own apache configuration file, php.ini file, and its own init script to start it up and set specific environment variables such as “PHPRC=/etc/admserv”. It however still uses the “/etc/php.d/” directory to setup its included modules, and that was a complication I needed to avoid. So, the only cleaner choice was to find a source RPM that I can extract and modify a bit, and then build a custom set of RPM files that I can use to rpm2cpio to the “/alt/” directory.
The closest starting point to building my own RPM files seemed to be here “http://dev.centos.org/centos/5/testing/SRPMS/php-5.2.9-2.el5.centos.src.rpm”. It was only slightly off from what I was looking for, I was so happy to find that to work with. I have not worked much with building my own RPMs before, so in my time frame, I could not really toss a spec file and patches together from the ground up to build my own custom RPMs. So to get this going, I installed the source RPM file, and opened up the php.spec to see what I had to work with. It seemed fairly strait forward. All I had to do was download the newer .tar.bz2 source, and change a few version strings, and then find and modify where PHP will look for the php.d directory. So up near the top, I changed the PHP version of 5.2.9 to 5.2.10, then searched for “–with-config-file-scan-dir=” and changed that to the hard coded “/alt/etc/php.d” location that it needed to be. Then for completeness sake, I added information to the changelog:
* Thu Aug 28 2009 Jonathan Kinney <[email protected]> 5.2.10-1.el5
– update to 5.2.10
– add mcrypt
Then to build it, while in the “/usr/src/redhat” directory, I ran “rpmbuild -bb SPECS/php-BlueOnyx.spec”. Oh, yeah, and to make sure that I made it unique enough, I change the “Release:” to be “BlueOnyx%{?dist}” and then I renamed the spec file. I wanted to keep it simple enough that I could also build updated RPMs for a plain old install of CentOS 5.3 without BlueOnyx installed.
One thing I am not going to explain the details about here is the adding of mcrypt, it took a lot of hacking to get in there, basing it off of the format of the other modules already built, and taking examples from the source RPM of the 5.1.6 PHP extras, which included mcrypt. It was requested enough by clients that I wanted to take the extra time and make sure I got that in there.
The only steps left after the successful building of all those RPM files was to install it. I just copied a, similar to what is already installed, set of the newly built RPM files to “/root/RPMS/” and then I went to the “/alt/” directory and ran the following command to get the files extracted:
for X in `ls /root/RPMS/`;do rpm2cpio /root/RPMS/$X | cpio -idmv;done
Then in the “/etc/php.ini” file, I changed the “extension_dir = ” to the new location of “/alt/usr/lib/php/modules/”. The only configuration change left to do is to edit “/etc/httpd/conf.d/php.conf” and change the “LoadModule php5_module” to point to “/alt/usr/lib/httpd/modules/libphp5.so”. After restarting httpd, I was up and running with a fully featured installation of PHP 5.2.10, without a single related error logged. It is fully connected to the PHP settings that are set from the BlueOnyx control panel as it uses “/etc/php.ini”, but it gets its module includes loaded from “/alt/etc/php.d/” and the modules themselves loaded from “/alt/usr/lib/php/modules/”. I have been running things on this very server that you are pulling this website up from, for nearing a week, without problems.
Once again, I have to plug my hwVPS account running BlueOnyx, which is the only VPS account that I have used that is so seamless, I have yet to run into any issues that would bring me to want more than this type of Xen VPS.
We Are Screwed!
Posted by Jonathan Kinney in God, Life, Values on August 26, 2009
Did you know that those who intend to break the rules and laws set about today are not afraid of digital rights management? Did you know that a person who is accustom to breaking the law and shooting people with a gun will not be worried about a new gun law? Do you think a rule is going to all of a sudden mean anything to someone who cares nothing about the law in the first place? Did you know that any encryption can and will be broken, any copy protection will be thwarted and it is guaranteed to be a level playing ground shortly after any encryption or copy protection is invented? Did you know I could do anything on the internet with full knowledge that no one can track me because organizations do not cooperate or work together? Did you know that anyone could do that if they knew enough?
Where does that leave us? If less and less people believe in God, who will settle all accounts, and bring about people to experience their own values, then everything is ok, as long as we can get away with it, righ? If all the rules in the world can be gotten around at some point in time, and people only care about getting caught or not, then how can order be kept? Crime and punishment, yay, how far do you think that can really keep things going? One police officer per person, maybe that would work, but who would police the police, because I am sure there are just as many law breaking law enforcers as there are law breaking people in the general public, percentage wise. Don’t you think we would run out of money fairly quick to pay all of the law enforcement? Throw them all in prison or jail, someone might say. Do you know how much money that costs just to keep those going? Don’t you think something is missing from our equation, because if you really think it out, and follow how things are going, it does not quite work out.
I think at some point maybe some focus should be put on teaching people why it is best to follow the rules. Do you know why the rules are the way they are, or where they come from, or even why it is best to do things a certain way? I am exploring that myself. It seems that somewhere along the line, love and truth come into the picture, along with justice and good. I am no hippie, and I have a very different idea of love than what I have been hearing the world scream since childhood. I had to take some time to define things in my life, like sex, love, feelings, truth, right, wrong, and the differences of each one. I had most of them confused, and wrongly connected to each other, some leading me to another, and in wrong orders. Without God in my life, or in my world view, I think it would have been really hard or impossible to define a lot of these points. Love is most simply defined at its most pure by this, if you are willing to die for someone, then you love them. Love is not a feeling or an accident (falling in love is a little off), it is a choice, and feelings are involved, but feelings should not be your lead, or you will eventually fall out of love, and then leave. Feelings are wonderful, but they should not guide your life any more than which way the wind blows. Steering back on course, I think we take so much for granted. We are living in a world that is graced by the benefits of principalities and values and we have forgotten where it all originated. If each of us would only get a glimpse of what the world would look like if everyone held our own values, we would have to rethink things a bit. We need to know where we have come from, the origin of the good laws we hold, and we need to understand that we came from God, who designed and created us for a purpose, who knows what is best for us as a master mechanic knows his engine, and has graced us time and time again with priceless information on how were were intended to function, how things were meant to be and be done, and we should be able to make the clear connection that when things are not done the way they were intended to be done, we run into problems, ultimately leading to destruction.
Hah, as if I have all the answers. I don’t, but I would hope that people would take a moment and think about it before they have no other choice and the clear natural results come knocking.
The Hated Honest Deal
Posted by Jonathan Kinney in Business Ethics, Life on August 17, 2009
Lately I have been thinking a lot about hosting companies, customers, and what people care about, what their motives are and if an honest deal is at all appealing to many people these days. I just have been noticing a trend, which makes me sad, where honest companies asking for an honest price, can not get it anymore, because to the general public, it seems like it is asking too much. We are not talking big prices either, we are talking stuff that a kid could afford on an allowance. It just makes my skin crawl to hear someone say that for their business $45 dollars a month is just too much, and then in 2 days they spend that much money on just 2 of their 90 meals in a month, some spend that in one meal, I know I have. I am talking about business people, and people just doing it for the fun of it, they both seem to have that same outlook.
Why are people saying that it is too much? That is a good question that takes a bit to answer, and I am sure I do not have all of the aspects crystal clear, but I think I might have some of them nailed down. One of them is that larger companies who already were cash positive and had some money to work with, decided that they could diversify and start doing website hosting in addition to the services they already provided, such as domain name registration, Internet access, and many others. I am not sure if it was part of the plan to begin with, or if it just happened that they did not actually calculate how much hosting actually costs from the ground up, but they are selling their hosting for a fraction of what it actually costs, and they are eating the difference. Being that the attitude of the public in general is to watch out for themselves, not really caring about others or the impact that an unbalanced transaction has on an organization or the people that make it up, I would not at all be surprised to hear that a direct and intentional decision was made to undercut other companies pricing, for the purpose of stomping out competition (causing other companies to fail, and jobs to be lost, with hard times all around). That is just one idea that I am certain is panning out and in full play these days. I know that in some places people are able to purchase bandwidth, hardware, and datacenter space, for less, but in general this can not be big enough of an impact to explain the extreme trends seen today. There are also those people out there with very poor business planning abilities and they half-assed start a business selling hosting for insane prices before they realize that it takes more than they have to follow through with keeping the business going like that, but those die out fairly quickly. This too is a cause of the general perspective that people in the public will get from looking for hosting, but once again, I think this is minimal and not the main issue.
There are also the people involved that are the ones with the perspectives that say an honest price is too much. I guess one part of the issue with people is that they want to pay as little as they can for what ever they get. People are commended for getting a “deal” or the lowest price, as if it is a real good find and that it is great. But is it really? In the hosting industry, that question is not asked nearly enough… hell in any industry that question is not asked enough. Why does no one ask how that low price impacts the people and company that provide the service, or if it is at cost, and is a fair value?, which should be synonymous. Often the price directly reflects the quality of service, the more you pay, the more you get. No one really wants to hear that it seems. They just seem to be shooting for the lowest price and then crying foul when they do not get what they want, even if the clearest cut logic simply shows that, “well sir, you did not pay for that”, or “the amount you are paying for does not cover that level of service”. They want to believe that they will get everything they need for that lowest price they find, and so they do, and then blame the “horrible” hosting company for not honoring their delusions. Simply put, they believe what they want to believe, and then get angry when they are forced to see and deal with the reality that what they believe is not true, no matter how much they want it to be true.
People care about getting the most for the least amount of money, effort, time, and work. This is as far as their thought process goes, they do not contemplate the consequences to other companies, or the people that make them up. I can agree that today, it would be hard to calculate the actual cost of a given hosting account, especially from the end user’s point of view, but I guess my point is that even if it were as trackable as the “Dow Jones” (very interesting idea), not many people would even care enough to look. These days we seem to breed and train people to be selfish and independent, to watch out for your own interests at what ever the cost, and for the most part, to even not pay any attention to the cost or consequences of their actions. I have been that way myself, at least for most of my 31 years, but these days, things are looking a little different to me as I live life and see what that kind of attitude can do from a tiny scale to a massive scale.
In the end, I am left asking, what can an honest company do, when an honest deal is no longer appealing.
This rant was inspired by chatting with someone who was looking for hosting and had this all too common attitude. After thinking about everything he said, and evaluating his reasonings and purposes, I said this to my friend:
me: it is sad that today people do not value getting things at what they cost, they only care about getting things at the lowest cost to them, fair means nothing. Taking advantage, letting the person on the other end take a loss, that is attractive. Steal if you can get away with it, that is good to many these days. And doing things as they are intended to be done is often though as offensive to some, especially when labeling “doing things in a way they were not intended to be done” as wrong.
Loving My New hwVPS Account
Posted by Jonathan Kinney in Server Administration, Virtualization on August 7, 2009
I am settling in quite well with this hwVPS account I am using for hosting this very blog. I have set it up with BlueOnyx on CentOS 5.3, and it is simply delightful. As an employee, I could have picked any account size I wanted, but I stuck with the 512 MiB version with 1 3Ghz CPU, because I have no desire to waste resources, and I believe that will be more than adequate for my purposes, if not I can upgrade, too many people don’t get that . It is a paravirtualized Xen domU running on some truly state of the art hardware, and setup in a state of the art way. I am not saying it is not possible to be done by others, but I am saying that very few have the skill to get the performance out of the hardware like it is done here. As it stands we are riding the edge of what Linux and Xen can do, and gleefully looking forward to patches and updates as the Linux kernel writers put them in the mainstream. We are not bold enough to toss in untested code, stability is a priority. So far, stability has been perfect for my installation. Not a hiccup to mention so far, and it is at least nearing a month (July 14th) of existence.
I love Xen as a virtualization software. It is as cut and dry as it gets, so in some aspects, and some applications, it may not have as big of an advantage as perhaps the software engineering marvel that was once called Virtuozzo, which has been taken over by an evil empire, which now call themselves Parallels. I do not know its state now, but I did know at least some of the engineers involved in the creation, and they were a good passion full bunch of people driven to excellence, and now they, if they even exist today, are being cut short and corrupted by the lust for money and corporate power. Their software started gleaming with passion, and excellence, but has been declining not too long after they started. But anyway, back to my point. In the beginning when Virtuozzo was in good hands, it allowed each VPS to use a templated operating system, that actually shared the same files in such a way that Linux could simply cache that one file set, and have it be used for all of the VPS instances, talk about totally nerd cool! And another cool aspect of that setup, all of the VPS instances could mainly run off of one file set, that’s right, one 600 or so megabyte set of files for as many VPS instances as you could fit in your ram, which was in our case, back in the day, several hundred. So in some aspects, that works well, people can have their own environment to muck up and destroy, or actually use, no one can crash the hardware, only their environment. The downsides were the fine tuning of many complex memory types and resources, which could not always be used across the board with the broad uses customers had in mind for their VPS instances. The other downside was that the instance would run many modified operating system files and packages, so that it could function correctly, so a yum update to the latest version of OS was not part of the deal, and keeping up to date with yum or the like was not possible for the end user. If it were one piece of hardware, under the control of one person for a specific organized use, then that person would be able to do wonderful things, but in the real world of a hosting company, that is not the case. That is where Xen comes in. Even though the concepts are a little hard to grasp at times, and it is weird having the virtual environments so totally separate so you can not as easily spy on what they are doing or help them when something goes wrong, once you get the hang of it and enact some good policies so that you gain access to the domUs (the name of Xen’s virtual environments) if and when you need to, it works quite well. The division of the hardware’s resources is much more solid, no sharing of memory as if they all ran off the same kernel and filesystem. This solidity leads to predictability, which is a must have in planning the use of the resources. It also seems that, for example, there are not any CPU over usage issues that can effect another domU in Xen. With Xen, you can run a fully virtualized with the emulation of various devices, with various minimal hits in performance, or you can run at near 100% hardware performance with a paravirtualized OS by using various Xen specific drivers. Most mainstream Linux distributions come with these Xen specific drivers, I believe even Windows has some drivers, even though they are considered unstable.
All the technical differences aside, it is just like I am using my own hosted hardware, with the added ability to restart or reboot my hwVPS, and watch the console if it ever has an issue. I can update like any plain old Linux install should be able to do. The big difference is that I have some major high end hardware backing my system, even a high end network attached storage system that allows my hwVPS to be transferred between 2 different pieces of hardware. How much would I be paying a month? In this case, it would be 45 dollars, which is really nothing compared to the actual costs associated with having that kind of hardware at your hands. I think I will rant about the misperceptions of the general public later, along with their lofty expectations with hosting that are not actually covered by how much they pay, but they feel they are entitled to more because they are comparing with larger companies who are undercutting to gain a larger footing in the hosting industry and to stamp out other competition.
WordPress Upgrades Can Be Painfully Annoying
Posted by Jonathan Kinney in Website Software, WordPress on August 7, 2009
The day before yesterday I just updated my WordPress install to the latest, which at the time of this writing is 2.8.3, and well it was not as simple as I would have liked it. The auto-update function does not seem to work with my settings, and it seems that after reading up on what it requires to function, I an certain that many people’s PHP installations (if not most) are not going to allow it to function. It says the site’s files must be owned by the same user PHP executes as, or at least that is how I interpreted what they said in the instructions. Well that limits it to PHP installations that implement some form of suPHP or the like. Or they have all of their files owned by apache, or have some other really weird setup. Well my system does not use suPHP, and I am happy about that due to the performance differences. The manual update was strait forward, but still seemed overcomplicated, due to their not wanting to suggest anything that would hoze people’s custom changes, plugins, etc. It worked, and I am happy about that. I did have a full backup of everything just in case.
One thing I am grateful for is the fact that it will let me know when I log in to the administrative interface that there is a new version, please upgrade. I have seen too many fairly complicated PHP software applications get installed and never updated, and though that is often because people don’t actually think, look, or care in the first place, it is nice to see a feature like that to help people, who are not complete douche-bags, to keep their application up to date. If people only knew the horrible things that can happen when they apply the “set it and forget it” attitude to publicly available site software, or server software. I could tell you horror stories that would make you piss yourself, or well probably just laugh. They, as human’s have loved to do from the beginning, often get mad and blame the network administrators or web host for not being psychic and knowing that they didn’t pay attention to their ancient software and automatically update it for them. People need to own their problems, but at least a reminder helps make the need for an update clear to the person responsible, if they are actually using the software. I am sure there are ways you can even have an email sent to you when an update is needed.
The Importance of What We Don’t Know
Posted by Jonathan Kinney in God, Life, Values on August 4, 2009
It is good to acknowledge what we know, but we damn well better acknowledge what we don’t know and hold it to equal value. If we hold what we know as more important that what we don’t know, we are holding tight to such a tiny sliver of understanding and perspective, we are quite likely screwed. We would be delusional and believe that what we know is the most important things to know, and that anything we do not know is of little consequence, without anything valid to back that belief up. We would have little encouragement to learn what we do not already know because we already know what is important, and it takes effort to learn. I would also speak from experience that learning things we do not know reveals things that we believed that were not correct in the first place, and that is a painful process, but a needed part of growing as a person. I would also state that learning something new, something that we do not already know is also quite uncomfortable. If you noticed, I just listed a bunch of things that grate against our selfish desires. We want to know important things, not be missing them, because it makes us feel important. We want to sit back and effortlessly do what ever we want, effort is not attractive to us. Who relishes feeling pain of any sort, we want to live a pain free existence, for some of us that is a major goal in life. Most of us hold high a lifestyle of comfort, we would rather our seats not be lumpy, or that we be cool on a hot on a summer car trip, and dread the though of being sticky at the end of a hot sweaty day. All in all, our selfishness, if given into, would totally prevent any growth, except for the uncontrollable things that happen in day to day life, and even then we hate, fear, and resist that.
Another aspect that plays into this is the fact that in play with our selfish desires, we believe what we want to believe and turn a blind eye to anything that contradicts it, depending on our level of selfishness. If we live a life holding highest the things we do know, and what we don’t know is unimportant, we will build a life on what we know, and as time goes, our vested interest in what we know will grow and grow, we may even write books on what we know. How much greater would we then defend what we know, even if all logic and truth point to us being wrong. We would turn to manipulation, sabotage, control, and other means to smash out anything that would contradict us in our world. That is another end that would totally suck, because it would mean you have grown the least, and end up being the least logical, and most emotional about what ever you believe in, no matter how devoid of truth it is. I have seen this too much, it makes me upset at times when I see people like this. They tend to also be the loudest, most publicized, as they try and convince people to believe them, and that they are right, because in their selfishness, that is what they want.
What percentage of everything there is to know do you say you have? Think about it. I would argue an unprovable argument that we would be dealing with infinity when measuring everything there is to know, but for argument sake, say there was a cap, we will put it at everything that everyone in the world knows about the functioning of the universe and everything in it. If you were super conceited and delusional you might say you could know at this point in time 50% of everything. Now with it in those terms, which is more important, what you know, or what you don’t know? In what areas of understanding would you assign that part you do not know, and really how would you know? isn’t that sorta the bummer dealing with what you don’t know, you also do not know what areas of knowledge or understanding you can assign it? I would argue that the odds are high that as a child to where you are now, you have not been lead to learn the most important things in life, considering how common it is to find people asking questions relating to that all the time. I myself have asked what the purpose of life is, I have even asked God to tell me a real reason to live, something that is worth something. Breathing for breathing’s sake is worthless, I would even argue that fun and pleasure are worthless and fleeting, they are a part of life, but that is not enough for me to live for.
If we could just realize, that it is of very high importance that we value what we do not know, equally with what we do know, then perhaps we could grow. I think selfishness is at the core of it. How do we deal with that one…. Perhaps that is where God comes in. Love is the opposite of selfishness, and maybe we just need to see more of Him, and that will help subside the selfishness so that we can grow. We only live 100 years, few even that long, and yet fewer past. I want to grow as much as humanly possible in the breath that God has given me, for his will, because that gives life meaning and worth.