Meet our new SSD hosting plans

Posted in General by

Over the past few months we’ve been hard at work preparing our next generation of hosting plans. We’ve selected high-performance, pure SSD servers and we’ve carefully crafted a robust and secure software setup based on CentOS 7. Today we’re excited to launch these new plans:

  • $10/mo, 100GB pure SSD storage, 1GB RAM, 1TB bandwidth, shared servers
  • Managed cloud servers from $30/mo for 2GB of RAM

All existing customers can continue using their existing plans at their current price for as long as they like. To be migrated to a new plan just put in a migration request from the control panel.

Just like the old plans the new ones come with fully managed servers, SSH access, email and DNS hosting and a full-featured control panel to let you configure all aspects of your hosting.

Our friendly customer support team is available 24×7 to answer any questions you might have: either open a ticket or just email support@webfaction.com.

You can find all the details about our new plans on our updated website.

-
-

Fun with WebSocket: Setting up a shared drawing board

Posted in Python by

Three weeks ago we added support for WebSocket to our platform. WebSocket is a protocol providing full-duplex communications channels over a single TCP connection. It means that multiple clients can stay connected to a server and they can communicate back and forth much quicker than with the standard HTTP protocol.

One case where WebSocket is useful is when the changes made by one client need to be instantly broadcasted to the other clients.

As an example we’ve set up a shared drawing board web app where multiple people can draw on the same canvas at the same time. The tools we used are:

  1. A hosting account that supports WebSocket and Python
  2. The CherryPy Python web framework
  3. The WebSocket for Python library
  4. The jCanvas javascript library (built on top of jQuery)
  5. 300 lines of Python code for the web app itself

The source code for the drawing board is included as an example in the WebSocket-for-Python library and you can try the demo at https://demos.webfaction.com/drawing

Here is a short video showing the drawing on one device being instantly displayed on another device (after travelling via the server which was hundreds of miles away):

-
-

Security issue in the OpenSSL library (Heartbleed bug)

Posted in Control panel by

As many of you have probably heard a serious security issue (dubbed the “heartbleed bug”) was found in the OpenSSL library yesterday. This is a very serious issue as this library is used to encrypt a large percentage of the Internet’s traffic, including web and email.

The security issue could allow anybody to access parts of the encrypted traffic as well as the secret keys used to encrypt that traffic.

What we have done

As soon as we were made aware of the issue we started updating the OpenSSL version used by our various systems and we replaced the SSL certificates that we were using.

As of now all of our systems have been patched and all of our SSL certificates have been replaced.

What you should do

We are not aware of any data having been compromised but there is a possibility that some may have been so as a precaution we recommend making the following changes:

  1. If you are using SSL certificates for your sites there is a risk that your certificates have been compromised. So we recommend that you ask your certificate provider to re-issue your certificates and then open a ticket for us to replace your certificates with the new ones.
  2. Once you have replaced your SSL certificate, you should consider that the data secured by your old SSL certificates may have been compromised. Change any passwords or other credentials that were encrypted by your old SSL certificates.
  3. We recommend that you change your WebFaction control panel password. Although the WebFaction control panel wasn’t vulnerable (it uses a different version of the OpenSSL library) the SSL certificate that it uses may have been compromised because it was also used by other sites which were vulnerable. So there is a small possibility that some control panel passwords may have been compromised.
  4. If you’re using phpMyAdmin or phpPgAdmin on our servers you should change these passwords.
  5. If you are using our email services we recommend that you change your email passwords.

You can find more information about the heartbleed bug at http://heartbleed.com

If you have any questions regarding this issue just open a support ticket and our team will reply to you asap.

-
-

Busy October and a $50 credit for all new services ordered

Posted in Django by

As you may have noticed October has been a busy month for WebFaction:

To finish the month in style we are giving a $50 credit for all new services ordered before October 31st at midnight UTC:

New customers: just sign up between now and October 31st, pay $9.50 for the first month (or pay for longer) and enter the promo code “BUSYOCTOBER”. $50 will automatically be credited to your account.

Existing customers: add one new service to your account (or upgrade an existing service) between now and October 31st, pay for one month of that service and mention the promo code “BUSYOCTOBER”. A $50 credit will be automatically added to your account. You need to keep the new service for at least 6 months to keep the credit.

Each customer is limited to one credit only, and it is non-transferable and non-refundable.

Here is to a great October and many more great months to come!

-
-

Memory doubled!

Posted in General by

We’re excited to announce that we have doubled the memory on our base plan without changing the price: the memory quota is now 512MB instead of 256MB and the price is still $9.50/mo (or $8.50/mo if you pre-pay for one year). All existing accounts have been upgraded to the new quota.

The memory used by the operating system, web server and database servers still doesn’t count towards your memory usage.

Customers on Web418 and over can also purchase an extra 512MB of memory (for a total of 1GB) for $7/mo. Unfortunately customers on Web417 and under are still limited to 512MB of memory per account per server as these machines don’t have enough RAM to accommodate more than that. If you’re on Web417 and under and want more than 512MB of memory you can request a migration in the control panel under “Account->Server migration”.

We have also doubled the memory on our larger plans and you can now get a 2GB plan, 4GB plan or 8GB plan for $40/mo, $80/mo and $160/mo respectively (discounts apply for yearly pre-payments). See the “Account->Upgrade / downgrade” screen in the control panel for details.

Enjoy the extra memory!

-
-

Setting up the reddit app without root access

Posted in General by

We manage the servers for you which means that you don’t have to worry about setting them up and most importantly maintaining them. We provide a team of systems administrators who work around the clock to do things like applying security patches, monitoring servers, fixing server issues when they arise, building RPMs with new versions of tools and backing up your data.
For this to work smoothly we have to make sure that our servers are set up in a certain way (with some standard linux tools and some of our own tools) and it means that you don’t get root access to the servers. In practice this is rarely an issue because you can usually install anything you need in your HOME directory, even when the tools’ installation guides assume that you do have root access.

As an example we’re going to set up the reddit app on our servers. This is the code running the popular reddit.com website. Here is the app running on a WebFaction server:

reddit app on WebFaction

The list of dependencies is a bit daunting and two of the tools (the reddit app itself and Cassandra) assume that you have root access in their installation guides. Let’s follow the reddit installation guide and see how we can work around the lack of root access. There are a lot of steps to install the app but we’ll be rewarded in the end by a fast and nice-looking reddit app instance:

1. Create a “custom app” in the WebFaction control panel

The reddit app runs the Pylons web server so we go to “Domains / websites -> Applications”” in the control panel and create a “Custom application running on port”. Let’s call it “reddit”. All this does is create an empty directory names $HOME/webapps/reddit on the server and give us a port that we can use to run the app on (in this case the port is 17594). When we point a domain to that app the front Nginx server on the server will get configured to proxy all requests to that port.

2. Create a website in the control panel to point a domain to the custom app

In step 1 we created a custom app called “reddit”. The next step is to go to “Domains / websites -> Websites” in the control panel and to create a website. Let’s set it up to serve the “reddit” app at http://demo.webfactional.com.

3. Create a Postgresql database from the control panel and load the reddit SQL functions

The reddit app requires a Postgresql database. To create one we simply go to “Databases” in the control panel and create a new Postgresql database called “demo_reddit”. We take note of the password and then SSH into the server as our normal user (“demo” in this example) to load the reddit SQL functions:

[demo@web356 reddit]$ cd $HOME/webapps/reddit/reddit
[demo@web356 reddit]$ psql -U demo_reddit demo_reddit < sql/functions.sql
Password for user demo_reddit:
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE VIEW
[demo@web356 reddit]$

4. Download the reddit app code and update the config files

