カテゴリー: FreeBSD

  • 現在のシェルの調べ方(カレントシェルの調べ方)

    現在のshell(current shell)を調べるのは、環境変数の$SHELL(または$shell)をechoで表示させる。

    $ echo $SHELL
    /bin/bash
    
    % echo $shell
    /bin/tcsh
    

    これの欠点としては、bashの上で、tcshを起動した場合、「echo $SHELL」で、bashを返してきてしまう。この時「echo $shell」を実行すると、tcshを返してくる。なので、多重起動させると、よくわからなくなってしまうこと。

    そんなときは、echo $0 も実行してみる。そうすると、現在、実行中のシェルを返してくれる。$0は、特殊な変数で、実行しているシェルスクリプトのファイルパスが格納されるとのこと。

    $ echo $0
    -bash
    

    参考: http://www.ksknet.net/cat24/0_1.html

  • pukiwikiで突然、pkwk_touch_fileのエラーが出た

    pukiwikiでページを更新したところ、画面が白くなり、何も表示されなくなった。ページを更新したところ、下記のエラーが表示された。更新したはずページは、中身が空っぽで表示されず。更新しても、下記のエラーが表示されるだけになった。

    pkwk_touch_file(): Invalid UID and (not writable for the directory or not a flie): recent.dat
    

    急に、これになったので、権限の問題ではない。単純に、ディスクがいっぱいでファイルの書き込みができなかったからだった。容量不足で書き込めていないので、”recent.dat”というファイルを探しても見つからない。

    ディスク上の不要なファイルを削除して、空き容量を作り、無事に書き込めるようになり、解決した。

  • drillコマンドでSPFレコードを確認する方法

    drillコマンドで、TXTレコードを表示することで、SPFレコードの設定が確認できる。 TXTレコードは、”-t txt “をオプションで指定する。

    dirll @dnsサーバ -t TXT ドメイン名
    

    ※ 使い方は、digコマンドと同じ。

    実行例。

    ~ % drill -t txt xenos.jp
    ;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 46810
    ;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; QUESTION SECTION:
    ;; xenos.jp.    IN      TXT
    
    ;; ANSWER SECTION:
    xenos.jp.       120     IN      TXT     "v=spf1 include:_spf.google.com ~all"
    
    ;; AUTHORITY SECTION:
    
    ;; ADDITIONAL SECTION:
    
    ;; Query time: 44 msec
    ;; SERVER: 157.7.180.133
    ;; WHEN: Wed Dec 18 12:03:34 2019
    ;; MSG SIZE  rcvd: 74
    ~ %
    
  • Let’s Encryptの証明書更新に失敗していた話

    FreeBSDでLet’s Encryptを使ってWebサーバのSSL証明書を作っている。毎回、手作業で行うのはめんどくさいので、cronで自動的に実行させていた。自動更新させていたが、ある日、証明書の有効期限が切れているとブラウザが警告してきたので、調べたところ・・・pkgのアップデートを少し前にやったときに実行ファイルのバージョン(というかファイル名)が変わっていたようで、そのため、cronは実行されるがエラーになっていた模様。ついでにもともとシンボリックリンクだったはずだが、それも消えていた。

    もともと実行していたコマンド

    /usr/local/bin/certbot renew
    

    今のコマンド

    /usr/local/bin/certbot-2.7 renew
    

    凡ミス。pkgをアップデートするときは、気をつけないといけないな。

  • pkgでApacheを更新したら、WARNINGで起動せず

    FreeBSDのpkgで、まるっとアップデートしたら、Apache24が起動時に、WARNINGをはいて起動しなくなった。

    ■発生したエラー

    Mar 22 14:22:10 ray root: /etc/rc: WARNING: failed to start apache24
    Mar 22 14:22:10 ray kernel: pid 763 (httpd), uid 0: exited on signal 11 (core dumped)
    

    ■対応

    • OSの再起動したが、変わらず。
    • Apache24の起動も試したが変わらず。
    • 仕方ないので、一度、Apache24をアンインストール。依存していたパッケージもアンインストールされたので、mod_phpも再インストール。
       pkg delete apache24-2.4.29
       pkg install apache24-2.4.29
       pkg install mod_php56-5.6.32_1
      
    • 再インストール後、Apache24を起動させたところ、無事に起動した。
  • FreeBSD10でApache2.4でUser Dirの設定を行ったところ、エラーになり、User Dirが設定されない

    FreeBSD 10.3 で「/usr/local/etc/apache24/extra/httpd-userdir.conf」
    の内容を変更して、httpd.confに「Include etc/apache24/extra/httpd-userdir.conf」
    の設定をして、Apacheをリスタートさせたところ、
    以下のエラーをはいて、UserDir?は使用できなかった。

    root@hoge:/usr/local/etc/apache24 # service apache24 restart
    Performing sanity check on apache24 configuration:
    AH00526: Syntax error on line 10 of /usr/local/etc/apache24/extra/httpd-userdir.conf:
    Invalid command 'UserDir', perhaps misspelled or defined by a module not included in the server configuration
    root@hoge:/usr/local/etc/apache24 #
    

    対処方法は簡単だった。
    httpd.conf に、以下の設定を入れるか、もともとあるコメントアウトを外すだけ。

    LoadModule userdir_module libexec/apache24/mod_userdir.so

    ユーザ用のディレクトリを設定するのにも、モジュールの読み込みが必要なだけだった。
    わかってしまえば、大したことがなかった。

  • FreeBSD 10 は、sysinstallが廃止されていた

    久しぶりに、FreeBSDをインストールしたら、
    FreeBSD 10は、sysinstallが廃止されていた。
    変わりに、bsdconfig コマンドを使用する。

    使い勝手や見た目などは、sysinstallと同じなので、
    コマンドが変わったくらいの間隔で使用できる(使用できた)。

  • FreeBSDにJekyllをインストール

    FreeBSDに静的サイトジェネレータのJekyllをインストールするには、Portsを使うと楽。
    portsなので、make, make installするだけでOK。
    インストール方法は以下(portsだから書くほどもでもないか)

    # cd /usr/ports/www/rubygem-jekyll/
    # make 
    # make install
    

    rubyやrubygemが入っていなくても、依存関係で同時にインストールしてくれる。
    jekyllがインストールされた先は下記。

    /usr/local/bin/jekyll
    
  • ログインShellを変更する方法

    ログイン時に使用するShellを変更したい場合は、chshコマンドで変更する。

    $ chsh -s Shellのパス

    オプションなしで実行した場合は、エディタ(デフォルトではvi)が開き、ユーザ情報の編集ができる。Shellの書き換えは一番上の「Shell: /bin/sh」と表示されている場所を修正すればよい。

    昔、直接/etc/passwdを修正していたような・・・便利になったということか。それとも単に知らなかっただけか。

    例)shをtcshに変更する

    $ cat /etc/passwd | grep yama
    yama::1002:20:Yoshi Yamada:/home/yama:/bin/sh $ $ chsh -s /bin/tcsh Password: chsh: user information updated $ $ $ cat /etc/passwd | grep yama yama::1002:20:Yoshi Yamada:/home/yama:/bin/tcsh
    $

    今回変更したのは、FreeBSD。コマンドを調べたら、Linuxでも同じコマンドでできる。便利だなぁ。

  • FreeBSD 9.3 に Node.jsをインストール(+Expressも)

    ちょっと前に、FreeBSD9.3にMongoDBをインストールしたので、
    今度は、Node.jsとExpressをインストール。
    これでMEANスタック環境に必要なものは揃う。

    ■Node.jsのインストール

    portsから、Node.jsをインストール。

     root@viola:~ # cd /usr/ports/www/node
     root@viola:/usr/ports/www/node # ls
     Makefile        files           pkg-message
     distinfo        pkg-descr       pkg-plist
     root@viola:/usr/ports/www/node #
     root@viola:/usr/ports/www/node # make install
    

    ■npmのインストール

    npmもportsからインストールしようとしたのだが、developerツールのインストールでこける。
    仕方がないので、パッケージからインストール。

     root@viola:/usr/ports/www/npm # pkg install npm
     Updating FreeBSD repository catalogue...
     FreeBSD repository is up-to-date.
     All repositories are up-to-date.
     Updating database digests format: 100%
     The following 1 packages will be affected (of 0 checked):
     
     New packages to be INSTALLED:
             npm: 2.1.16
     
     The process will require 7 MB more space.
     1 MB to be downloaded.
     
     Proceed with this action? [y/N]: y
     Fetching npm-2.1.16.txz: 100%    1 MB 481.7k/s    00:03
     Checking integrity... done (0 conflicting)
     [1/1] Installing npm-2.1.16...
     [1/1] Extracting npm-2.1.16: 100%
     root@viola:/usr/ports/www/npm #
    

    ■Expressのインストール

    npmを使って、JavaScriptのフレームワークExpressをインストール。
    かなり簡単にインストールできた。

     root@viola:~ # npm install express
     express@4.10.6 node_modules/express
     tqq utils-merge@1.0.0
     tqq merge-descriptors@0.0.2
     tqq fresh@0.2.4
     tqq cookie@0.1.2
     tqq escape-html@1.0.1
     tqq range-parser@1.0.2
     tqq cookie-signature@1.0.5
     tqq finalhandler@0.3.2
     tqq vary@1.0.0
     tqq media-typer@0.3.0
     tqq parseurl@1.3.0
     tqq methods@1.1.0
     tqq serve-static@1.7.2
     tqq content-disposition@0.5.0
     tqq path-to-regexp@0.1.3
     tqq depd@1.0.0
     tqq qs@2.3.3
     tqq etag@1.5.1 (crc@3.2.1)
     tqq debug@2.1.1 (ms@0.6.2)
     tqq on-finished@2.1.1 (ee-first@1.1.0)
     tqq proxy-addr@1.0.4 (forwarded@0.1.0, ipaddr.js@0.1.5)
     tqq send@0.10.1 (destroy@1.0.3, ms@0.6.2, mime@1.2.11)
     tqq accepts@1.1.4 (negotiator@0.4.9, mime-types@2.0.7)
     mqq type-is@1.5.5 (mime-types@2.0.7)
     root@viola:~ #
    

    FreeBSDでも簡単にMEAN環境は作れるな。