Let’s Encryptの更新方法と更新の自動化

この投稿でLet’s Encryptで無料でSSL証明書を作りましたが有効期限が切れそうなので更新します。
環境は、サーバはさくらのVPS、OSはUbuntu16.04、webサーバはnginxです。

更新方法

参考:https://certbot.eff.org/#ubuntuxenial-nginx

Automating renewal

有効期限が切れる前に自動的に証明書を更新するようにCertbotを設定することができます。 Let’s Encrypt Encryptは90日間使用できるので、この機能を利用することをお勧めします。このコマンドを実行すると、証明書の自動更新をテストできます。

Ubuntu Xenial上のCertbotのバージョンに「電子メールなしで登録する!」という警告が表示されるバグがあります。以前にCertbotに電子メールを送っていたとしても。これが起こっても心配しないでください。更新には影響しません。それが正しく動作していると思われる場合は、以下を実行するcronまたはsystemdジョブを追加して自動更新を手配できます

更新する

更新はNginxをとめないといけません。止めずにrenewコマンドを実行すると、エラーがでます。

手動で更新する

Nginxを停止したのちに、renewコマンドを実行して、Nginxを再開するか、webrootプラグインを利用して、renewコマンドを実行する必要があります。webrootプラグインを利用する場合、80ポートにアクセスしてNot Foundとかにならないようにする必要があるようです。私の場合、httpsでしか接続できない(httpの場合強制的にhttpsにリダイレクトさせる)ようにしてあるので、webrootは使えませんでした。Nginx停止&再開をrenewコマンドの前後でやってみます。

自動更新させる

自動更新はcronを使います。

.crontabの中身を下記のようにします。

あるいは、ログを残しておく場合は下記のようにします。

crontabに反映させます。

設定がうまく反映できているかの確認をしたい場合、一旦上記cronの実行頻度を変更してすぐに実行させるようにしつつ、下記のような感じでログ出力したらいいと思います。

Ubuntu – cron

Ubuntu16.04です。

cronを使うには、crontabコマンドを使います。
crontab -e とやるとcronの編集ができますが、cron -rとやるとcronの設定内容が消えるので、危ないので気を付けるようにとネットでよく書いてあります。紹介されているのは、crontab -eで直接編集するのではなく、別ファイルでcron内容を作成・編集してcrontabで読み込むことです。

これで.crontabに書いた設定が反映されます。
ubuntu16.04の場合、cronの実行ログはデフォルトでは表示されないぽいです。またログの表示設定をしても、デフォルトでは、/var/log/cron.logは出力されず、/var/log/syslogに出力されるようです。実行ログのみでエラー内容や標準出力はログには残りません。/var/log/syslogにcronログを出力させるには、下記ファイルのcron関連のコメントを外してrsyslogを再起動します。

cronで実行結果をログに出力させるには、下記のようにします。
.crontab

2>&1の2は標準エラー出力、1は標準出力です。2を標準出力にリダイレクトさせることによって、エラーも出力されます。

複数コマンドを実行する場合、;か&&でつなげます。;は、前のコマンドがエラーでも次を実行します。&&はエラーだったら次を実行しません。複数コマンドを1行でつなげた場合、例えば下記のようにやっても最後のコマンドの出力以外は受け取れません。

下記のようにすると、最初のコマンドのエラーも含めた出力がファイルに保存されます。

下記なら、最初のechoに誤字があるので、その時点でエラーで終了し、エラー内容がファイルに出力されます。

さくらVPSにUbuntu16.04を入れた後の各種設定方法(1)

さくらVPSにUbuntu16.04を入れました。設定をしていきます。

参考:Ubuntuインストール

アップデート

SSH関連の設定

.sshディレクトリの作成

とりあえず.sshディレクトリを作成します。

公開鍵・秘密鍵を作成して公開鍵をサーバに転送する

