BDS Software

Systems Journal

2019/03/09 - Over the past several months, I've been working on getting this website redesigned, and my journal notes are in piles on my desk and reference table, waiting to be transcribed here. I'll be working on them in between other projects.


-----

2018/06/06 - On BigLinux, to maintain parallel with VPSServer0, did "mkdir xfer" from within /var/www. On both servers, did "mkdir mysqlWork" from /var/www.

At BigLinux, from within /var/www/mysqlWork, did "mysql -u root -p". After entering the root password, did:


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
mysql>


The same results were obtained at VPSServer0.


-----

2018/06/02 - On its Debian 9 and MySQL: Watch Out! webpage, the MySQL Development team writes:

A somewhat unexpected, late change in Debian 9 may cause those MySQL users who upgrade directly from Debian 8 to 9 to have their MySQL installation yanked out and replaced with something else. So beware: if you want to stay on MySQL and not run the risk of things changing under your feet, you may need to take a few extra steps before you upgrade.

I checked my two servers. BigLinux did not have mysql installed but, on VPSServer0, when I executed "whereis mysql", I found that the variant mariaDB was actually installed (as the MySQL site had warned). I deleted mariaDB from VPSServer0 using "sudo apt-get remove mariaDB" and then "sudo apt-get autoremove" to delete mariaDB's now unused dependencies.

I then followed the MySQL Site's instructions to install a true MySQL on BigLinux.

I began with "cd downloadsHold" then 'wget "https://repo.mysql.com/mysql-apt-config_0.8.10-1_all.deb"'.

I then installed the MySQL APT Repository using "sudo dpkg --install mysql-apt-config_0.8.10-1_all.deb", followed by "sudo apt-get update".

I then installed mysql itself, using "sudo apt-get install mysql-server".

whereis mysql -->    /usr/bin/mysql    /usr/lib/mysql    /etc/mysql    /usr/share/man/man1/mysql.1.gz

mysql --version -->    mysql    Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)

Having successfully completed the mysql installation on BigLinux, I did the same on VPSServer0 with the same results.

Following this, I installed the npm "express" web framework for node on both servers:

sudo npm i -g express --> +express@4.16.3

I noted that npm modules are all being installed in the /usr/local/lib/node_modules directory.


Checked root drives on both servers. VPSServer0: 2.6GB used, 24GB available. BigLinux: 5.8GB used, 270GB available.


-----

2018/05/30 - On both servers, commented-out the $PATH lines in /etc/profile and in ~/.bash_profile pointing to the node directories under "/opt/". I'm leaving the node 8.11.1 installations in those "/opt/" directories intact - as safety backups in-place, because of the number of hoops I had to jump through to get node up and running and updated to 8.11.2. But, I'm removing those directories from the $PATH to forestall any possible miscues as to which node version is to be run.
-----

2018/05/28 - Checked root drives on both servers. VPSServer0: 2.2GB used, 24GB available. BigLinux: 5.2GB used, 271GB available.

Note: For copy and paste from the SSH terminal windows to elsewhere on Doc2, use the left mouse button drag to highlight --> automatically copies the selection to the clipboard. Then paste outside the terminal as desired, in the usual (e.g. CTRL-V) fashion.


-----

2018/05/27 - Doc2 Configuration:

To allow some development work to occur directly on the Doc2 client, installed the Windows version of Node.js 8.11.2 which includes npm 5.6.0. An attempt to "npm install -g n" failed with an EBADPLATFORM error - not a big surprise, and also not a big problem, because direct download and installation of updates is possible in Windows.

Set up MySQL 8.0.11 on Doc2 as a pre-development server, with TCP/IP on the default port 3306, and with that port opened through the Windows Firewall for this purpose. Configured MySQL as a Windows Service with name = MySQL80. Start at System startup. Run the service under the standard system account. I did NOT enable it as a Document Store (i.e. NoSQL).


-----

2018/05/26 - BigLinux cleanups:

VPSServer0 came with root SSH login enabled. To parallel this, I wanted to add such capability to BigLinux as well. From the Gnome screen AT BigLinux (not from within the SSH terminal from Doc2), I used LeafPad to modify /etc/ssh/sshd_config to show the line, "PermitRootLogin yes", more specifically:


Lines after changesChange actions
#Authentication:Leave commented-out
LoginGraceTime 2mUncomment
#PermitRootLogin prohibit-passwordLeave commented-out
PermitRootLogin yesAdd new
StrictModes yesUncomment
#MaxAuthTries 6Leave commented-out
#MaxSessions 10Leave commented-out

Then, still AT BigLinux, I used an LXTerm console window to "/etc/init.d/ssh restart"

--

VPSServer0 was using ntp to maintain its system clock, but ntp was not installed on BigLinux and its clock was out of synch. On VPSServer:

whereis ntp -->    /etc/ntp.conf    /usr/share/ntp


Then, for BigLinux:

sudo apt install ntp --> worked

whereis ntp -->    /etc/ntp.conf    /usr/share/ntp


After a shutdown and restart, BigLinux' clock was back in synch.

--

I noted from the nodejs.org website that node version 8.11.2 is now available.

And, I noted from the npm website that the n package is to be used to update node. Thus:

sudo npm install -g n --> worked

n --version -->    2.1.11

n 8.11.2 --> Error

n 8.11.1 --> installed at /usr/local/n/versions/node/8.11.1

n 8.11.2 --> installed at /usr/local/n/versions/node/8.11.2


It appears that n did not recognize the existance of node version 8.11.1 in /opt/node-v8.11.1-linux-x64/bin and, so, could not update it to 8.11.2. But, since node would validly run from there, that was sufficient to allow n to install another copy of 8.11.1 at its expected location of /usr/local/n/versions/node/8.11.1. Once it was at that location, n was able to update it to 8.11.2. And now:

node -v -->    8.11.2

npm -v -->    5.6.0

n --version -->    2.1.11


Next, cleaned-up VPSServer0 to match the above for BigLinux.


-----

2018/05/07 - Node Investigation:

At BigLinux:

nodejs -v -->    0.10.29      (4.8.2 on VPSServer0)

node -v --> not found

npm -v --> not found


As recommended at nodejs.org, tried to install the nodesource deb package using curl. But curl was not found on BigLinux.

sudo apt-get install curl --> worked. curl --version -->    7.52.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs --> worked.

Then, still at BigLinux:

nodejs -v -->    4.8.2

node -v --> not found

npm -v --> not found


This confirms that node 8.x is not supported by Debian 9. These packages; i.e. the 4.8.2 nodejs packages, are provided by the Debian packagers, not by the nodejs team.

Did cat /proc/cpuinfo at each server:

BigLinux = Pentium D = Dual Core 64-bit x86-64

VPSServer0 = Xeon E5-2660 v4 = 64-bit


Downloaded the Linux 64-bit binary (x86/x64) to c:\downloads\temp on Doc2 for a pre-check: node-v8.11.1-linux-x64.tar.xz --> not openable with WinZip. Used 7-zip to extract it to node-v8.11.1-linux-x64.tar and then extracted that to umpety-ump stuff. Deleted the extractions after inspection.

I noted that /home/mdavidjohnson included a "downloads" directory on BigLinux, but not on VPSServer. mkdir downloadsHold (personal preference) on both servers and, within those, mkdir nodejs_8.11.1 --> okay. Used WS-FTP to copy node-v8.11.1-linux-x64.tar.xz to /home/mdavidjohnson/downloadsHold/nodejs_8.11.1 on both servers --> -rw-r--r--.

Having it there, and noting that /opt is currently empty on both servers, at BigLinux, did "sudo tar --directory=/opt -xvf node-v8.11.1-linux-x64.tar.xz" - it worked; /opt package name = node-v8.11.1-linux-x64. Did "export PATH=$PATH:/opt/node-v8.11.1-linux-x64/bin" - okay.

Then, still at BigLinux:

nodejs -v -->    4.8.2

node -v -->    -bash /opt/node-v8.11.1-linux-x64/bin/node: cannot execute binary file: Exec format error.

npm -v -->    syntax error


The format error persisted even when "node -v" was executed directly from within the /opt/node-v8.11.1-linux-x64/bin directory.

After playing around with this a bit, I considered the possibility that the tarball might have been corrupted when it was transferred via WS-FTP. So I proceeded to download it directly to BigLinux:

From /opt, did "sudo rm -rf /opt/node-v8.11.1-linux-x64" - worked."

I also deleted the tarball from /home/mdavidjohnson/downloadsHold/nodejs_8.11.1 - okay.

I then directly downloaded the tarball to /home/mdavidjohnson/downloadsHold/nodejs_8.11.1 using wget.


I tried the installation again and it was still non-functional. So I re-did the removals and downloaded the 32-bit tarball (node-v8.11.1-linux-x86.tar.xz) instead.    Installed:

nodejs -v -->    4.8.2

node -v --> not found

npm -v --> not found


Aha!

nodejs -v -->    4.8.2

/opt/node-v8.11.1-linux-x86/bin/node -v -->    8.11.1

/opt/node-v8.11.1-linux-x86/bin/npm -v -->    5.6.0


So I made the addition to $PATH permanent:

sudo echo 'export PATH=$PATH:/opt/node-v8.11.1-linux-x86/bin' >> ~/.bash.profile --> okay.


Logged out. Logged back in. echo $PATH --> correct. Now:

nodejs -v -->    4.8.2

node -v -->    8.11.1

npm -v -->    5.6.0


cd /var/www/nodejsWork --> okay. "node myfirst.js &" still works.

sudo apt-get remove nodejs -->

nodejs -v --> not found

node -v -->    8.11.1

npm -v -->    5.6.0


cd /var/www/nodejsWork --> okay. "node myfirst.js &" still works.

Now, we move to VPSServer0:

nodejs -v -->    4.8.2

node -v --> not found

npm -v --> not found


I proceeded to download and install the 32-bit version of node -- Like the 64-bit version on BigLinux, it bombed. So I removed it and installed the 64-bit version of node. It worked. the various myfirst.js tests also worked correctly. Removed nodejs as I did on BigLinux. Now, on VPSServer0:

nodejs -v --> not found

node -v -->    8.11.1

npm -v -->    5.6.0


On both servers, from within /var/www did "mv nodejsWork nodeWork" to rename the directory and avoid future confusion.

NOTE: Despite the earlier /proc/cpuinfo checks, it is clear from the above that:

BigLinux is a 32-bit system.

VPSServer0 is a 64-bit system.


NOTE: "apt-get update" will NOT update node or npm - they will have to be updated separately as needed.


-----

2018/05/06 - Continuing VPSServer0 Examinations, Explorations, and Revisions:

To correct some permissions problems on both VPSServer0 and BigLinux, did "sudo chown mdavidjohnson" on /var/www, /var/www/html, and /var/www/nodejsWork.

To parallel VPSServer0, made a /var/www/html/index.html page on BigLinux.

As expected, index.html does not work on BigLinux. Comparing the results of "whereis apache2" on VPSServer0 and BigLinux:


VPSServer0BigLinux
/usr/sbin/apache2---
/usr/lib/apache2---
/etc/apache2/etc/apache2
/usr/share/apache2---
/usr/share/man/man8/apache2.8.gz---

