Ubuntuのホスト名を変更

表題の通り。先日はAmazonLinuxだったが今回はUbuntuである。

■ 環境

  • Ubuntu 16.04

■ on EC2

Amazon EC2 Linux 静的ホスト名
https://aws.amazon.com/jp/premiumsupport/knowledge-center/linux-static-hostname/

EC2上で行っていたのだが、AWSのドキュメントにも書かれていた。

■ /etc/hosts

hostsファイルを編集する。ホスト名と仮に”withsinweb01“としている。

127.0.0.1 localhost withsinweb01

AWSのドキュメントには”localhost“自体を書き換えてしまうと記載されているが、自身の好み的に”localhost“はまま残しておく。

■ /etc/hostname

hostnameファイルも編集する。ドメイン名は面倒なので付けない。

$ cat /etc/hostname
withsinweb01
$

後は再起動をすれば反映される。

■ hostname

インスタンスの再起動を行いたくなければ下記コマンドで反映する。

$ sudo hostname withsinweb01

以上。

■ 関連

AmazonLinuxのホスト名を変更

nginxで処理時間をログに出力

表題の通り。以前のエントリでは”Apache“での設定だったので”nginx“でも。

■ 環境

  • nginx 1.4.6
  • Ubuntu 14.04

■ nginx

ちょうどこれが適用できる環境の”nginx“が少々古いがまぁ仕方がない。このversionで確認してしまう。

■ request_time

Module ngx_http_core_module
https://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_time

log_format“の最後に”$request_time“を下記のように追加してみた。

  log_format main '$http_x_forwarded_for - $remote_user [$time_local] '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent" $request_time';

この設定を適用する。

$ sudo service nginx reload

ログには下記のように出力されていた。

XX.XX.XX.XX - - [17/May/2017:19:08:51 +0900] "GET /login HTTP/1.1" 200 2175 "http://example.com/login/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" 0.043

マニュアルによると”seconds with a milliseconds resolution“とあるので、上記は”0.043“秒といったところであろう。

以上。

■ 関連

access_logに”処理に掛かった時間”を記載

Pythonのパッケージ管理は何が良いの?

表題の通り。単なる愚痴である。

■ 環境

  • Python 2.7.12
  • pip 9.0.1
  • Ubuntu 16.04

■ python

Ubuntu 16.04でpythonを下記のようにインストールした。

$ sudo apt-get install python

確認。

$ which python
/usr/bin/python
$
$ python -V
Python 2.7.12
$

さてパッケージの管理は何でやるのが良いのだろう?`easy_install`とか`pip`とかを聞くのだが、`easy_install`で`pip`を入れて…とか聞くと「なんでよ!」と混乱してすぐに投げ出してしまう…。ということを繰り返してきた、また再度pythonに挑戦する。正確にはしざるをえない状況である。

あまりじっくりは調べていないのだが、とりあえず`pip`でやるのが王道らしいのでこれでいく。

$ sudo apt-get install python-pip

確認。

$ which pip
/usr/bin/pip
$
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$

これで”boto3“とかが使えそうである。というわけでインストール。

$ pip install boto3
  :
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
$

boto3“のインストール自体は成功したようだが、メッセージが表示されていた。`pip`をupgradeしろということのようだ。せっかくなのでupgradeもしておく。”apt“のパッケージとは差異が出るが気にしない。

$ pip install --upgrade pip
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 1.1MB/s
Installing collected packages: pip
Successfully installed pip-9.0.1
$ pip -V
pip 9.0.1 from /home/ubuntu/.local/lib/python2.7/site-packages (python 2.7)
$

upgradeできたようである。これよりpythonライフを始めよう。

以上。

Ubuntu@Vagrantにおけるubuntuユーザのパスワード

少々わかりづらいが、表題の通りである。Vagrantで起動しているUbuntu 16.04がある。`vagrant ssh`でログインされる”ubuntu“ユーザのパスワードを知りたい。

■ 環境

  • Ubuntu 16.04
  • Vagrant 1.9.4

■ Ubuntu

使用しているBoxは下記のものである。

$ vagrant box list
ubuntu/xenial64  (virtualbox, 20170331.0.0)
$

このBoxにおける”ubuntu“ユーザのパスワードについては下記のファイルに書かれていた。