次にローカルで秘密鍵を作成します。今windows10を使っていますが、gitをインストールしたらssh-kegenが入っているのでそれを使えるようです。あるいは、Tera Termでも簡単に作れます。作成した公開鍵をサーバに転送します。scpの場合下記のようになります。

サーバでauthorized_keysを作成する

サーバで、転送した公開鍵を./ssh/authorized_kesyに追加します。

SSHログインチェック

ローカルで下記のようにやってみます。windowsの場合、TeraTermを使ったりします。下記のhoge_rsaは秘密鍵です。

パスワード聞かれずにログインできたら成功です。

パスワードログインを禁止にする

  • Portを1万台にする
  • ルートログインを禁止する
    PermitRootLogin no
  • パスワードログインを禁止する
    PasswordAuthentication no
  • 指定したユーザーだけログイン可能にする(最下段に追加)
    AllowUsers ユーザー名

ファイル内のポート番号22を上記で変更した値にすべて変える

何も起こらなければ成功

sshサーバの再起動

TeraTermのマクロ作成

私はwindows10を使うときに、Teratermのマクロを使っていますので、それを作成します。

ファイヤーウォールの設定

ufwというコマンドで設定します。

VimとGitも入れておく

fail2banを入れる

下記を参考にやってみた。まず、/etc/fail2banに移動して、jail.localというファイルをつくって、そこに設定を書くといいらしい。

参考:Fail2ban fails to run after upgrade to Ubuntu 16.04
参考:How To Protect SSH With Fail2Ban on CentOS 7
参考:How To Protect SSH with Fail2Ban on Ubuntu 14.04

jail.local

fial2banを再起動する。enableは自動起動設定らしい。

下記で状態をチェックできる。statusの次にjail_nameをつけると、その詳細が表示される。

間違ったrootログインをしたら、fail2ban-client status sshdが更新された。しっかり動いている。でもメールの設定とかはまだ不十分かもしれない。

ログの場所のメモ

fail2banのログ

認証関連のログ

つかれた。残りは今度やる。セキュリティ対策は沢山やることあるなー。
参考: Ubuntu 12.04 LTSサーバーを安全にする

windows10のvisual studio codeでC言語開発環境をつくる

Visual studio codeはインストール済みです。visual studio codeは、ここからダウンロードできます。

コンパイラをインストールする

参考:WindowsでのC言語の開発環境(Eclipse)

まずは、コンパイラをMinGWからダウンロードします。mingw-get-setup.exeというのをダウンロードして、実行するとインストールが始まります。インストールを始めると、途中でMinCW Installation Managerという画面が出てきます。ここで、mingw32-baseと、mingw32-gcc-g++というのをチェックして、メニューのInstallation > Apply Changesをクリックして、チェックした2つをインストールします。

MinGW.org

PATHを通す

C:\MinGW\binにPATHを通します。細かいやり方はここに載っています。コマンドプロンプトで、gcc -vを実行して、バージョンがでたら成功です。

visual studio codeの設定

visual studio codeを開いて、拡張機能からc/c++と検索したら出てくる、Microsoftが出してる、C/C++というのをインストール・有効化します。コード整形とか、デバッグ機能とか便利な機能を沢山提供してくれるようです。

code_c

あとは、必要に応じて追加していきます。ちなみに、Visual studio codeは、Ctl + @で、コマンドプロンプトが出現します。なので、何かcのファイルをつくって、コマンドプロンプトを開いて、gcc hoge.cとかやるとコンパイルができます。

windows10のGPUを調べる(NIVIDA買ったのにNIVIDAになってない)

Windows10に搭載されているGPUを確認する

参考:Windows 10でPCスペックを確認する方法

上記サイトのとおり、デスクトップで右クリックして、ディスプレイ設定クリックして、ディスプレイの詳細設定クリックして、アダプターのプロパティ表示をクリックしました。すると下記が表示されました。

gpu

