Ubuntu
setting ntp on Ubuntu
EC2のUbuntu14.04にntpを設定
事の発端は、AWSのS3へのアクセスのための認証に使用しているCognitoコードで認証エラーがでるようになった。
エラー内容はInvalidSigunatureException なんかタイムスタンプが早すぎるみたいなエラー内容。
Nodeのアプリを再起動しても、AWSのCognitoの設定をみても解決せず。 タイムスタンプが早すぎるって意味わかんねーよってdateコマンドを実行してみたら、あら時刻ずれてるじゃない。。
要はCognitoでトークンを生成するためのタイムスタンプがずれるのでどうしたってエラーになっちゃう問題。
時刻がずれていることが原因と分かったので、暫定措置として時刻をあわせる(日本標準時)。 ※サーバーはUbuntu14.04
sudo ntpdate ntp.nict.jp
※前提としてntpdateがインストールされていること
いろいろ調べていたら、EC2でUbuntuを使うならNTPサーバーを利用して下さい的な感じだった。
NTPを入れる
根本解決のため、NTPサーバー機能をいれる。
sudo apt-get install -y ntp
そんで設定ファイルを編集する。 /etc/ntp.conf
- デフォルトの時刻サーバーをコメントアウト
- 代わりに
server ntp.nict.jp
を3行書く
上記の設定と内容の説明については他人の記事をご参照ください。
編集したらNTPサーバービスを再起動する
ぐお、タイムゾーンが
作業したサーバー(どちらもUbuntu14.04)のうち、1つがUTC、1つがJSTのタイムゾーンになってて、キモティ悪かったので、揃える。
sudo timedatectl set-timezone Asia/Tokyo
これでOK
嘘でしょう。。。
長い間悩まされていた問題が解決したかもしれないので、ここに書いておきましょう。
実際に解決したかどうかは、会社と自宅とPocket-Wifiで何回かネットワークを切り替えてから。
悩まされていた問題
会社やPocket-Wifiでは問題ないが、なぜか自宅のWifi環境だとMacのVM上のUbuntu(開発環境)のネットワークが繋がらなくなる。
VMのネットワーク設定を「Macと共有」の時は問題なくて「自動検出」にするとVMのUbuntuのIPが正しく設定されない。
ひとまず解決?
前提として、このUbuntuはDesktop 14.04LTSです。なのでUbuntuServerの場合は違うかも。
/etc/NetworkManager/system-connections/ 配下のネットワークの設定ファイルのファイル名に日本語(マルチバイト文字)が含まれていたので、ASCII文字のみに変更。
/etc/NetworkManager/system-connections/ のファイル名を変更したものを開く
この設定ファイルの中の「connection」にあるidの設定を変更したファイル名に合わせる。
これだけでネットワークつながるようになった。というかipが正しくふられるようになった。
まさかのマルチバイト文字ファイル名問題?
Ubuntu14.04 でphpでメール受信とか
## install postfix
“`
sudo apt-get install postfix postfix-dev sasl2-bin
sudo apt-get install dovecot-core dovecot-dev dovecot-pop3d dovecot-imapd dovecot-gssapt
“`
## Settings
“`
sudo cp /usr/lib/postfix/main.cf /etc/postfix/main.cf
sudo emacs -nw /etc/postfix/main.cf
“`
### 参考
– http://www.server-world.info/query?os=Ubuntu_14.04&p=mail
– http://www.server-world.info/query?os=Ubuntu_14.04&p=mail&f=2
### gmailに転送する設定に変更
relayhostにgmailを指定
パスワードの設定とかね。
## phpでメールを受信出来るよう設定
メールサーバ受信DNS設定とか面倒だからやめた。
phpinfoを見ると案の定imap入ってませんでしたので、php5.5系の落としてきてimapのディレクトリ移動してphpize
### configureで失敗する
configureしたらutf8_mime2text()がうんたらと出てきた。
ググると、どうもphpにimapとかメール関係入れる時にライブラリが足りないと出るエラーのようだ。
sudo apt-cache search libc-client
Ubuntu14.04 LTS でNginx FasCGI Perl
古いPerlのサンプルを参考に復習したくなって、やむなく自分の開発環境にFastCGI環境をセットアップ
最初、コードが間違っているのに気づかず3日ほどあれこれ調べまわっても解決せず時間を浪費した。
502 bad gatewayのエラーでて、ログを見ると Cannot execute script って出てて、調べても分からんし、権限は間違ってるはず無いしでずっとつまずいてた。
結局、
sudo apt-get install fcgiwrap
※もしかしたら libgcgi-perlも必要?でもなんか下記のfastcgi-wrapper.plを使う場合に必要なやつかも
/etc/init.d/fcgiwrap のFCGI_USERあたりを動かしたいユーザーやグループに変更。※お好みで
sudo sysv-rc-conf on fcgiwrap
sudo service fcgiwrap start
でFastCGIが動くようになる。
最初、fastcgi-wrapper.plを使う場合を参考にしてたけど、
参考:http://ubuntu.flowconsult.at/linux/nginx-perl-fastcgi-installation-ubuntu-linux-14-04/
これだとなんかPerlのみっぽかったしTCPだったので、Unixソケットで通信にしたかったのとpythonやRubyでも動かしたかったのでfcgiwrapを使うようにした。
Nginxの設定はlocationディレクティブだけ抜粋すると
#拡張子が.plで終わるリクエストの場合
location ~ \.pl$ {
try_files $uri = 404;
gzip off;
#インストールしたfcgiwrapのソケットファイルのパス
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#/etc/nginx/fastcgi_paramsの内容を読み込む。
include fastcgi_params;
}
で
新しく開発環境作成中
Ubuntu14(64bit)のVM作成
-
イメージからVMWareFusionに作成
-
ホームディレクトリ以下のディレクトリ群が日本語なので英語名に変更
-
ターミナルから LANG=C xdg-user-dirs-gtk-update を実行 LANG=C xdg-user-dirs-gtk-update
-
設定画面が出てくるので、そのままOK
-
-
VMWare toolsをインストール
- VMWareのメニューバーからインストールってやると仮想CDがマウントされるのでデスクトップあたりに展開
- 展開したディレクトリの中に入ってインストール実行
-
aptのアップデートとアップグレード sudo apt-get update
sudo apt-get upgrade -
Dropboxクライアントのインストール
- FirefoxでDropbox検索してログイン→クライアントツールをダウンロードしてインストール
- Dropboxを入れる理由は次のEmacsの設定ファイルをDropboxで共有しているから
-
Emacsのインストール sudo apt-get install emacs24
- Dropboxにある設定ファイル群(emacs.d)のシンボリックリンクを作成
- 作成したシンボリックリンクの名前変更 ※ダイレクトに.emacs.dのリンクを作成だとうまく行かなかった
ln -s ~/Dropbox/emacs.d ~/emacs.d
mv ~/emacs.d ~/.emacs.d
-
バージョン管理のインストール sudo apt-get install git
sudo apt-get install mercurial
Linux関係のメモ201407
Ubuntu系でのchkconfigに変わるコマンドってなんだっけ?
-> sysv-rc-confがそれに相当するがデフォルトでは入っていないのでインストールが必要……
checkconfigてLinux全般共通じゃなかったんだ……
・Ubuntu系でインストール済みのパッケージを見るのはdpkg -l(える) この後にgrep付けるヨロシ
・Ubuntuでパッケージの検索はapt-cache search
apt-get searchじゃなかった……