Wednesday, December 14, 2016

-c X200 amd64: New bind-key for cwm.

Hey,

Updated my -CURRENT today and found that my key bindings in cwm no longer working. Done a man cwmrc and found that binding has changed.

Previous ~/.cwmrc
=====
#bind key binding
bind 4-l    lock
=====

Now:
=====
bind-key 4-l    lock
=====


Working now like a charm. cwm rocks!

Saturday, September 17, 2016

Welcoming HPE ProLiant DL160 Gen9 as my another machine.

Hi,

Been quite some time. Been busy with work and all. And this few days I've been busy with new weapons in my IT arsenal.

I've acquired, or more correctly salvaged a HPE ProLiant DL160 Gen9 server. It's from a burnt server room which was destined to be disposed. When I got it, the server fans (3 units) was not working thus it can't boot so the company who owns it doesn't want it in production anymore. There was tar built up inside the server, so I cleaned the fans until I can make it turn so I try to boot it up and it works. The fire doesn't go anywhere near the server, it just heavy smoke was covering the server room. I cleaned the internal a bit more but need to get myself an isopropyl alcohol soon to thoroughly clean the interior.

The first OS I installed to test this system is, well, OpenBSD 6.0 amd64. As I thought, this Generation 9 system is new and there's many devices which prompted "not configured". The Matrox 200eH display has not device driver for it yet. Sorry but I forgot to get the dmesg after bare-metal install.

This DL160 Gen9 configuration is:
1x Intel E5-2623 v3 @ 3.00Ghz (4 cores)
4x 4Gb ECC RAM (I set it up to RAID 5)
4x 1Tb 2.5" SAS Drive
HPE P440 SAS Controller PCIe
1x 550w non-hotswap PSU
HPE 82Q 8Gb 2-Port PCIe Fibre Channel Host Adapter (not installed)

That's what I can remember. So after the brief test of OpenBSD, I installed Windows Server 2012 R2 trial. Figuring that as HPE should have provided all the device drivers needed for Windows (which is true), I might as well use the Hyper-V for OpenBSD, which I did. And didn't quite like it. Partly because I'm not delving deeper on how to configure the Hyper-V. Also that I keep staring at the Win Server 2012 R2 desktop, not knowing on what else to do with it. Yeah sure my company uses it in production, also I set up a few of my company's backup server with it, so I somehow need to learn it but it's not the only virtualization solution.

So I check the server's compatible OS list, got meself 2 candidate.

VMware ESXi vSphere 6.0 Update 2
XenServer 6.5

For ESXi, 6.0 is the latest version. Also HPE provided downloadable custom ISO for it. Nice. I downloaded the goodies and installed the HPE custom ISO version. My verdict:

I'm still new to this vm thingy. My DL160 have 64Gb miniSD included, so ESXi can be installed in it. As I was told that vSphere is free now, so I got meself the Free License Key. Keyed it in, just to feel what the free version can do as I know I can't afford to buy myself the Essentials or more. Installation was easy, post installation's configuration too. Web interface readily available. Then I installed OpenBSD. Didn't manage to get the network to work. Even with HPE custom ISO, which included all the necessary drivers, I somewhat feel the console respond in OpenBSD a bit sluggish. But hey, it's my first try so what do I know? My company also utilise ESXi so it's good to know there's latest ISO provided by HPE for this server.

Then for XenServer 6.5. Not the latest version. Latest is version 7 but HPE stated that they officially supporting version 6.5 as compatible. No custom ISO by HPE so I went to xenserver.org to download it. But never did install it as it needs MBR booting only. No UEFI. Which somehow I do mind.

So I went back xenserver.org and get meself XenServer 7. I read that there's no web client included so I also download Xen Orchestra, which adds nearly 500Mb additional download from XenServer's 600Mb+-. ESXi have vSphere client, so do XenServer with its XenCenter. Both both are Windows only. Which is a bummer. But ESXi's built in web interface is good and progressing. Unlike XenServer which relies on 3rd party web interface like Xen Orchestra.

Installation-wise, XenServer can be installed in UEFI which is great. But there's strong suggestion to avoid installing it to SD or USB and proceed with the local disk instead so ESXi wins this part. Getting Xen Orchestra to run also pose a problem for newbie like me. My bad. I'm using an old Innacom's Streamyx ADSL Router Modem as my home-lab router for this exciting project so I'm learning quite a few things at once.