The default document root for Apache is /var/www/html. Revised /etc/apache2/apache2.conf on VPSServer0 accordingly (that file doesn't exist on BigLinux).

At BigLinux, tried "sudo apt-get install apache2" --> it worked. And now, index.html also works on BigLinux. "whereis apache2" on BigLinux now also gives the same list as on VPSServer0.

For BigLinux, moved the nodejs stuff from c:\work\BigLinux\Nodejs on Doc2 to c:\LANNetXfer\BigLinux\nodejsWork. Then, at BigLinux, moved the stuff from /home/mdavidjohnson/work/Nodejs to /var/www/nodejsWork. Then removed Nodejs directory from /home/mdavidjohnson/work. Removed BigLinux\Nodejs directory from c:\work on Doc2. Performed these moves for VPSServer0 as well. Retested myfirst.js, demo_http_url.js, and demo_querystring.js from their new locations on BigLinux and on VPSServer0 --> all worked.

Setup demo_readfile.js from w3schools on both servers --> worked on both.

Setup demo_fileserver.js from w3schools on both servers --> worked on both.

Despite what w3schools says, npm does NOT appear to have been installed with nodejs. After looking at this a bit further, it seems that npm is no longer available for Debian 9 via the official apt repository. AND, it also seems that the nodejs in Debian 9 is NOT the official node from nodejs.org. At nodejs.org we read:

A Node.js package is also available in the official repo for Debian Sid (unstable), Jessie (testing) and Wheezy (wheezy-backports) as "nodejs". It only installs a nodejs binary.

The nodejs-legacy package installs a node symlink that is needed by many modules to build and run correctly. The Node.js modules available in the distribution official repositories do not need it.


And, on bugs.debian.org, Jérémy Lal wrote on 19 May 2017:

There are complications to distributing npm: it depends on a LOT of modules, which means it requires a lot of debian-maintainer time to package, and update. Using the upstream nodejs tarball as source for npm or the upstream npm tarball does not change anything about that.


To which Thierry Vilmart replied on 14 Jun 2017:

I agree. If it is too complicated to maintain nodejs and npm packages, they should be removed for security reasons. There could be a vulnerability in the nodejs web server.

Serious professionals will have to install tar balls from the official web pages.


For our purposes, node will be essentially useless without npm. So, this deficiency will have to be addressed.

Did "sudo apt-get update" then "sudo apt-get upgrade" on both servers.


-----

2018/05/05 - VPSServer0 Examinations, Explorations, and Revisions:

Noted that the Apache2 default page is at /var/www/html/index.html.

Noted, as an aside, that there is no html directory and no www directory in /var on BigLinux. No www directory was found anywhere on BigLinux.

There is too much "root" involvement here. First, add mdavidjohnson to the sudoers list:

sudo adduser mdavidjohnson sudo --> reports the adding

logout and back in

groups -->    mdavidjohnson    sudo


I also did this on BigLinux.

At VPSServer0, I have been having problems with being unable to transfer files to and from Doc2 using WS-FTP. It works okay with BigLinux.

At the 1and1 Cloud Panel, under Network | Firewall Policies for VPSServer0, I noted that the currently open ports are TCP 22 (SSH), 80 (HTTP), and 443 (HTTPS). I also opened TCP: 20 (FTP Data), 21 (FTP Control), and 8080 for Nodejs Testing. Following this, WS-FTP is now working correctly with VPSServer0.

On BigLinux, nodejs is at /usr/bin/nodejs with other stuff at /usr/lib/nodejs and at /usr/share/man/man1/nodejs.1.gz. And,
man nodejs --> works.

But on VPSServer0, nodejs does not exist; nor does man nor apropos, although help is present. Used apt-get to install man, groff, apropos, and less.

on VPSServer0, ran "sudo apt-get install nodejs --> worked. nodejs now on VPSServer0 at same locations as on BigLinux.

Added directories /var/www/html and /var/www/nodejsWork to BigLinux to parallel VPSServer0. Example, from within /var:

sudo mkdir www

sudo chmod 755 www


Note that if WS-FTP is open on Doc2 and connected to BigLinux at the time this is done, WS-FTP must generally be disconnected and then reconnected for the chmod changes to become visible.


-----

2018/05/01 - On both servers, upgraded from Debian 8.10 Jessie to Debian 9.4 Stretch:

cat /etc/debian_version -->    8.10

sed -i 's/jessie/stretch/g' /etc/apt/sources.list

apt-get update

apt-get upgrade

apt-get dist-upgrade

apt-get autoremove

cat /etc/debian_version -->    9.4


Each of these commands resulted in much verbiosity on the part of the server, none of which has been recorded here because the effective results were just lengthy lists of what the system had done and the fact that the commands were successful.

Verified that "nodejs demo_querystring.js" still works after the upgrade.


-----

2018/04/30 - Tried "apt install Node.js" on BigLinux --> unable to locate.

Tried "apt install node.js" --> unable to locate.

Tried "apt install nodejs" --> worked.

Ran "apt-get autoremove" to clean up.

Used LeafPad on BigLinux to enter w3schools' "myfirst.js":

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}).listen(8080);

and saved it in /root/documents.

Did "cd /root/documents" and then "nodejs myfirst.js" --> It appeared to run but was blocking.