$ cat ~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/20170331.0.0/virtualbox/Vagrantfile
# Front load the includes
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
load include_vagrantfile if File.exist?(include_vagrantfile)

Vagrant.configure("2") do |config|
  config.vm.base_mac = "026F8338C1E5"
  config.ssh.username = "ubuntu"
  config.ssh.password = "e43b35d5be0112aeaa005902"

  config.vm.provider "virtualbox" do |vb|
     vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ]
     vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "ubuntu-xenial-16.04-cloudimg-console.log") ]
  end
end
$

この”Vagrantfile“の”config.ssh.password“である。試しにこのパスワードを用いて`su`してみると下記のようになった。

$ vagrant ssh
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-75-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

8 packages can be updated.
0 updates are security updates.


Last login: Thu May  11 19:17:14 2017 from 10.0.2.2
ubuntu@ubuntu-xenial:~$
ubuntu@ubuntu-xenial:~$ su - ubuntu
Password: e43b35d5be0112aeaa005902
ubuntu@ubuntu-xenial:~$

ちなみに先日のエントリでどのversionのBoxを使用しているか知りたかったのかは、今回のエントリの為である。

以上。

■ 関連

VagrantでVMが使用しているBoxのversion

VagrantでVMが使用しているBoxのversion

表題を知りたい。

■ 環境

  • Vagrant 1.9.4
  • Mac OSX El Capitan

■ vagrant box list

Boxは下記のように複数のversionをまだ持っている。

$ vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
centos/7         (virtualbox, 1608.02)
ubuntu/trusty64  (virtualbox, 20170222.0.0)
ubuntu/trusty64  (virtualbox, 20170405.0.0)
ubuntu/xenial64  (virtualbox, 20170331.0.0)
ubuntu/xenial64  (virtualbox, 20170419.0.0)
$

現在稼動しているVMが”ubuntu/xenial64“を使用しているのであるが、どちらのversionのBoxを利用しているのかを知りたい。何か良い手段はないものだろうか?とコマンドを探るも得られそうなコマンドがない。下記のように`suspend`->`up`としてみた。

$ vagrant suspend
==> default: Saving VM state and suspending execution...
$
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'ubuntu/xenial64' is up to date...
==> default: A newer version of the box 'ubuntu/xenial64' is available! You currently
==> default: have version '20170419.0.0'. The latest is version '20170508.0.0'. Run
==> default: `vagrant box update` to update.
==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: ubuntu
    default: SSH auth method: password
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
$

現在ローカルにある最新のversionは”20170419.0.0“で、最新の”20170508.0.0“がリリースされているよと教えてくれているようであるが、確かにローカルの最新は”20170419.0.0“ではあるのだが実際に稼動しているVMが使用しているBoxは”20170331.0.0“であるようだ…。というのも下記を実行した時のメッセージによる。

$ vagrant box prune
The following boxes will be kept...
bento/centos-6.7 (virtualbox, 2.2.7)
centos/7         (virtualbox, 1608.02)
ubuntu/trusty64  (virtualbox, 20170405.0.0)
ubuntu/xenial64  (virtualbox, 20170508.0.0)

Checking for older boxes...

Box 'ubuntu/xenial64' (v20170331.0.0) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)

Are you sure you want to remove this box? [y/N] N
Removing box 'ubuntu/xenial64' (v20170419.0.0) with provider 'virtualbox'...
$

この表記によると、現在はまだ”v20170331.0.0“で動いているからこいつを先に停止してからにしろよ、と理解した。しかし現時点ではまだ`destroy`したくはないVMである。`vagrant reload`を実行しても変化はなかった。作り直すのが手っ取り早いのであろう…。VMであるからそれは当然といえば当然なのだが…さてどうしたものか。

というわけで本題のBoxのversionを知りたいのだが、まだ解決できずである。

VMのあるディレクトリ配下の下記ファイルを確認したがパッと見ではよくわからない。

$ ls -1 .vagrant/machines/default/virtualbox/
action_provision
action_set_name
creator_uid
id
index_uuid
private_key
synced_folders
$

今後に持ち越しである。

以上。

■ 関連

VagrantのBOXをupdate

Ubuntu@Vagrantにおけるubuntuユーザのパスワード