To my surprise, Xen Orchestra runs as a vm inside XenServer. Which I thought will just add the web interface inside XenServer instead of doing that. Also to my surprise, the web interface is much better than ESXi's. Maybe because I keyed in the free license in ESXi and many feature is disabled? I'm not quite sure. Many feature are also disabled in Xen Orchestra (oh, this one is also a free version) but I read that XenServer have all the feature enabled and I can just fall back to the trusty SHH/console if I need to use it. Honestly, although the Xen Orchestra's interface is nice, I found myself lost in it quite a few times. Anyway getting a vm installed using it is not that hard. But...

But ESXi made it easy to get guest OS's ISO uploaded to host server. This is also the thing that I like about ESXi. Basically storage manipulation in ESXi is easier for me, although I don't have enough experience with this VM thingy. I can just create a directory, then upload ISO into it and install my guest OS using it. In XenServer, I have to take note of the directory's limitation (storage is in XenServer's partition etc), mkdir the directory in somewhat standard place (/var/opt/xen/ISO_Store) and then register that directory to XenServer's Storage. And to note that I already gained a bit of experience in XenServer rather than the truly trial-and-error approached in ESXi earlier, these points really shows how well, hmm can I say "user friendly" ESXi is.

Putting that aside, I made that /var/opt/xen/ISO_Store thingy happened, push my install60.iso in it then install it. Easy-peasy-lemon-squeasy. Tried UEFI installation for it but didn't manage to boot OpenBSD after installation. I'm lazy to find the solution right now so I rushed for MBR installation. Hey I need to know how good XenServer will host my OpenBSD. And it doesn't dissappoint. I'm smiling to see that the xnf0 network interface was up in dhcp. The console respond in Xen Orchestra is also fluid. Nice. Getting OpenBSD up is the most important thing. And I know for now, XenServer is the suitable place for it in my DL160 Gen9. Until OpenBSD support all those hardware in bare-metal that is. Or who knows, maybe I'll stick with vm path as this is also a great knowledge to learn.

XenServer 7 it is then. Seeing more feature enabled in free version than ESXi, I made my choice already. Will I return to ESXi? I will for learning purpose. As I'm new on these (I think I state this too many now) vm thingy, the limitation in free ESXi might not make too much impact. Or if I was given an Essentials license for free. Hah! Oh also Microsoft have a free Windows Hyper-V 2012 R2 server for download, and done downloading I am.

That's it for now. I'll write up the details of installation and configuration next when I'm not too lazy to write as I'm currently playing around with the server. Just exploring the iLO4 alone is exciting! Later!

Friday, July 15, 2016

-c X200 amd64: Odoo 9, node.js npm "Abort Trap" error.

Hi,

Updated my OBSD today and git-pulled my Odoo 9 too. So I noticed 2 things, #1, kern.usermount's setting denied. #2, pledge() enforced on node (node.js). So my Odoo's Homepage is now messed up and informing a "Could not execute commend 'lessc'" info on the top part of the Homepage. This messed the Homepage only as other page (Discuss, Calendar etc) pages are ok. When I tried running npm, I get an error.

$ npm
Abort trap (core dumped)

Also dmesg is showing W^X violation.

node(12345): mmap W^X violation

So I'm unable to update less and so on. The truth is that I'm very new to the pledge(2) thingy and I need to find informations regarding this. If you have any info, do share with me. Later.

Update:
Bah! The info regarding this was already posted looooong ago. Ouch. Sorry for this.

https://www.openbsd.org/faq/current.html#r20160527

Wednesday, June 15, 2016

-c X200 amd64: Nginx + PHP5 + PostgreSQL + Drupal 8. Headaches and joy. Finally working.

Hi,

In short, I'm happy my 3 days of headache are over. And Drupal 8 is working now (from my 2 days test.). Hey it's just an updated version from Drupal 7 (which is in package), how hard can the installation be? Yeah I thought the same, but Drupal 8 requires additional package to work properly. I'll tell you about it.

There's no Drupal 8 package available yet. But it's just a web app. Just download the tar file from official Drupal site, and extract it in /var/www/htdocs and it should be ok as I've installed Drupal 7 before.

Take note that the web server I'm using is Nginx. It's in package so I can install it.

# pkg_add nginx