あら、私はNIVIDA GeforceなんとかがついてるPCを買ったはずなんですが、そうなってない。NIVIDAの設定というボタンはあるのですが、それをクリックしたら下記画面が表示されてエラーになります。まったく使えてなかったのか!?だからスターウォーズバトルフロントも死ぬほど遅かったのか!?

display

原因

ディスプレイをグラフィックボードにつなげてなかった。マザーボードにつなげてた。あほだなあ。改めて確認したら、きちんとNIVIDAになりました。

nivida

Xampp windows10 PHP sendmail 設定 (gmailを使う)

php.iniの設定と、sendmail.iniの設定をして、stunnelをインストールして、stunnel.confを設定する。

php.iniの設定

php.iniの場所は、xampp/php/php.ini
[mail function]という箇所を下記のようにする。

sendamil.iniの設定

sendmail.iniの場所は、xampp/sendmail/sendmaill.ini

stunnelのインストール

stunnel: Downloads

stunnel.confの設定

stunnel.confのバックアップをとっておき、中身を下記のようにする。

最後にXamppコントローラでApacheを再起動する。

phpStorm windowsショートカット

ファイル名から検索
ctrl + shift + n

クラス名から検索
ctrl + n

行削除
ctrl + x

行複製
ctrl + d

単語選択
ctrl + w

ブロックの自動作成
ctrl + shift + Enter

開いたファイル履歴表示
ctrl + e

指定行にジャンプ
ctrl + g

コードの自動成型
ctrl + alt + l

ライブテンプレート
ctrl + j

タブを閉じる
ctrl + F4 (使いづらいけど変更方法がわからない)

Mac El Capitan – MySQLインストール・設定

Macの状態

  • El Capitan 10.11.5です。
  • brewはインストール済みです。

MySQLインストール

MySQL起動

MySQL起動時のエラー

macを再起動したらなおった。mysqlを再インストールしてもなおらなかった。

MySQLの初期設定

rootパスワードの強度設定、新パスワード作成、アクセス制限などをする。全部yとしておく。

MySQLを使ってみる

phpMyAdminをインストール

phpMyAdminをダウンロードする

https://www.phpmyadmin.net/downloads/から、phpMyAdmin-4.6.2-all-languages.zipをダウンロードして、解凍する。

配置・設定

ブラウザで見てみる

http://localhost/phpmyadmin/

———————
追伸:
phpMyAdminもbrewでインストールできた。

brewでphpMyAdminをインストール

参考:https://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/

Nginxの設定(例)

$ vim /usr/local/etc/nginx/nginx.conf

下記を最後に加える

mac – El CapitanでcakePHP3を使う

Macの状態

  • macは、El Capitan 11.10.5です。
  • すでに、PHP7、MySQL、Nginxが入っています。composerもインストール済みです。
  • Nginxのドキュメントルートは、/usr/local/var/wwwです。

cakephp3のプロジェクトを作成する

ドキュメントルートに移動して、hogeプロジェクトを作成します。

php-fpmが変だったので直した

cakePHP3は、php5.5.9以上が必要で、php7もOKということで、php7をインストールしました。しかしphp-fpmのバージョンを確認すると、以前インストールされていたphp5.3のものでした。

php7のインストールは、 mac – phpを7.0にバージョンアップに記載の方法でやりました。php7のパスは、/usr/local/php5/binです。これに対応するphp-fpmは、/usr/local/php5/sbin/php-fpmです。なので、/usr/local/php5/sbinもパスに加えたらOKになりました。

.bash_profileを開く

下記を最後に追加する

.bash_profileを読み込む

php-fpmを起動

php-fpmのバージョン確認

Nginxの設定をcakephpに合わせて変更する

nginx.confを修正する

Nginxを再起動する

mac El CapitanにNginxをインストール

macは、El Capitan 10.11.5です。

Nginxインストール

インストールできた。

Nginxのバージョン確認

Nginxの設定を確認

下記に設定ファイルがあります。

rootには、htmlと書いてあるだけですが、ドキュメントルートは、/usr/local/var/wwwでした。