[demo@web356 ~]$ cd $HOME/webapps/reddit
[demo@web356 reddit]$ git clone git://github.com/reddit/reddit.git
Cloning into reddit...
remote: Counting objects: 21254, done.
remote: Compressing objects: 100% (4888/4888), done.
remote: Total 21254 (delta 17314), reused 20069 (delta 16305)
Receiving objects: 100% (21254/21254), 14.36 MiB | 3.63 MiB/s, done.
Resolving deltas: 100% (17314/17314), done.
[demo@web356 reddit]$
# Update the config file with our own settings
[demo@web356 ~]$ sed -i 's/reddit.local/demo.webfactional.com/g' $HOME/webapps/reddit/reddit/r2/example.ini
[demo@web356 ~]$ sed -i 's/db_user = reddit/db_user = demo_reddit/' $HOME/webapps/reddit/reddit/r2/example.ini
[demo@web356 ~]$ sed -i 's/db_pass = password/db_pass = secret-password/' $HOME/webapps/reddit/reddit/r2/example.ini
[demo@web356 ~]$ sed -i 's/reddit,   127.0.0.1/demo_reddit,   127.0.0.1/' $HOME/webapps/reddit/reddit/r2/example.ini

5. Setup SunJDK

The reddit app requires Cassandra which runs on Java. All WebFaction servers come with OpenJDK but in our tests Cassandra didn't seem to work with that version of Java. So we're going to install SunJDK in our HOME directory and point our JAVA_HOME environment variable to it:

 <download jdk-7u7-linux-x64.tar.gz from http://www.oracle.com/technetwork/java/javase/downloads/jdk7u7-downloads-1836413.html and place the file in $HOME on the server>
[demo@web356 ~]$ cd $HOME
[demo@web356 ~]$ tar xf jdk-7u7-linux-x64.tar.gz
[demo@web356 ~]$ export JAVA_HOME=$HOME/jdk1.7.0_07

6. Setup Cassandra

[demo@web356 ~]$ cd $HOME
[demo@web356 ~]$ wget http://apache.mesi.com.ar/cassandra/1.1.5/
        apache-cassandra-1.1.5-bin.tar.gz
[...]
2012-10-15 15:56:27 (3.97 MB/s) - apache-cassandra-1.1.5-bin.tar.gz
[demo@web356 ~]$ tar xf apache-cassandra-1.1.5-bin.tar.gz
# Tell Cassandra to put its data in $HOME/webapps/reddit/cassandra-data
[demo@web356 ~]$ mkdir $HOME/webapps/reddit/cassandra-data
[demo@web356 ~]$ sed -i 's//var/lib/cassandra/data//home/demo/webapps/reddit/cassandra-data/' $HOME/apache-cassandra-1.1.5/conf/cassandra.yaml
[demo@web356 ~]$ sed -i 's//var/lib/cassandra/data//home/demo/webapps/reddit/cassandra-data/' $HOME/apache-cassandra-1.1.5/conf/cassandra.yaml
[demo@web356 ~]$ sed -i 's//var/lib/cassandra/commitlog//home/demo/webapps/reddit/cassandra-data/commitlog/' $HOME/apache-cassandra-1.1.5/conf/cassandra.yaml
[demo@web356 ~]$ sed -i 's//var/lib/cassandra/saved_caches//home/demo/webapps/reddit/cassandra-data/saved_caches/' $HOME/apache-cassandra-1.1.5/conf/cassandra.yaml
# Start Cassandra
[demo@web356 ~]$ cd $HOME/apache-cassandra-1.1.5/bin
[demo@web356 bin]$ ./cassandra
xss =  -ea -javaagent:./../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms3980M -Xmx3980M -Xmn800M -XX:+HeapDumpOnOutOfMemoryError -Xss180k
[...]
 INFO 16:12:00,714 Node localhost/127.0.0.1 state jump to normal
 INFO 16:12:00,714 Bootstrap/Replace/Move completed! Now serving reads.