On Doc2, in the browser, navigated to 10.0.0.99 --> 404. (Sometimes the synapses just aren't firing).

Navigated to 10.0.0.99:8080 --> Worked!

Copied myfirst.js from /root/documents to /home/mdavidjohnson/documents. Ran the copy --> okay.

From Doc2, I used SSH-PuTTY to connect to BigLinux as mdavidjohnson (could not as yet connect as root) and ran the copy --> okay.

Used WS-FTP on Doc2 to copy myfirst.js from /home/mdavidjohnson/documents on BigLinux to c:\work\xfer on Doc2. I modified the file:

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Typs': 'text/html'});
res.end('Hello Node.js WS-FTP World!');
}).listen(8080);

// command at server = nodejs myfirst.js &
// Example URL at browser = 10.0.0.99:8080

and then copied it back to BigLinux. Used SSH-PuTTY to run the revised copy --> okay.

myfirst.js stops running if you exit SSH-PuTTY. Use "nodejs myfirst.js &" instead to start the program in the background - it then keeps on running after you close SSH-PuTTY.

nodejs myfirst.js & --> [1] 13304 (or some other process ID, i.e. PID). Then, use "kill 13304" or similar to end the process. After typing-in the kill command, hit ENTER twice to confirm the termination of the process.

Hereinafter, I will not specify the "node xxxx.js & --> [n] nnnn" and the "kill nnnn --> [n]+ Terminated" mechanisms. They are to be simply understood.

I use "top -u mdavidjohnson" or "ps -u mdavidjohnson" to list which of my processes are currently running. "top" is more verbose, and you have to press the "q" key to end it.

Copied demo_http_url.js:

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(req.url);
res.end();
}).listen(8080);

// command at server = nodejs demo_http_url.js &
// Example URL at browser = 10.0.0.99:8080/summer

from w3schools to Doc2, and from there to BigLinux.

In FireFox on Doc2:

10.0.0.99:8080/summer -->    summer

10.0.0.99:8080/winter -->    winter

10.0.0.99:8080/mdj_is_a_bozo -->    mdj_is_a_bozo


Copied demo_querystring.js:

var http = require('http');
var url = require('url');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query;
var txt = q.year + " " + q.month;
res.end(txt);
}).listen(8080);

// command at server = nodejs demo_querystring.js &
// Example URL at browser = 10.0.0.99:8080/?year=2018&month=May

from w3schools to Doc2, and from there to BigLinux.

In FireFox on Doc2:

10.0.0.99:8080/?year=2018&month=May -->    2018 May


Trying the same thing, but on port 53789, also worked.


-----

2018/04/09 - In this Systems Journal, I will frequently be using the "-->" symbol to point to the results of a linux terminal command. For example:

ls -->    file0    file1    file2


would indicate that the result of the "ls" command in the terminal is the output to the screen of the list "file0    file1    file2".


-----

2018/04/08 - Used an old 5.25" floppy disk drive, with a Device Side Data FC5025 USB Floppy Controller, to convert all of my 5.25" floppy disks to disk images on Doc2's HDD. This included both my PC floppies and my even older Color Computer floppies.

I also used an old 3.5" floppy drive, with a USB connector, to convert all my 3.5" PC floppies to disk images on Doc2's HDD.


-----

2018/04/01 - The servers I'm using are laid out as follows:

  • ●: Development Server at home: Home built. Server Name = BigLinux. Intel Pentium D 2.80GHz Processor with 1.45 GB RAM and 300 GB HDD. OS = Linux Debian 8.10 Jessie. Running at the internal static IPv4 address = 10.0.0.99.

  • ●: Production Server at 1and1.com: Server Name = VPSServer0. Intel Xeon E5-2660 v4 2.00GHz Processor with 512 MB RAM and 30 GB SDD. OS = Linux Debian 8.10 Jessie. Running at an external static IPv4 address which I'll simply indicate as = VPS.SER.VER.IP for now.

  • ●: Web Server at 1and1.com: Managed Hosting on a Linux server. The details are not immediately available and, since I don't really need them, I'm not going to try to search them out. cf. www.bds-soft.com and www.theologyfrombelow.org.

I also have a Windows 7 desktop, (Name = Doc2) with SSH PuTTY, which I use to make terminal connections to BigLinux and VPSServer0.


-----

Start of Journal