macOS Catalinaでもtftpサーバを使いたい

 ルータやスイッチのSWイメージを操作剃る時に、TFTPサーバがあると便利です。FTPサーバももはや死語に近いご時世で、TFTPって何?と思われる方もいると思いますが、ファイル転送のためのアプリケーションプロトコルです。

TFTP (Trivial File Transfer Protocol) は、UDP port 69を使い認証機能などなく、純粋にファイルを転送するためのプロトコルです。クライアント-サーバ型のアプリケーションですので、TFTPサーバとTFTPクライアントがいます。

macOSでは、OSに tftpd が搭載されていて、利用することができます。
これまでのバージョンでも利用できてましたが、macOS Catalinaでもtftpdを動かせました。

tftpdを起動する


$ sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist


$ sudo lsof -i :69 
Password: 
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME 
launchd   1 root   23u  IPv6 0x3062b36b420cb861      0t0  UDP *:tftp 
launchd   1 root   38u  IPv6 0x3062b36b420cb861      0t0  UDP *:tftp 
launchd   1 root   44u  IPv4 0x3062b36b420ca409      0t0  UDP *:tftp 
launchd   1 root   45u  IPv4 0x3062b36b420ca409      0t0  UDP *:tftp

ファイルを配置する

/private/tftpboot 配下にファイルを配置

TFTPでファイル転送する

macOS上では、ターミナルで、tftpコマンドが利用可能です。
※Ciscoルータでは、IOSイメージをtftpサーバからファイル転送する場合、「copy tftp: flash:」コマンドで利用できます。


$ tftp 
tftp> connect  
(to) 192.168.11.2 
tftp> binary 
tftp> get test.jpg Received 13013 bytes in 0.8 seconds 
tftp>  
tftp> quit $

tftpdを終了する


$ sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist

念の為、ポートが閉じているか、確認しておきましょう。


$ sudo lsof -i :69 
$
 

 

WordPressをドメイン直下に移動したい ※サイトのホームページにする

wpとかblogといったサブディレクトリにWordPressをインストールしてしまった後で、ドメイン直下のルートディレクトリからアクセスできるようにしたい場合の方法です。

サブディレクトリにインストールしたWordPressの大量のファイル群を移動するといったことなく、簡単な方法でドメイン名でのアクセスができるようになります。

大きな流れは、以下の通りです。

  1. WordPressの管理画面でサイトアドレスのURLを変更する
  2. index.phpをコピーして修正する
  3. パーマリンク設定の更新

1. WordPressの管理画面でサイトアドレスのURLを変更する

WordPressの管理者画面にログインして、[ダッシュボード]-[設定]-[一般設定]をクリックします。

「サイトアドレス(URL)」で指定してあるURLから、サブディレクトリを削除して、「変更を保存」をクリックします。

※ 「 http://www.galapagos-island.net/blog 」から、blogを削除して、「 http://www.galapagos-island.net/ 」とします。

2. index.phpをコピーして修正する

(1) WordPressがインストールされているディレクトリ(ここでは、blog)から、index.php ファイルをサイトのルートディレクトリにコピーします。

例えば、SSHアクセスやコンソールアクセスが可能な場合は、以下のようなコマンドでコピーします。

# cd /var/www
# cp blog/index.php .

サイトのルートディレクトリは、ホスティングサーバや構築したサーバ環境にもよりますが、例えば、www や htdocs や public_html といったディレクトリ名かと思います。

(2) 次に、ルートディレクトリのindex.phpファイルを以下のように修正します。

修正前

require( dirname( __FILE__ ) . '/wp-blog-header.php' );

修正後

require( dirname( __FILE__ ) . '/blog/wp-blog-header.php' );

直接FTPクライアントを使う場合は、一旦index.phpファイルをダウンロードして、修正後にルートディレクトリへアップロードする形となります。

3. パーマリンク設定の更新

パーマリンクを設定している場合、更新が必要となります。
[ダッシュボード]-[設定]-[パーマリンク設定]を開き、「変更を保存」をクリックします。
その後、サブディレクトリ内にある、.htaccessをルートディレクトリへ同様の方法でコピーします。
※.htaccessファイルがない場合は、特に操作不要です。

参考:

WordPress を専用ディレクトリに配置する の 「3 既存のサブディレクトリを使ってルートディレクトリに表示する場合」

まとめ

上記方法で、ドメイン直下からサイトへアクセスすることができるようになります。
操作途中、サイトへのアクセスが出来なくなることがありますので、サイトへのアクセスされにくいタイミングで実施すると良いと思います。

Vagrantを使う(macOS High Sierra)