Cassandra is now running. In a production setup we would have started Cassandra in the background but in this example we started it in the foreground so we'll leave that window open and will run the next commands in a new SSH session in another window:

[demo@web356 ~]$ cd /home/demo/apache-cassandra-1.1.5/bin
[demo@web356 bin]$ ./cassandra-cli -h localhost
Connected to: "Test Cluster" on localhost/9160
Welcome to Cassandra CLI version 1.1.5

Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.

[default@unknown] create keyspace reddit;
9a890e19-4fe7-3655-afdb-95bcc7065947
Waiting for schema agreement...
... schemas agree across the cluster
[default@unknown] use reddit;
Authenticated to keyspace: reddit
[default@reddit] create column family permacache with column_type = 'Standard' and comparator = 'BytesType';
5f39dc3d-e8fc-34db-bb59-f3806851300c
Waiting for schema agreement...
... schemas agree across the cluster
[default@reddit]

Note that depending on its configuration Cassandra can use a lot of memory (1GB or more) so you will need enough memory on your account to run it.

7. Install Erlang

The reddit app requires RabbitMQ, which in turn requires Erlang. Since Erlang isn't installed globally on the WebFaction servers we'll just install it in our HOME directory:

[demo@web356 ~]$ cd
[demo@web356 ~]$ wget http://www.erlang.org/download/otp_src_R15B02.tar.gz
[...]
2012-10-16 11:18:19 (430 KB/s) - otp_src_R15B02.tar.gz
[demo@web356 ~]$ tar xf otp_src_R15B02.tar.gz
[demo@web356 ~]$ cd otp_src_R15B02
[demo@web356 otp_src_R15B02]$ mkdir $HOME/erlang
[demo@web356 otp_src_R15B02]$ ./configure --prefix=$HOME/erlang
Ignoring the --cache-file argument since it can cause the system to be erroneously configured
Disabling caching
checking build system type... x86_64-unknown-linux-gnu
[...]
                 Using fakefop to generate placeholder PDF files.

*********************************************************************
[demo@web356 otp_src_R15B02]$ make
cd erts && ERL_TOP=/home/demo/otp_src_R15B02 make NO_START_SCRIPTS=true  FLAVOR=
make[1]: Entering directory `/home/demo/otp_src_R15B02/erts'
[...]
make[2]: Leaving directory `/home/demo/otp_src_R15B02/erts/start_scripts'
make[1]: Leaving directory `/home/demo/otp_src_R15B02/erts'
[demo@web356 otp_src_R15B02]$ make install
[...]
cd erts && ERL_TOP=/home/demo/otp_src_R15B02 make NO_START_SCRIPTS=true  FLAVOR=
make[1]: Entering directory `/home/demo/otp_src_R15B02/erts'
ln -s ../lib/erlang/bin/ct_run ct_run
ln -s ../lib/erlang/bin/run_test run_test
[demo@web356 otp_src_R15B02]$ export PATH=$PATH:$HOME/erlang/bin

8. Setup RabbitMQ

[demo@web356 ~]$ cd
[demo@web356 ~]$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.7/rabbitmq-server-generic-unix-2.8.7.tar.gz
[...]
2012-10-16 13:41:53 (686 KB/s) - rabbitmq-server-generic-unix-2.8.7.tar.gz
[demo@web356 ~]$ tar xf rabbitmq-server-generic-unix-2.8.7.tar.gz
# Set a few environment variables to tell RabbitMQ to only listen to localhost
[demo@web356 ~]$ export RABBITMQ_NODENAME=rabbit@localhost
[demo@web356 ~]$ export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
[demo@web356 ~]$ export ERL_EPMD_ADDRESS=127.0.0.1
[demo@web356 ~]$ cd rabbitmq_server-2.8.7/sbin
[demo@web356 sbin]$ ./rabbitmq-server
Activating RabbitMQ plugins ...
[...]
starting notify cluster nodes                                         ...done
broker running

