Tutorials

Bootstraping WordPress/Nginx/PHP/MySQL on a Cheap VPS with lowendscript

One constantly posted question on LowEndBox and LowEndTalk is — how to get the same setup as LowEndBox, a WordPress site that runs on cheap VPS with 80MB of memory? Instead of doing a step-by-step explanation (damn I hate writing long blog posts), I decided to wrap it into a bash script that does it all.

NginxPHP
WordPressMySQL

It is based on my previous script here, and it has been tested on both Debian 5 “Lenny” and Ubuntu 10.04 “Lucid Lynx”. Sorry no other distributions are supported. It is currently hosted at github so feel free to branch it and tune it to your heart’s desire.

Usage

Here is a quick step by step on how to set up a WordPress blog running on Nginx, PHP/FastCGI and MySQL on a low end box. Let’s assume that you are going to set up a blog on hostname “blog.example.com“.

  1. Go and buy a cheap VPS. Yes, you know where to find cheap virtual servers under $7/month, don’t you? 🙂 I am using my 6 pound/year RackVM VPS with 128MB memory to test this script, and the performance turns out to be quite good. YMMV.

    Make sure it is either a Debian or a Ubuntu distro though.

  2. After gaining root access to your VPS,
    # wget --no-check-certificate https://github.com/lowendbox/lowendscript/raw/master/setup-debian.sh
    ...
    # bash setup-debian.sh system
    ...
    # bash setup-debian.sh exim4
    ...
    # bash setup-debian.sh nginx
    ...
    # bash setup-debian.sh mysql
    ...
    # bash setup-debian.sh php
    ...
    # bash setup-debian.sh wordpress blog.example.com
    ...
    
  3. Now altering your DNS entry to point blog.example.com to your new VPS (or alter your local /etc/hosts entry). Navigate to it from your browser, and you should be presented with WordPress set up page. Fill in your blog’s name, admin’s password and contact email, and your new WordPress is online!

    Just repeat the last step (running bash setup-debian.sh wordpress <hostname>) to set up more blogs on the same box.

That’s it!

Software Stack

It’s pretty similar to my own stack that runs LowEndBox.com.

  • dropbear to replace openssh. Invoked from xinetd.
  • inetutils-syslogd to replace rsyslog.
  • exim4 to replace sendmail (if installed). Re-configured to allow Internet delivery.
  • cron
  • nginx
  • mysql. Re-configured to remove innodb support, remove query cache and reduce key buffer size.
  • php with built-in FastCGI interface. Running only 1 child process and respawn after 5,000 requests.

The lowendscript is also

  • Removing some commonly bundled applications that should not be there in the first place for a minimal distro (apache2, sendmail, bind9, samba, nscd, etc).
  • MySQL root is given a new password (which can be found in ~root/.my.cnf)
  • Installing each WordPress site under /var/www/<hostname>. It will create appropriate database, users and password for the site.

I have to say that it is still “work in progress”, but if you want to figure out the internals please check the source code of that bash script.

Memory Usage

I am testing the same script on the following 3 systems:

  • Ubuntu 10.04 64bit (RackVM)
  • Debian 5 64bit (RackVM)
  • Debian 5 32bit (VPSGuy)

They are all showing different memory usage. I am taking the snapshot of memory usage AFTER 10 page loads on the WordPress blog that has been created to ensure PHP process is fully loaded.

Ubuntu 10.04 64bit

root@ubuntu64:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5  23300  1536 ?        Ss   06:58   0:00 init
root     10124  0.0  0.5  23576  1496 ?        Ss   07:34   0:00 dropbear -i
root     15742  0.0  0.7  17880  1944 pts/0    Ss   07:35   0:00 -bash
root     15754  0.0  0.4  14960  1084 pts/0    R+   07:35   0:00 ps aux
root     24290  0.0  0.3  12508   788 ?        S    07:22   0:00 /usr/sbin/syslo
root     24524  0.0  0.3  21064  1004 ?        Ss   07:22   0:00 cron
root     25689  0.0  0.3  19512   972 ?        Ss   07:22   0:00 /usr/sbin/xinet
mysql    26346  0.0  4.2  61812 11248 ?        Ssl  07:23   0:00 /usr/sbin/mysql
www-data 27920  0.0  2.6  87768  7048 ?        Ss   07:23   0:00 /usr/bin/php-cg
www-data 27922  0.5 15.0 122460 39432 ?        S    07:23   0:04 /usr/bin/php-cg
103      30162  0.0  0.3  44356  1000 ?        Ss   07:24   0:00 /usr/sbin/exim4
root     30267  0.0  0.3  28104   932 ?        Ss   07:24   0:00 nginx: master p
www-data 30268  0.0  0.8  28744  2196 ?        S    07:24   0:00 nginx: worker p