Then I can start to disable httpd and enable Nginx.

# /etc/rc.d/httpd stop

Edit /etc/rc.conf.local

===== /etc/rc.conf.local starts =====
#httpd_flags=
pkg_scripts=nginx
===== /etc/rc.conf.local end =====

Then start Nginx.

# /etc/rc.d/nginx start

Drupal version is 8.1.2 now. So I download that version and extract the tar.gz file.

# tar zxvf drupal-8.1.2.tar.gz
# mv drupal-8.1.2 /var/www/htdocs/drupal8

Then I chown the folder and contents to www:daemon. Before this I just leave all website inside /var/www/htdocs to root:daemon.

# cd /var/www/htdocs
# chown -R www:daemon

Now, for the /etc/nginx/nginx.conf, I follow the nginx.conf available in Nginx Recipe site.

https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/#

Take note to change the details inside. Then I copied the default.settings.php in drupal8, for the installation.

# cd drupal8
# cp sites/default/default.settings.php sites/default/settings.php

I don't need to change anything in settings.php as the installation will take care of it. And then I open up firefox and type "drupal.example.com" to open up the drupal installation. Do make sure the PostgreSQL part of the installation is ready (user and database for Drupal 8).

The installation went through. Then I was brought the Drupal 8's front page. Nice. I try clicking on the Content link.

The website encountered an unexpected error

What the.. This error took me 3 days to figure out the solution. I uncommented error log in nginx.conf, then check the log at /var/www/logs/error.log.

2016/06/14 16:02:13 [error] 48552#0: *89 FastCGI sent in stderr: "PHP message: Uncaught PHP Exception RuntimeException: "GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler." at /htdocs/drupal8/vendor/guzzlehttp/guzzle/src/functions.php line 116" while reading response header from upstream, client: 127.0.0.1, server: drupal.example.com, request: "GET /node/add HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm.sock:", host: "drupal.example.com", referrer: "http://drupal.example.com/"


This is what I got. What GuzzleHttp? What? Searching around I found that I need to install curl. Fortunately it's in package.

# pkg_add php-curl

I choose the version similar to PHP5 version. Installed. Good. Opened drupal.example.com again. Click Content. Got the same error. What? Curl already installed!.

Doing more search and found that I need to define that curl library in /etc/php-5.6.ini. I put the details at the extension part.

===== /etc/php-5.6.ini start =====
* skipped *

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

extension=/usr/local/lib/php-5.6/modules/curl.so

* skipped *
===== / etc/php-5.6.ini end =====

Restarted both nginx & php-fpm.

# /etc/rc.d/nginx restart
# /etc/rc.d/php-fpm restart

Then check the website again. Wallah! It's working now. Yes! Ok I didn't put more info regarding PostgreSQL as I think I've already written something about it in the previous post. Somewhere.

Now the Drupal 8 is working, I can start learning the new app and do some little project that I've delayed sooooooooo long. Later.

Thursday, May 12, 2016

-c amd64 X200: Installation for Drupal 8.

Hi,

It's been quite some time. I'm busy with day's work. Ah and also my X200's battery just died. So it's immobile. It's just docked and that's it. Replacement battery or "new" thinkpad (I always buy used anyway.), I'm not sure. But not now.

Ok back to the latest project/test I'm going to do. Drupal 8 has been released, I know I'm a bit late, and it's an interesting update. So I really want to install it. Take note that I'm installing this, after I installed Drupal 7. So nearly all of the dependencies are already there. You might want to (re)visit my previous post on this at http://karlbsd.blogspot.my/2015/08/openbsd-58-c-amd64-httpd-postgresql.html.

Recap, this is httpd + Drupal 8 + PostgreSQL.

1) Download Drupal 8.
I head over to http://www.drupal.org and download the latest stable version 8.1.1 which is drupal-8.1.1.tar.gz.

2) Extract file and move to htdocs.
I tar the downloaded drupal-8.1.1.tar.gz and rename the directory to drupal8 while moving it to /var/www/htdocs.

$ tar zxvf drupal-8.1.1.tar.gz
$ mv drupal-8.1.1 /var/www/htdocs/drupal8