The RabbitMQ server is now running. Again, in a production setup we would have started it in the background but in this example we started it in the foreground so we'll leave that window open and will run the next commands in a new SSH session in another window.
The next step is to add a user in RabbitMQ:

[demo@web356 ~]$ export PATH=$PATH:/home/demo/erlang/bin
[demo@web356 ~]$ export RABBITMQ_NODENAME=rabbit@localhost
[demo@web356 ~]$ export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
[demo@web356 ~]$ export ERL_EPMD_ADDRESS=127.0.0.1
[demo@web356 ~]$ cd $HOME/rabbitmq_server-2.8.7/sbin
[demo@web356 sbin]$ ./rabbitmqctl add_user reddit reddit
Creating user "reddit" ...
...done.
[demo@web356 sbin]$ ./rabbitmqctl set_permissions -p / reddit ".*" ".*" ".*"
Setting permissions for user "reddit" in vhost "/" ...
...done.
[demo@web356 sbin]$

9. Run memcache

Memcache is already install on all WebFaction server so we just need to start an instance:

[demo@web356 ~]$ memcached

The Memcache server is now running. Since we started it in the foreground we'll leave that window open and will run the next commands in a new SSH session in another window.

10. Install Cython

[demo@web356 ~]$ cd
[demo@web356 ~]$ wget http://cython.org/release/Cython-0.17.1.tar.gz
[...]
2012-10-16 14:13:01 (2.36 MB/s) - Cython-0.17.1.tar.gz
[demo@web356 ~]$ tar xf Cython-0.17.1.tar.gz
[demo@web356 ~]$ cd Cython-0.17.1
[demo@web356 Cython-0.17.1]$ python2.7 setup.py install
Compiling module Cython.Plex.Scanners ...
[...]
Writing /home/demo/lib/python2.7/Cython-0.17.1-py2.7.egg-info
[demo@web356 Cython-0.17.1]$

11. Install PyCaptcha

[demo@web356 ~]$ cd
[demo@web356 ~]$ svn co http://svn.navi.cx/misc/trunk/pycaptcha/
A    pycaptcha/BUGS
[...]
 U   pycaptcha
Checked out revision 12529.
[demo@web356 ~]$ cd pycaptcha/
[demo@web356 pycaptcha]$ python2.7 setup.py install
running install
running build
[...]
Writing /home/demo/lib/python2.7/PyCAPTCHA-0.4-py2.7.egg-info
[demo@web356 pycaptcha]$

12. Install libmemcached-0.53 and pylibmc

The reddit app uses pylibmc which requires libmemcached-0.32 or later. Unfortunately the libmemcached version installed globally on the WebFaction servers is 0.31. So we're going to install a newer version (0.53) in our HOME directory and then build pylibmc against this newer version:

[demo@web356 ~]$ cd
[demo@web356 ~]$ wget https://launchpad.net/libmemcached/1.0/0.53/+download/libmemcached-0.53.tar.gz
[...]
2012-10-16 14:30:12 (322 KB/s) - libmemcached-0.53.tar.gz
[demo@web356 ~]$ tar xf libmemcached-0.53.tar.gz
[demo@web356 ~]$ cd libmemcached-0.53
[demo@web356 libmemcached-0.53]$ mkdir $HOME/libmemcached
[demo@web356 libmemcached-0.53]$ ./configure --prefix=$HOME/libmemcached
[...]
   * Warnings as failure:       no