VM環境のセットアップをラクにするVagrantを入れてみる。
HashiCorp社 Vagrantの Getting Started のガイドを参考にVagrantを使えるようにセットアップをしてきます。

  1. インストール
    Vagrantのダウンロードページから、macOSを選択して vagrant_2.1.1_x86_64.dmg をダウンロード。
    https://www.vagrantup.com/downloads.html

Vagrant.pkgをダブルクリックしてインストールします。

Vagrant.pkg

インストール後、ターミナルで、vagrantコマンドが使えることを確認します。

$ vagrant -v
Vagrant 2.1.1
$ 
  1. Vagrantプロジェクトのセットアップ
     Vagrantプロジェクトの最初のステップとして、Vagrantfileを作成します。
     Vagrantfileは、Vagrantプロジェクトのroot directoryを指定すること、オプションの指定、仮想マシン、リソースに関する記述をします。
     Vagrantには、「vagrant init」コマンドがあり、Vagrant用にディレクトリを初期化し、Vagrantfileを作成します。
$ mkdir vagrant_getting_started
$ cd vagrant_getting_started/
$ 
$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
$
$ ls
Vagrantfile
$

このVagrantfileはテキストファイルですので、Gitなどバージョンコントロールシステムで管理することで、一意の環境構築ができるようになります。

  1. Boxesについて
     Vagrantでは、仮想マシンを一から作成するのではなく、boxesと呼ばれるベースイメージを使ってクイックに仮想マシンをクローンします。Vagrantfile作成後は、boxをインストールします。

Boxesは、「vagrant box add」コマンドで追加されます。このコマンドを実行することで、複数のVagrant環境で再利用が可能なように、特定の名前の下にboxが保管されます。

「vagrant box add hashicorp/precise64」を実行して、’hashicorp/precise64’配下にboxを追加します。
※仮想マシンを稼働する環境(providers)として、virtualboxを選択しました。
※「hashicorp/precise64」は、名前空間(namespace) hashicorp にある precise64 というboxを指定する表記です。
※「hashicorp/precise64」は、 HashiCorp’s Vagrant Cloud box catalog からダウンロードされます。

$ vagrant box add hashicorp/precise64
==> box: Loading metadata for box 'hashicorp/precise64'
    box: URL: https://vagrantcloud.com/hashicorp/precise64
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) virtualbox
3) vmware_fusion