3) Prepare the local hostname.
This Drupal, like the previous version, will only be a local testing environment. I also have a few *.example.com sites here, a plain php site, some drupal 7 site so I need to have another local hostname. I'm choosing drupal.example.com as my Drupal 7 site will now have drupal7.example.com instead. For that, I edited 2 files, /etc/hosts and /etc/httpd.conf.

$ vi /etc/hosts

===== /etc/hosts starts =====
127.0.0.1    drupal.example.com
===== /etc/hosts ends =====

$ vi /etc/httpd.conf

===== /etc/httpd.conf starts =====
server "drupal.example.com" {
    listen on $ext_addr port 80

    directory {
        index "index.php"
    }

    location "*.php*" {
        fastcgi socket "/run/php-fpm.sock"
    }

    root "/htdocs/drupal8"
}
===== /etc/httpd.conf ends =====

4) Drupal 8 installation.
Now is the good stuff. After I restart (restarting httpd is also ok), I fire up my browser and type "drupal.example.org" and Drupal 8 installation page is displayed. Nice!.


At the Choose language page, I just choose the default English and click Save and continue.

Choose profile, I choose Standard and click Save and continue.

Verify requirements, I was shown a warning and 2 errors. I'll show what I've done to resolve the warning/errors.

PHP OPcode cachingNot enabled
PHP OPcode caching can improve your site's performance considerably. It ishighly recommended to haveOPcache installed on your server.

In OpenBSD 5.8 and newer, and -Current, the opcache.so is readily available. It's just that it's not included in /etc/php-5.6.ini. So I edited /etc/php-5.6.ini. My changes is in bold.

===== /etc/php-5.6.ini starts =====
* other sections skipped *

engine = On

* other sections skipped *

; zend.script_encoding =

; This is for Drupal 8
zend_extension=/usr/local/lib/php-5.6/modules/opcache.so

===== /etc/php-5.6.ini ends =====

And after restarting, the warning is gone.


File systemWritable (public download method)
The directory sites/default/files does not exist. An automated attempt to create this directory failed, possibly due to a permissions problem. To proceed with the installation, either create the directory and modify its permissions manually or ensure that the installer has the permissions to create it automatically. For more information, see INSTALL.txt or the online handbook.
For this one, it's just that I create a files directory inside /sites/default. Then I chown the directory to www:www.

$ cd /var/www/htdocs/drupal8/sites/default
$ mkdir files
$ chown www:www files


Settings fileThe Settings file does not exist.
The Drupal installer requires that you create a ./sites/default/settings.php as part of the installation process. Copy the./sites/default/default.settings.php file to./sites/default/settings.php. More details about installing Drupal are available inINSTALL.txt.
This error is telling me that I haven't edited a settings.php file yet. So I need to copy the default.settings.php file to settings.php file.

$ cd /var/www/htdocs/drupal8/sites/default
$ cp default.settings.php settings.php
$ vi settings.php

===== settings.php starts =====
* other sections skipped *

/ **
* Database settings
* bla bla bla
*/
$database['default']['default'] = array(
    'driver' => 'pgsql',
    'database' => 'drupal',
    'username' => 'drupal',
    'password' => 'mypassword',
    'host' => 'localhost',
    'prefix' => '',
);

* other sections skipped *
===== settings.php ends =====

Take note that I have an existing Drupal 7 installation using the same database information. Exactly the same setting.

Then I click "try again" link at the bottom of the page.

Then the Database configuration page opens up.

Database configuration

Database type
 
 


I key in my Database password, then click Save and continue. Then I received an error stating that Drupal already been installed. Sheesh.

I dropped the previous drupal database in PostgreSQL, keeping the drupal username. Then I createdb a new drupal database. Please check your INSTALL.pgsql.txt file for details. Also I deleted the settings.php and copy default.settings.php to settings.php without changing anything. Just making sure the file is read/writable.

Then I restarted the Drupal installation again, and the installation went through.


On the configuration page, I just put the needed info and click Save and continue.

Drupal proceed to install. And after installing I can see the main page. Yeah!. Being amazed, I clicked on Content to start exploring and.. Error 404, Page not found. Ouch. Every other links gave the same error.

So I search the trusty-ol-internet, and found that this is related to Clean URL and mod_rewrite which unfortunately, users of OpenBSD's httpd can't use right now. Ouch. Again. I'm searching for anything relevant, maybe I'll try to disable the Clean URL thingy. But for now, I do know that Drupal 8 installation can go through. Later.