NginxでPHPが動くようにする

上記nginx.confの65行目〜71行目付近を下記のようにコメントを外して、編集します。

Nginxを再起動する

amazon linux – ffmpegインストール

引用:amazon linuxにffmpegをyumでインストールする

CentOS5.0にGitをyumでインストール

yum install gitだとインストールできません。

サーバタイプの確認

あと、下記コマンドでx86_64とかが確認できる。

rpmforgeを選ぶ

http://pkgs.repoforge.org/rpmforge-release/から、自分のサーバ環境に合うものを確認します。

自分は、CentOS-5 x86 64bitなので、http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpmを選びました。

rpmforgeのインストール

初期設定が常時使用になっているので、都度使用に変更する

yumでgitを検索

yumでgitをインストール

参考;
CentOS 5系にyumでgitをインストール
http://pkgs.repoforge.org/rpmforge-release/
yum install git でインストールできない場合 EPELリポジトリの追加

macでOpenCVを使う

インストール

Warning: port definitions are more than two weeks old, consider using selfupdate
Error: Insufficient privileges to write to MacPorts install prefix.

参考:YosemiteでMacportsが動かない & cmakeがインストールできない

opencvの場所

macportsでインストールすると、/opt/local/libにdylibファイルがあり、/opt/local/includeにhppファイルがあります。

xcodeでc++のサンプルプログラムつくる

参考:OpenCVをインストールしてXCodeで使う方法
上記に書いてあるとおりに設定します。

ウインドウが開いて1秒後に閉じるプログラム

MacでPythonを使って機械学習をやってみる

参考:MacでPythonの機械学習環境構築(2015年2月版)

brewが動かない。

参考:Yosemiteでbrewが壊れた

1行目の1.8をcurrentに変更する。

動くようになったっぽい。

pyenvをインストール

Homebrew requires Leopard or higher. For Tiger support, see:
https://github.com/mistydemeo/tigerbrew

Yosemiteだけど上記のようなエラーがでる。

参考:開発 備忘録 Mac環境とターミナルで多用するコマンド

1.8の部分をviで、Currentに直すと動くという記述を見つけたが、結局Tigerだと思われるようになり、動かなかった

rubyのバージョンは、ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]となっていて、/System/Library/Frameworks/Ruby.framework/Versions/には、2.0とCurrentがある。brew.rbの1行目のcurrentをCurrentとか2.0にしてみたけど、ダメだった。

homebrewアンインストール

参考:Homebrewをアンインストールするには

homebrewインストール

You have not agreed to the Xcode license.
Before running the installer again please agree to the license by opening
Xcode.app or running:
sudo xcodebuild -license

というエラーみたいのになる。どうもちょうどXcodeをアップデートして、同意しなきゃいけない状態だったみたい。Xcodeを起動してAgreeして再度インストールしたらできた。

改めて、pyenvをインストール

インストールできたけど、きちんと動かない。pyenvと打っても、変なヘルプ画面が表示される。

参考:Fails to run if XAMPP is installed #394

ここと同じ画面が表示されている。.bash_profileの内容がいけてないらしい。自分のをよく見たら、結構汚い。。とりあえず綺麗にして、export PATH=”/usr/bin:/bin:/usr/sbin:/sbin:~/bin”を1行目にして、export PATH=”$PATH:/applications/xampp/xamppfiles/bin”を最後の行にした。これで、きちんと使えるようになった。試行錯誤してたからかもしれないけど、最終的には、.bash_profileに、pyenv関連のpathは追加してないけど、今のところ動いている。

python3をインストールする

python2と3で色々変わっているらしい。昔やってたときは2だったはず。でも新しい3を使ってみる。

3.5.0が最新っぽい。
anacondaというのは、python3系だと、anaconda3-2.3.0が最新っぽい。

anacondaをインストール

あとは、rehashとか、localとか、globalとかいうのをやっとくといいらしい。