---
[demo@web356 libmemcached-0.53]$ make install
[...]
make[1]: Leaving directory `/home/demo/libmemcached-0.53'
[demo@web356 libmemcached-0.53]$ export LD_LIBRARY_PATH=$HOME/libmemcached/lib
[demo@web356 libmemcached-0.53]$ cd
[demo@web356 ~]$ wget http://pypi.python.org/packages/source/p/pylibmc/pylibmc-1.2.3.tar.gz
[...]
2012-10-16 14:48:05 (390 KB/s) - pylibmc-1.2.3.tar.gz
[demo@web356 ~]$ tar xf pylibmc-1.2.3.tar.gz
[demo@web356 ~]$ cd pylibmc-1.2.3
[demo@web356 pylibmc-1.2.3]$ python2.7 --with-libmemcached=/home/demo/libmemcached/ setup.py install
running install
[..]
Writing /home/demo/lib/python2.7/pylibmc-1.2.3-py2.7.egg-info
[demo@web356 pylibmc-1.2.3]$ 

13. Install Pylons

[demo@web356 ~]$ cd
[demo@web356 ~]$ wget http://pypi.python.org/packages/source/P/Pylons/Pylons-1.0.1.tar.gz
[...]
2012-10-16 14:06:50 (2.40 MB/s) - Pylons-1.0.1.tar.gz
[demo@web356 ~]$ tar xf Pylons-1.0.1.tar.gz
[demo@web356 ~]$ cd Pylons-1.0.1
[demo@web356 Pylons-1.0.1]$ python2.7 setup.py install
[...]
Installed /home/demo/lib/python2.7/repoze.lru-0.6-py2.7.egg
Finished processing dependencies for Pylons==1.0.1
[demo@web356 Pylons-1.0.1]$

14. Build the reddit app

[demo@web356 ~]$ cd $HOME/webapps/reddit/reddit/r2
[demo@web356 r2]$ sed -i 's/PYTHON=python/PYTHON=python2.7/' Makefile
[demo@web356 r2]$ make pyx
[+] including definitions from Makefile.py
cython r2/lib/utils/_utils.pyx
[...]
gcc -pthread -shared build/temp.linux-x86_64-2.7/r2/lib/c/filters.o -L/usr/local/lib -lpython2.7 -o /home/demo/webapps/reddit/reddit/r2/Cfilters.so
touch build/pyx-buildstamp
[demo@web356 r2]$ python2.7 setup.py develop
[...]
Using /home/demo/lib/python2.7/MarkupSafe-0.15-py2.7-linux-x86_64.egg
Finished processing dependencies for r2==0.0.0dev
[demo@web356 r2]$

15. Start the reddit app

We have now installed all the dependencies and configured the reddit app with our settings. The final step is to start the reddit app on the port that was given to us in step 1:

[demo@web356 ~] cd $HOME/webapps/reddit/reddit/r2
[demo@web356 r2]$ paster serve --reload example.ini http_port=17594
Starting subprocess with file monitor
Overriding g.http_port to 17594
reddit app web356.webfaction.com:11612 started a84ad12 at 2012-10-16 15:00:28.862558
Starting server in PID 11612.
serving on 0.0.0.0:17594 view at http://127.0.0.1:17594

16. Check out our handy work

We point our browser at http://demo.webfactional.com/ and can finally get our reward:
reddit app on WebFaction

17. A bit of fun

We couldn't resist doing some basic load-testing on the app to see what kind of figures we'd get:

[demo@web356 ~]$ ab -n 1000 http://demo.webfactional.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking demo.webfactional.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx
Server Hostname:        demo.webfactional.com
Server Port:            80

Document Path:          /
Document Length:        30282 bytes

Concurrency Level:      1
Time taken for tests:   3.349 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      30607000 bytes
HTML transferred:       30282000 bytes
Requests per second:    298.63 [#/sec] (mean)
Time per request:       3.349 [ms] (mean)
Time per request:       3.349 [ms] (mean, across all concurrent requests)
Transfer rate:          8926.04 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     3    3   1.0      3      35
Waiting:        3    3   1.0      3      34
Total:          3    3   1.0      3      35

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      3
  75%      3
  80%      3
  90%      4
  95%      4
  98%      4
  99%      4
 100%     35 (longest request)
[demo@web356 ~]$

Almost 300 requests per second on a simple shared account and without any tweaking. That's a pretty good figure.

Final notes

The steps to set up an app such as the reddit app on a WebFaction shared server without root access are almost the same as the steps with root access. A few things are slightly harder (having to specify the --prefix=$HOME/tool option when compiling certain tools) but on the other hand you won't have to do all the sysadmin work that our team does: applying security patches to globally installed software, monitoring the server, fixing server issues when they arise etc.

-
-

Introducing private MySql instances

Posted in MySql by

Last November we announced that we were using cgroups on our shared servers to protect users from each other and get rid of the “bad neighbor problem”. This works great but there is still one potential problem: many apps on a server use the shared MySql instance on that server and one user can still use more MySql resources than their fair share and therefore affect all other users on that MySql instance.
To fix that problem we have added another application to our one-click installer: a private MySql instance. This sets up a private MySql instance running as your user on the server. A few points about this instance:

  • It uses the globally installed MySql binaries and libraries. This means that if a security hole is found in that version of MySql we apply the patch for you and you don’t have to do anything.
  • On Centos-6 servers (web300 and over) it runs MySql-5.5 and on Centos-5 servers it runs MySql-5.0.
  • The MySql configuration files and data files are owned by you and the MySql processes run as you. This means that you have full control over your MySql instance: you can configure it however you like and you can stop it and start it whenever you like.
  • By default you get a cronjob that monitors your MySql instance every 20 minutes and restarts it if it’s down.
  • By default you get a cronjob that dumps all the databases in that instance every 24h and another one that deletes these dumps after a week. This is because MySql recommends backing up a dump of your databases rather than directly backing up the MySql data files.
  • Note that a private MySql instance can use between 50MB and hundreds of MBs of memory depending on how it’s configured and how much data you’re storing. So if you’re going to use it for anything non-trivial we recommend getting at least 512MB of memory on your account or using one of our new 1GB, 2GB or 4GB plans.
-
-

New hosting plans available with 1GB, 2GB and 4GB of memory

Posted in General by

We’re happy to announce a new range of hosting plans, from 1GB to 4GB of application memory. You can see the details on our Features & prices page.
For these new plans we have a maximum number of accounts per server (16, 8 and 4 respectively). With our use of cgroups you are therefore guaranteed a minimum of 1/16th, 1/8th and 1/4th of all resources on the server.
If you need more than 512MB of memory but don’t want a full dedicated server then these plans might be right for you.
If you would like to upgrade your existing plan just put in a request under “Account -> Upgrade / downgrade” in the control panel and we can perform the migration for you.

-
-

World IPv6 Launch day

Posted in Control panel by

As you may have heard today is World IPv6 Launch day. A lot of companies around the world have worked hard to be IPv6-ready by today. The world is running out of IPv4 addresses and the solution is the new IPv6 protocol.

I’m happy to say that IPv6 is now supported throughout our various systems:

  • Our sites http://www.webfaction.com and https://my.webfaction.com have been available over IPv6 for some time
  • All of our Centos6 servers (web300 and over) and a subset of our Centos5 servers have IPv6 enabled. On these servers various services such as MySql, Postgresql, phpMyAdmin and phpPgAdmin are available over IPv6.
  • Our control panel now lets you specify whether you want a particular site available over IPv4 only, IPv6 only or both:

    IPv4/IPv6 choice
    Note that this option is only available if you’re on an IPv6-enabled server. If you don’t see this option and you want to enable IPv6 for your sites open a support ticket and we’ll enable IPv6 on your server.

  • Our control panel now lets you create custom AAAA DNS records for your domains:

    AAAA record

IPv6 provides 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses so we should be OK for a while…

-
-

We’re hiring!

Posted in General by

Wanna work for your favorite hosting company? Well, now’s your chance! We’re currently looking for support engineers for our US and Asia shifts. Details are available at our jobs page. What are you waiting for?!

2012-04-16: these positions have been filled, but we’re always on the lookout for good people to join our team! Feel free to send your CV and inquiries to the contact address on our jobs page.

-
-