root@ubuntu64:~# free
             total       used       free     shared    buffers     cached
Mem:        262144     100500     161644          0          0          0
-/+ buffers/cache:     100500     161644
Swap:            0          0          0

Memory Usage: 98.1MB

Debian 5 64bit

debian64:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  10304   740 ?        Ss   12:22   0:00 init [2]
106       1414  0.0  0.3  42708  1004 ?        Ss   12:26   0:00 /usr/sbin/exim4
www-data  1655  0.0  2.5  72028  6560 ?        Ss   12:26   0:00 /usr/bin/php-cg
www-data  1657  0.9 11.7  98500 30928 ?        S    12:26   0:03 /usr/bin/php-cg
www-data  3126  0.0  0.7  28380  1912 ?        S    12:29   0:00 nginx: worker p
root      7668  0.1  0.5  23340  1528 ?        Rs   12:31   0:00 dropbear -i
root      7831  0.0  0.6  17472  1716 pts/0    Ss   12:32   0:00 -bash
root      7836  0.0  0.3  14720   980 pts/0    R+   12:32   0:00 ps aux
root     20169  0.0  0.3  18540   936 ?        Ss   12:22   0:00 /usr/sbin/cron
root     24462  0.0  0.2  12236   732 ?        S    12:25   0:00 /usr/sbin/syslo
root     25637  0.0  0.3  19256   952 ?        Ss   12:25   0:00 /usr/sbin/xinet
root     25694  0.0  0.5  28380  1552 ?        Ss   12:25   0:00 nginx: master p
root     32427  0.0  0.2   3872   588 ?        S    12:26   0:00 /bin/sh /usr/bi
mysql    32466  0.0  3.0  50420  8124 ?        Sl   12:26   0:00 /usr/sbin/mysql
root     32468  0.0  0.2   3772   592 ?        S    12:26   0:00 logger -p daemo

debian64:~# free
             total       used       free     shared    buffers     cached
Mem:        262144      61008     201136          0          0          0
-/+ buffers/cache:      61008     201136
Swap:            0          0          0

Memory Usage: 59.6MB

Debian 5 32bit

debian32:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   1980   688 ?        Ss   23:34   0:00 init [2]
root     14064  0.0  0.1   1704   512 ?        S    23:52   0:00 /bin/sh /usr/bi
mysql    14119  0.0  1.7  20056  6968 ?        Sl   23:52   0:00 /usr/sbin/mysql
root     14120  0.0  0.1   1628   536 ?        S    23:52   0:00 logger -p daemo
www-data 15968  0.0  1.2  16352  4996 ?        Ss   23:53   0:00 /usr/bin/php-cg
www-data 15971  0.5  4.7  29436 18576 ?        S    23:53   0:01 /usr/bin/php-cg
root     16040  0.0  0.3   2700  1464 ?        Rs   23:53   0:00 dropbear -i
root     16119  0.0  0.1   1880   684 ?        S    23:44   0:00 /usr/sbin/syslo
root     16133  0.0  0.3   2780  1536 pts/0    Ss   23:54   0:00 -bash
root     17728  0.0  0.2   2352   896 ?        Ss   23:45   0:00 /usr/sbin/xinet
www-data 17758  0.0  0.3   5004  1488 ?        S    23:54   0:00 nginx: worker p
root     27834  0.0  0.3   4548  1236 ?        Ss   23:47   0:00 nginx: master p
root     28146  0.0  0.2   2296   896 pts/0    R+   23:57   0:00 ps aux
102      32065  0.0  0.2   6104   900 ?        Ss   23:49   0:00 /usr/sbin/exim4

debian32:~# free
             total       used       free     shared    buffers     cached
Mem:        262144      44272     217872          0          0          0
-/+ buffers/cache:      44272     217872
Swap:            0          0          0

Memory Usage: 43.2MB

