もどる TOP

日報 2018-01-13

 OSインストールだけしてほったらかしてた家のVM上のUbuntu16.04をなんとかした。固定IPをふって、sshで接続できるようにして、とりあえずApacheとPHPとNode.jsを入れた。

rootパスワード忘れた

 いきなり氏んだかと思った。以下記事を参考にパスワードを変更して、なんとかなった。GRUB画面には起動画面でShiftキーでいけた。

ubuntu 14.04 のパスワードを忘れたのでシングルユーザーモードでパスワードを変更する備忘録 - Qiita

ルーターのDHCP割り当て範囲を変更する

 仮想マシンに固定IPをふって、本体からSSHとかで接続したい。今回、仮想マシンに振るIPアドレスは192.168.1.200ということにした。

 念のため、まず家のルーターのDHCP割り当て範囲を変更して、200以降の機械がでてこないようにする。家のルーターはソフトバンクの楕円っぽいやつで、デフォルトゲートウェイにしたがってhttp://192.168.1.1にアクセス……あ、パスワード忘れた。こんなんばっかじゃん。

 ググって以下記事を発見し、無事ユーザー名「user」パスワード「user」で入場。

ソフトバンク 光ユニッット ポート開放

 『詳細設定モード』→有線・無線LAN共通の『IPアドレス/DHCPサーバ』→割当IPアドレスの範囲を100~199も変更してOKボタンを押し、画面左下の再起動ボタンからルーター再起動。PCなどの各機器を再起動してくれと言われるが、この部屋に200以降の機械は無いと思うので不要。

ブリッジ接続にしてIPアドレスを固定する

 仮想マシンが本体の機械とは関係なく、同じネットワーク上にいる別の機械という感じにしたい。

 いったんUbuntuをシャットダウンし、VMWareで『仮想マシン設定の編集』を開く。『ハードウェア』タブの『ネットワークアダプタ』を選択し、ネットワーク接続の『ブリッジ』をONにする。

 もう一度Ubuntuを立ち上げ、/etc/network/interfacesを書き換えてIPを固定する。うちの環境だと、変更後は以下の通りになった。

/etc/network/interfaces
source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens33
#iface ens33 inet dhcp
iface ens33 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

 書き換え後、service networking restartで設定を反映……が、なんかうまくいってなかったのでrebootifconfigすると、ちゃんと設定が反映されていた。

SSHで接続できるようにする

$ sudo apt-get install openssh-server

 /etc/ssh/sshd_configPasswordAuthenticationはあらかじめyesになってたので、そのままで済んだ。これで本体PCのTeraTermから一般ユーザーで接続できるようになった。

なんかapt-get updateが止まる

 が、apt-get updateしてみたら、なんかsecurity.ubuntu.comへの接続ができないみたいで、途中で止まってしまう。

 どうもIPv6が有効になってるから、security.ubuntu.comをIPv6で引こうとして引けてないくさい。じゃあIPv6をOFFにしようかとも思ったが、いつもそればっかだとなんかダメな気がしたので、IPv6有効のまま行くことにした。

 下記記事の通りに/etc/gai.confprecedence ::ffff:0:0/96 100なる行のコメントアウトを解除してやり直してみたら、意味は分からないが直ったのでOK。

apt-get stuck connecting to security.ubuntu.com – Tuxdiary

Apache2をインストール

$ sudo apt-get install apache2

 本体のブラウザからhttp://http://192.168.1.200/にアクセスすると、UbuntuのApache2のデフォルトページが表示された。

ubuntuでApache + PHP - Qiita

php7.1をインストール

$ sudo apt-get install -y python-software-properties
$ sudo add-apt-repository -y ppa:ondrej/php
$ sudo apt-get update -y
$ sudo apt-get install php7.1

How to Install and Configure PHP 7.0 or PHP 7.1 on Ubuntu 16.04 - Vultr.com

 これでphpのモジュールもちゃんとapacheに入ってるみたい。インストール終わったら、以下の通りに/var/www/html/phpinfo.phpを作成して本体のブラウザからhttp://http://192.168.1.200/phpinfo.phpにアクセスし、phpの動作確認。OK。

phpinfo.php
<?php
	phpinfo();

Node.js 9をインストール

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

パッケージマネージャを利用した Node.js のインストール | Node.js

 わーいNode.js初めて触る。Hello Worldするため、どこでもいいというのでホームディレクトリにexample.jsを作成し、下記の通りに記述。

example.js
const http = require('http');
const PORT = 8080;
http.createServer((request, response) => {
	response.writeHead(200, {'Content-Type': 'text/plain'});
	response.end('Hello World!\nThis site is created in Node.js.');
}).listen(PORT);
console.log(`Server running at http://192.168.1.200:${PORT}/`);

 Windowsではないがコードは下記ページを参考にさせていただいた。ただしconsole.logカッコ内は、たぶんテンプレートリテラルのクォート忘れだと思うので、バッククォートで囲んだら動いた。

Windows上でNode.jsを実行してHello worldをブラウザに表示する方法 - Qiita

 作ったら、ホームディレクトリで下記コマンド実行。

$ node example.js

 コンソールにServer running at http://192.168.1.200:8080/と表示されたので、本体からブラウザで閲覧してみると、ソースコードに書いてあるHello Worldが表示された。わーい動いた。

サイドバーを表示する
ブログ
ShortCircuit
ShortCircuit
花火大会
天使
去る512時間前、キリウ君は折れてない千歳飴を渡してきて、ぼくが折るよう仕向けた。1024時間前、彼はこの世のものではないハッシュアルゴリズムでひとりブロックチェーンを始めていた。