Enter your choice: 2
==> box: Adding box 'hashicorp/precise64' (v1.1.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/hashicorp/boxes/precise64/versions/1.1.0/providers/virtualbox.box
==> box: Successfully added box 'hashicorp/precise64' (v1.1.0) for 'virtualbox'!
$
(後から解説予定)
Boxes are globally stored for the current user. Each project uses a box as an initial image to clone from, and never modifies the actual base image. This means that if you have two projects both using the hashicorp/precise64 box we just added, adding files in one guest machine will have no effect on the other machine.

In the above command, you will notice that boxes are namespaced. Boxes are broken down into two parts - the username and the box name - separated by a slash. In the example above, the username is "hashicorp", and the box is "precise64". You can also specify boxes via URLs or local file paths, but that will not be covered in the getting started guide.

Go言語をMacにインストールする

Goは、2009年にGoogleが公開したプログラミング言語。コンパイラ言語。
色々と特徴があり、並列処理のサポート、クラスや継承がなく「型」を使う、などがあります。

Go言語のインストール

(1) Go言語のサイトを開き、Go言語のインストーラーをダウンロードする。

The Go Programming Language
Go言語のサイト(https://golang.org/)

Downloads  The Go Programming Language
Go言語のダウンロードページ

(2) Go言語のインストール
 ダウンロードしたインストーラーを実行して、指示に従ってインストールする。

Go installer 1

Go installer 2

Go installer 3

Go installer 4

(3) インストール完了の確認
ターミナルを開き、「go version」コマンドを実行して、インストール完了を確認する。

$ go version
go version go1.9.3 darwin/amd64

(4) 「A Tour of Go」で学ぶ
Go言語サイトのDocumentにもありますが、ローカル環境で利用することができます。
ローカルでGo Tourを実行するには、以下のコマンドを入力します。

$ go tool tour

コマンド実行後、ブラウザが開き、A Tour of Go が利用できるようになります。

A Tour of Go

以上で、Go言語のインストール完了です。

VMware Fusion 8にNested vSphere環境を構築する

16GBのメモリを搭載したMacBook Proに、VMwareのNested vSphere環境を構築してみる。
vSphereのテスト環境を作ろうと思ったことがきっかけ。

  1. Fusion Pro 8を導入する

  2. My VMwareから、評価版のESXi 6.5をダウンロードする。
    (VMware-VMvisor-Installer-201701001-4887370.x86_64.iso)

  3. Fusion上にESXi 6.5をインストールする

  4. My VMwareから、評価版のvCenter Serverをダウンロードする。
    (VMware-VCSA-all-6.5.0-4944578.iso)

  5. ダウンロードした、VCSAのisoファイルをマウントする。
    ※ダウンロードフォルダにある、VMware-VCSA-all-6.5.0-4944578.isoをダブルクリックするとマウントします。

  6. vCenter Server Applianceの導入手順についてreadmeを確認します。

  7. vcsa-ui-installerフォルダにある、macフォルダを開くと、「Installer」があるので、
    Ctrlキーを押しながらクリックして開きます。

  8. 開いてもよいか、確認のダイアログが表示されるので、「開く」をクリックします。
    NewImage

  9. vCenter Server Appliance 6.5 Installerが起動します。
    NewImage

  10. 言語を「日本語」にします。
    NewImage

  11. インストールを選択します。インストールの概要が表示されます。
    「次へ」をクリックします。
    summary

  12. エンドユーザー使用許諾契約書が表示されます。
    同意にチェックをして、次へをクリックします。
    NewImage

  13. デプロイタイプの選択が表示されます。
    組み込みにチェックを入れ、「次へ」をクリックします。
    install_deploy_type

  14. アプライアンスのデプロイターゲットが表示されます。
    vCenter ServerをインストールするESXi(この記事で最初に導入したESXi)のIPアドレスを指定、
    ユーザー名、パスワードを入力して、「次へ」をクリックします。
    install_to_esxi

  15. SSLの証明書に関する警告が表示されます。
    「はい」をクリックします。
    ssl_alert

  16. アプライアンス仮想マシンの設定が表示されます。
    仮想マシン名、rootパスワードを指定します。
    VM_settings

  17. デプロイサイズの選択が表示されます。

この際、以下のエラーが表示された。
「OVF ファイルの読み取り中に問題が発生しました。:
Error: ovftoolを使用できません」

http://emadyounis.com/vcenter/vcenter-server-appliance-vcsa-6-5-installer-macos-ovftool-error/

  1. トラブルシュート
    デスクトップに、「vcsa-65-ISO」フォルダを作成し、その中に、マウントしたISOボリュームから、
    「vcsa-ui-installer」と「vcsa」をコピーします。

その後、xattrコマンドでInstaller.appのアトリビュートを削除します。

inouenaoyanoMacBook-Pro:mac naoya$
inouenaoyanoMacBook-Pro:mac naoya$
inouenaoyanoMacBook-Pro:mac naoya$ sudo xattr -rc Installer.app/
Password:
inouenaoyanoMacBook-Pro:mac naoya$

インストーラの画面では、「キャンセル」をクリックして、インストーラを閉じます。

  1. デスクトップにコピーしアトリビュートを削除したインストーラを開きます。
    これまでの作業をもう1回実施して、進めます。

  2. デプロイサイズの選択が表示されます。
    デプロイサイズ「最小」、ストレージサイズ「デフォルト」となっていることを確認して、「次へ」をクリックします。
    install_deploy_size

  3. データストアの選択画面が表示されます。
    シンディスクモードの有効化をチェックして、「次へ」をクリックします。
    install_datastore

  4. ネットワークの構成画面が表示されます。
    ※DNSサーバは、とりあえず、8.8.8.8を指定。
    install_network

  5. ステージ1の設定内容の確認画面が表示されます。

install_stage1

  1. 「終了」ボタンをクリックすると、インストールが開始されます。

install_stage1_start

  1. デプロイ完了画面が表示されます。
    「続行」をクリックします。

install_stage1_finish

https://192.168.66.130:5480/

  1. 引き続き、ステージ2のインストールに移ります。

stage2_summary

  1. アプライアンス設定画面が表示されます。
    時刻同期モードを「時刻を ESXi ホストと同期します」を選択します。
    SSHアクセスは、「有効」を選択します。

stage2_appliance

  1. SSO設定
    SSOドメイン名:vsphere.local
    サイト名:default-site

stage2_sso

  1. CEIPの設定画面

stage2_CEIP

  1. 設定の確認画面

stage2_settings

  1. Stage2インストール開始前の確認

stage2_installer_alert

  1. Stage2のセットアップ

stage2_setup

  1. 完了
    このアプライアンスのセットアップに成功しました、と表示されます。
    ※セットアップ開始から、10分程度かかりました。

stage2_setup_finish

vSphere Web Clienthttps://192.168.66.130:443/vsphere-client/
アプライアンスの「はじめに」ページhttps://192.168.66.130:443

  1. vSphere Web Clientにアクセス

ユーザー名:administrator@vsphere.local
パスワード:設定したパスワード

vcenter

所感:
スムーズに行くかと思いきや、少し手こずったのと、時間もかかった印象。
メモリは結構厳しい。