So to put that in summary form

  • Ubuntu 10.04 uses significantly more memory than Debian 5 (PHP5.3/MySQL5.1 vs. PHP5.2/MySQL5.0). So pick your distro wisely and maybe you don’t need the latest and greatest if your application does not need it.
  • 32bit also uses quite a bit less than 64bit, running exactly the same version of stack. That pretty much confirms what I posted before.

And hopefully the above script is useful for your next WordPress splog farm 😛

490 Comments

  1. LEA's avatar
    LowEndAdmin Author

    Well the young padawan — it is your opportunity to figure out exactly why it is using 500MB of memory. A simple `ps aux` would tell you a lot where all that memory went 🙂

  2. Jackk's avatar
    Jackk

    Thanks to both above -LEA’s solution worked. 🙂

  3. Minh@Minh Meo's Blog's avatar
    Minh@Minh Meo's Blog

    @LEA: ps aux. And this is result 😀

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.3  23564  1680 ?        Ss   10:17   0:00 /sbin/init
    root         2  0.0  0.0      0     0 ?        S    10:17   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    10:17   0:00 [migration/0]
    root         4  0.0  0.0      0     0 ?        S    10:17   0:00 [ksoftirqd/0]
    root         5  0.0  0.0      0     0 ?        S    10:17   0:00 [watchdog/0]
    root         6  0.0  0.0      0     0 ?        S    10:17   0:00 [events/0]
    root         7  0.0  0.0      0     0 ?        S    10:17   0:00 [cpuset]
    root         8  0.0  0.0      0     0 ?        S    10:17   0:00 [khelper]
    root         9  0.0  0.0      0     0 ?        S    10:17   0:00 [netns]
    root        10  0.0  0.0      0     0 ?        S    10:17   0:00 [async/mgr]
    root        11  0.0  0.0      0     0 ?        S    10:17   0:00 [xenwatch]
    root        12  0.0  0.0      0     0 ?        S    10:17   0:00 [xenbus]
    root        14  0.0  0.0      0     0 ?        S    10:17   0:00 [migration/1]
    root        15  0.0  0.0      0     0 ?        S    10:17   0:00 [ksoftirqd/1]
    root        16  0.0  0.0      0     0 ?        S    10:17   0:00 [watchdog/1]
    root        17  0.0  0.0      0     0 ?        S    10:17   0:00 [events/1]
    root        18  0.0  0.0      0     0 ?        S    10:17   0:00 [migration/2]
    root        19  0.0  0.0      0     0 ?        S    10:17   0:00 [ksoftirqd/2]
    root        20  0.0  0.0      0     0 ?        S    10:17   0:00 [watchdog/2]
    root        21  0.0  0.0      0     0 ?        S    10:17   0:00 [events/2]
    root        22  0.0  0.0      0     0 ?        S    10:17   0:00 [migration/3]
    root        23  0.0  0.0      0     0 ?        S    10:17   0:00 [ksoftirqd/3]
    root        24  0.0  0.0      0     0 ?        S    10:17   0:00 [watchdog/3]
    root        25  0.0  0.0      0     0 ?        S    10:17   0:00 [events/3]
    root        26  0.0  0.0      0     0 ?        S    10:17   0:00 [sync_supers]
    root        27  0.0  0.0      0     0 ?        S    10:17   0:00 [bdi-default]
    root        28  0.0  0.0      0     0 ?        S    10:17   0:00 [kintegrityd/0]
    root        29  0.0  0.0      0     0 ?        S    10:17   0:00 [kintegrityd/1]
    root        30  0.0  0.0      0     0 ?        S    10:17   0:00 [kintegrityd/2]
    root        31  0.0  0.0      0     0 ?        S    10:17   0:00 [kintegrityd/3]
    root        32  0.0  0.0      0     0 ?        S    10:17   0:00 [kblockd/0]
    root        33  0.0  0.0      0     0 ?        S    10:17   0:00 [kblockd/1]
    root        34  0.0  0.0      0     0 ?        S    10:17   0:00 [kblockd/2]
    root        35  0.0  0.0      0     0 ?        S    10:17   0:00 [kblockd/3]
    root        36  0.0  0.0      0     0 ?        S    10:17   0:00 [kseriod]
    root        41  0.0  0.0      0     0 ?        S    10:17   0:00 [khungtaskd]
    root        43  0.0  0.0      0     0 ?        S    10:17   0:00 [kswapd0]
    root        44  0.0  0.0      0     0 ?        S    10:17   0:00 [aio/0]
    root        45  0.0  0.0      0     0 ?        S    10:17   0:00 [aio/1]
    root        46  0.0  0.0      0     0 ?        S    10:17   0:00 [aio/2]
    root        47  0.0  0.0      0     0 ?        S    10:17   0:00 [aio/3]
    root        48  0.0  0.0      0     0 ?        S    10:17   0:00 [jfsIO]
    root        49  0.0  0.0      0     0 ?        S    10:17   0:00 [jfsCommit]
    root        50  0.0  0.0      0     0 ?        S    10:17   0:00 [jfsCommit]
    root        51  0.0  0.0      0     0 ?        S    10:17   0:00 [jfsCommit]
    root        52  0.0  0.0      0     0 ?        S    10:17   0:00 [jfsCommit]
    root        53  0.0  0.0      0     0 ?        S    10:17   0:00 [jfsSync]
    root        54  0.0  0.0      0     0 ?        S    10:17   0:00 [xfs_mru_cache]
    root        55  0.0  0.0      0     0 ?        S    10:17   0:00 [xfslogd/0]
    root        56  0.0  0.0      0     0 ?        S    10:17   0:00 [xfslogd/1]
    root        57  0.0  0.0      0     0 ?        S    10:17   0:00 [xfslogd/2]
    root        58  0.0  0.0      0     0 ?        S    10:17   0:00 [xfslogd/3]
    root        59  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsdatad/0]
    root        60  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsdatad/1]
    root        61  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsdatad/2]
    root        62  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsdatad/3]
    root        63  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsconvertd/0]
    root        64  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsconvertd/1]
    root        65  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsconvertd/2]
    root        66  0.0  0.0      0     0 ?        S    10:17   0:00 [xfsconvertd/3]
    root        67  0.0  0.0      0     0 ?        S    10:17   0:00 [glock_workque]
    root        68  0.0  0.0      0     0 ?        S    10:17   0:00 [glock_workque]
    root        69  0.0  0.0      0     0 ?        S    10:17   0:00 [glock_workque]
    root        70  0.0  0.0      0     0 ?        S    10:17   0:00 [glock_workque]
    root        71  0.0  0.0      0     0 ?        S    10:17   0:00 [delete_workqu]
    root        72  0.0  0.0      0     0 ?        S    10:17   0:00 [delete_workqu]
    root        73  0.0  0.0      0     0 ?        S    10:17   0:00 [delete_workqu]
    root        74  0.0  0.0      0     0 ?        S    10:17   0:00 [delete_workqu]
    root        75  0.0  0.0      0     0 ?        S<   10:17   0:00 [kslowd000]
    root        76  0.0  0.0      0     0 ?        S<   10:17   0:00 [kslowd001]
    root        77  0.0  0.0      0     0 ?        S    10:17   0:00 [crypto/0]
    root        78  0.0  0.0      0     0 ?        S    10:17   0:00 [crypto/1]
    root        79  0.0  0.0      0     0 ?        S    10:17   0:00 [crypto/2]
    root        80  0.0  0.0      0     0 ?        S    10:17   0:00 [crypto/3]
    root        83  0.0  0.0      0     0 ?        S    10:17   0:00 [net_accel/0]
    root        84  0.0  0.0      0     0 ?        S    10:17   0:00 [net_accel/1]
    root        85  0.0  0.0      0     0 ?        S    10:17   0:00 [net_accel/2]
    root        86  0.0  0.0      0     0 ?        S    10:17   0:00 [net_accel/3]
    root        87  0.0  0.0      0     0 ?        S    10:17   0:00 [sfc_netfront/]
    root        88  0.0  0.0      0     0 ?        S    10:17   0:00 [sfc_netfront/]
    root        89  0.0  0.0      0     0 ?        S    10:17   0:00 [sfc_netfront/]
    root        90  0.0  0.0      0     0 ?        S    10:17   0:00 [sfc_netfront/]
    root       180  0.0  0.0      0     0 ?        S    10:17   0:00 [kjournald]
    root       219  0.0  0.2  17292  1212 ?        S    10:17   0:00 upstart-udev-br
    root       232  0.0  0.1  16864   804 ?        S<s  10:17   0:00 udevd --daemon
    root       482  0.0  0.1   6072   652 tty4     Ss+  10:17   0:00 /sbin/getty -8
    102        486  0.0  0.1  23416   888 ?        Ss   10:17   0:00 dbus-daemon --s
    root       487  0.0  0.1   6072   656 tty5     Ss+  10:17   0:00 /sbin/getty -8
    root       491  0.0  0.1   6072   652 tty2     Ss+  10:17   0:00 /sbin/getty -8
    root       492  0.0  0.1   6072   652 tty3     Ss+  10:17   0:00 /sbin/getty -8
    root       494  0.0  0.1   6072   652 tty6     Ss+  10:17   0:00 /sbin/getty -8
    root       502  0.0  0.1  21068   896 ?        Ss   10:17   0:00 cron
    root       534  0.0  0.1   6072   656 tty1     Ss+  10:17   0:00 /sbin/getty -8
    root       552  0.0  0.0      0     0 ?        S    10:17   0:00 [flush-8:1]
    root       579  0.0  0.6  79124  3588 ?        Ss   10:21   0:00 sshd: root@pts/
    root       582 107618672  0.7 253860 3984 ?    Sl   10:21 63343744:31 /usr/sbin/
    root       661  0.0  0.3  17856  1936 pts/0    Ss   10:21   0:00 -bash
    root      7323  0.0  0.1  12520   808 ?        S    10:23   0:00 /usr/sbin/syslo
    root      7621  0.0  0.1  19524   984 ?        Ss   10:23   0:00 /usr/sbin/xinet
    104       8813  0.0  0.1  44376  1024 ?        Ss   10:30   0:00 /usr/sbin/exim4
    root      8880  0.0  0.3  28112  1672 ?        Ss   10:30   0:00 nginx: master p
    mysql     9770  0.0  1.8  60880  9920 ?        Ssl  10:30   0:00 /usr/sbin/mysql
    www-data 10122  0.0  1.3  87780  7072 ?        Ss   10:33   0:00 /usr/bin/php-cg
    www-data 10125  0.5  5.4 111928 29864 ?        S    10:33   0:00 /usr/bin/php-cg
    www-data 10178  0.0  0.3  28844  2116 ?        S    10:33   0:00 nginx: worker p
    root     10181  0.0  0.1   6072   728 ?        Ss   10:33   0:00 /sbin/getty -8
    root     10182  0.0  0.2  14972  1124 pts/0    R+   10:33   0:00 ps aux
    
  4. LEA's avatar
    LowEndAdmin Author

    Spot the odd one out 🙂 Your process pid=582 seems to be doing naughty things.

  5. Minh@Minh Meo's Blog's avatar
    Minh@Minh Meo's Blog

    That’s right! How can i solve this? I run wordpress blog with high traffic (online at the same time is 100-200)

  6. Jackk's avatar
    Jackk

    @Above – Run;

    kill 582

    And it will kill the command.

  7. Minh@Minh Meo's Blog's avatar
    Minh@Minh Meo's Blog

    @ Jack: please see pics:
    img201.imageshack.us/img201/5628/screenshot2807201022161.jpg
    img227.imageshack.us/img227/2526/screenshot2807201022160.jpg

  8. bekanosky's avatar
    bekanosky

    @minhmeo
    just wondering, why there are so many kernel processes in your ‘ps aux’ result in comment #43.

  9. Minh@Minh Meo's Blog's avatar
    Minh@Minh Meo's Blog

    @bekanosky: hard to say cos i’m newbie here 😀
    I added your Gtalk id, can you help me to install this? I will give you my vps, then you install it and write steps you did to make it running fine. Is it OK?

    Thanks!!!

  10. Rafael Martins's avatar
    Rafael Martins

    quick suggestion: install php5-fpm from the dotdeb.org repositories instead of the default PHP fastcgi implementation.

  11. bekanosky's avatar
    bekanosky

    @minhmeo
    I already write tutorial about this nginx-phpfcgi-mysql-wordpress in indonesian.
    If not lazy, i will have translated it to english.
    And i think, this lowendscript do much more than what i wrote.
    So, just make sure to execute this script properly and i’m sure it will be okay.

  12. Tom's avatar
    Tom

    57.59ram on rackvm debian

    Thanks for publishing this package, seems to work great!

  13. melf's avatar
    melf

    Admin, many thanks for the install script, please if anyone can add drupal along with?

  14. Thomas's avatar
    Thomas

    What about using a flat-file blog instead of WordPress? It may not be as powerful, but it won’t require a MySQL Server running.

  15. Maller's avatar
    Maller

    Could you add setting up phpmyadmin to the script ? cause I can’t seem to get it working on nginx ?

  16. Jackk's avatar
    Jackk

    Hello,

    The Cron system doesn’t seem to work on my system?

    Jack

  17. Raj's avatar
    Raj

    Someone smart should add a low resource SMTP/IMAPD (or POP3) addition to this stack. 🙂

  18. Jackk's avatar
    Jackk

    @Raj – In my opinion it’s easier and better to out source your email to something like Google Apps. Google Apps provide 50 emails accounts free of charge for each of your domains – each account has a massive 7GB storage space like any normal Gmail account.

    http://www.google.com/a

    Jack xD

  19. LEA's avatar
    LowEndAdmin Author

    @Minh — probably because you have read the command `free` wrong 🙂 All your cache/buffer should probably be counted as “almost-free”.

    @Raj — what Jack said. Google Apps is probably a much bettered hosted email option, unless you are providing IMAP/POP3 for clients.

  20. Erawan Arif Nugroho's avatar
    Erawan Arif Nugroho

    @LEA

    I have tried the script under my RackVM OpenVZ VPS, with Debian 5 Lenny 32bit, and the memory used is about 47Mb. I have a question, since I install the wordpress at http://www.noenoey.com, but when I open my website with http://noenoey.com, it only shows ‘Welcome to Nginx’.

    How do I set the domain, so when I open it with or without www, it still the same?
    And also, when I open the website using the IP, it shows the wordpress?

  21. Tom's avatar
    Tom

    If you change wordpress to some other CMS and you get “no input file specified.” on firefox (yes, for some reason only on firefox!) go to /etc/nginx/sites-available and erase all default info and only leave your created config in /etc/nginx/sites-enabled

  22. Raj's avatar
    Raj

    Probably true. From my knothole, I’ve got about 8 years of personal Maildir format mail and a handful of mail mailing lists that I’d like to be able to move from host to host should I find paritcular hosts’ service going downhill.

    Moving that data around is easy postfix/dovecot, but I am not aware that Google Apps has a download all/upload all feature. Does it?

    The other issue on low end boxes is spamassassin being a memory hog! I haven’t been able to get the mem usage down enough to coexist with my LAMP stack on other 128MB/256MB low end boxes.

    I’ll fiddle around with it some more, maybe I”ll come up with a little blurb to add to this one. 🙂

  23. Jackk's avatar
    Jackk

    @Raj,

    If you stuck your email with Google you wouldn’t need to move it every time you moved hosts. You could just simply keep the email in one place at all times.

  24. LEA's avatar
    LowEndAdmin Author

    @Raj — I have run my own SMTP/IMAP server for many years (since ’99) until about 2 years ago I got really fed up with it and migrate all my mails to Google App. Way too much tinkering with spam/virus filters (and SpamAssassin/ClamAV eats memory *a lot*), and just can’t resist the conversation view that Gmail provides.

    To move my years of mails in Maildir (I also used Postfix + Dovecot before) I wrote a script to scan through all files in Maildir, and use Gmail’s IMAP interface to copy the data over. Worked well. It is also possible to write something to use Gmail’s IMAP interface to continuously backup mails to your own server. I haven’t bothered though.

  25. LEA's avatar
    LowEndAdmin Author

    @Erawan — you need to put in a Nginx configuration to do the redirection. For example

    server {
      server_name noenoey.com;
      rewrite ^(.*)$ $scheme://www.noenoey.com$1 permanent;
    }
    

    @Tom — in the end I think it is a good idea to pick up some Nginx configuration syntax 🙂 No input file probably means PHP cannot find the PHP script.

  26. Minh@Minh Meo's Blog's avatar
    Minh@Minh Meo's Blog

    @LEA: Here is “free -m” resuld, is ram usage 492 😀

    root@endor:~# free -m
    total used free shared buffers cached
    Mem: 531 492 38 0 24 360
    -/+ buffers/cache: 108 422
    Swap: 511 0 511

  27. Allen's avatar
    Allen

    @Minh:

    I think you have mistaken about the result given from “free -m”
    Your total free memory should be 422.
    Though having 100+ used memory is still kinda of a bit too much?

  28. eM's avatar
    eM

    any chance updating the script with lighttpd?

Leave a Reply

Before you comment
  • Please use your hosting provider's support system for service issues.
  • Comments may be held temporarily for spam review.
  • Use <pre>...</pre> for terminal output, or link to a paste service.

Your email address will not be published. Required fields are marked *