カテゴリー: Linux

  • Nginxに中間CA証明書をインストールするときの注意

    Nginxは、サーバ証明書を1つしか設定できない。そのため、中間CA証明書を指定しなければならない場合は、1つのファイルに複数の証明書を記述する。

    このとき、中間CA証明書は、サーバ証明書の後に、中間CA証明書を指定する。中間CA証明書を最初に記述すると、エラーになるので、注意が必要。

  • sudo したときに、”ユーザ名 is not in the sudoers file” が表示されるようになったときの対処

    Ubuntuで、sudo したときに、”ユーザ名 is not in the sudoers file” が表示されるようになったときの対処。

    まずは、/etc/group の sudo グループに、対象のユーザが入っているかを確認する。ここに入ってなければ、そのユーザはグループの変更のコマンドをミスし、自分で自分の sudo 権限を外しただけ。もしくは他の人が sudo 権限を外しただけ。

    対処としては、sudo グループに追加してあげる。

  • UbuntuでSSHでログイン時に表示されるメッセージを追加する

    Ubuntuは、ログイン時に、下記のディレクトリにあるスクリプトを実行する。このフォルダに、実行できるシェルシェルスクリプトとして、記載することでログイン時のメッセージを表示させることができる。

     /etc/update-motd.d/

    たとえば、下記のような形で、メッセージを表示するスクリプトを書いて実行させる。

    ~$ cat /etc/update-motd.d/99-hostinfo
    #!/bin/sh
    printf "\n";
    printf "##############################################\n";
    printf "#  WEB Server Production Enviroment     #\n";
    printf "##############################################\n";
    printf "\n";
    
  • インストール済みのaptのパッケージを表示する

    Ubuntuでパッケージのインストールは、apt install XXXでできる。インストールされたパッケージの一覧は、aptコマンドではできない。インストール済みのパッケージの表示するには、dpkgコマンドを使う。

    dpkg -l

    実行例。

    ~$ dpkg -l
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name           Version      Architecture Description
    +++-==============-============-============-=================================
    ii  accountsservic 0.6.45-1ubun amd64        query and manipulate user account
    ii  adduser        3.116ubuntu1 all          add and remove users and groups
    ii  adwaita-icon-t 3.28.0-1ubun all          default icon theme of GNOME (smal
    ii  amd64-microcod 3.20180524.1 amd64        Processor microcode firmware for
    
  • GitLabをインストールしてみた

    Gitの管理で楽をしたかったので、GitLabをインストールしてみた。(もっと楽をするならば、GitHubやBacklogを契約すればいいのだろうけど)

    インストール先は、Ubuntu 18.04 Desktop。Serverにしておけばよかった。

    最初にGitLabのインストールに必要なツールをインストールする。

    sudo apt install openssh-server
    sudo apt install curl
    sudo apt install postfix 
    

    次に、aptの参照先にgitlabのものを追加する。

    curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash 
    

    aptでgitlabをインストールする。

    sudo apt install gitlab-ce 
    

    gitlabの設定ファイルを編集する。エディタはインストールしている好きなものを指定する。

    sudo xemacs21 /etc/gitlab/gitlab.rb 
    

    最低限のアクセス用のURLとタイムゾーンを変更する。それ以外は、必要に応じてカスタマイズする。とりあえず動かすだけならば、この2つ。

    external_url 
    gitlab_rails['time_zone'] = 'Asia/Tokyo' 

    設定を反映させる。

    sudo gitlab-ctl reconfigure 
    

    実際にアクセスしてみて、Gitlabが表示されればOK。初回のアクセス時にrootユーザのパスワード設定があるので、忘れずに行う。

    ■インストールしたときのログ。

    zen@LAB:~$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    Detected operating system as Ubuntu/bionic.
    Checking for curl...
    Detected curl...
    Checking for gpg...
    Detected gpg...
    Running apt-get update... done.
    Installing apt-transport-https... done.
    Installing /etc/apt/sources.list.d/gitlab_gitlab-ce.list...done.
    Importing packagecloud gpg key... done.
    Running apt-get update... done.
    
    The repository is setup! You can now install packages.
    zen@LAB:~$
    zen@LAB:~$
    zen@LAB:~$
    zen@LAB:~$
    zen@LAB:~$ sudo apt install gitlab-ce
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    以下のパッケージが新たにインストールされます:
      gitlab-ce
    アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
    708 MB のアーカイブを取得する必要があります。
    この操作後に追加で 1,858 MB のディスク容量が消費されます。
    取得:1 https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu bionic/main amd64 gitlab-ce amd64 12.3.2-ce.0 [708 MB]
    708 MB を 15秒 で取得しました (47.3 MB/s)
    以前に未選択のパッケージ gitlab-ce を選択しています。
    (データベースを読み込んでいます ... 現在 172865 個のファイルとディレクトリがインストールされています。)
    .../gitlab-ce_12.3.2-ce.0_amd64.deb を展開する準備をしています ...
    gitlab-ce (12.3.2-ce.0) を展開しています...
    gitlab-ce (12.3.2-ce.0) を設定しています ...
    It looks like GitLab has not been configured yet; skipping the upgrade script.
    
           *.                  *.
          ***                 ***
         *****               *****
        .******             *******
        ********            ********
       ,,,,,,,,,***********,,,,,,,,,
      ,,,,,,,,,,,*********,,,,,,,,,,,
      .,,,,,,,,,,,*******,,,,,,,,,,,,
          ,,,,,,,,,*****,,,,,,,,,.
             ,,,,,,,****,,,,,,
                .,,,***,,,,
                    ,*,.
    
    
    
         _______ __  __          __
        / ____(_) /_/ /   ____ _/ /_
       / / __/ / __/ /   / __ `/ __ \
      / /_/ / / /_/ /___/ /_/ / /_/ /
      \____/_/\__/_____/\__,_/_.___/
    
    
    Thank you for installing GitLab!
    GitLab was unable to detect a valid hostname for your instance.
    Please configure a URL for your GitLab instance by setting `external_url`
    configuration in /etc/gitlab/gitlab.rb file.
    Then, you can start your GitLab instance by running the following command:
      sudo gitlab-ctl reconfigure
    
    For a comprehensive list of configuration options please see the Omnibus GitLab readme
    https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
    
    zen@LAB:~$
    
  • Ubuntu19.04にGitlabをインストールしようとするとエラーになる

    Ubuntu19.04にGitlabをインストールしようとすると「E: パッケージ gitlab-ce が見つかりません」とエラーになる。

    ~$ sudo EXTERNAL_URL="http://localhost" apt install gitl
    ab-ce
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    E: パッケージ gitlab-ce が見つかりません
    

    状況を調べたところ、インストール時に下記のコマンドを実行したが、apt(apt-get)先に登録されていなかった。

    curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash 
    

    gitlabの対応OSが、Ubuntu16.04とUbuntu18.04で、Ubuntu19.04が入っていないので、ここではじかれているものと思われる。色気を出さずに、Ubuntu18.04で同じことを試したところ、あっさりとgitlabのインストールができた。そのため、対応OSのバージョン不一致が原因。

  • GitLab Community Edition 12.3.3のデータの場所

    Ubuntu 18.04にインストールしたときのGitLab Community Edition 12.3.3 のデータの保存先など。

    データベースやgitのリポジトリのデータなど。

    /var/opt/gitlab
    

    アプリケーションのインストール先。

    /opt/gitlab
    
  • Ubuntu 18.04のディスクを拡張する

    Redmine用に使っていたUbuntuのディスクが今後足りなくなる見込みだったので、追加して、Ubuntuで使う領域も増やした作業のメモ。

    ディスクを増やす環境は、VMware ESXi上の仮想サーバなので、割り当てサイズを20GBから100GBに変更した。HDDの割り当てサイズを増やしただけでは、Ubuntu上で自動的に拡張はされないので、パーティションサイズを変更して、そのあとにファイルシステムを拡張する作業が必要。

    パーティションの変更を行うため、parted コマンドを実行する

     sudo parted 
    

    ディスクの空き領域を確認する。このとき、Ubuntuで使用しているファイルシステムの番号を確認する。

    print free 
    

    2番の領域をリサイズする。このコマンドを実行したときに、どこまで拡張するのかを問われるので、答える。今回は少し空きを残したかったので、100%ではなく、95%を指定した。(作業ログ参照)

    resizepart 2 
    

    もう一度、ディスクの空き領域を確認し、上記でリサイズした番号の領域が広がっていることを確認する。

    print free
    

    リサイズが成功していれば、quitでpartedを終了する。

    次に、ext4のファイルシステムを拡張する。resize2fsコマンドで、拡張するファイルシステムを指定する。

    sudo resize2fs /dev/sda2
    

    最後に、df -h でファイルシステムが拡張されているか確認する。

    今回は、SWAP領域がなく、すべてext4の領域だったので、面倒なことはなく、簡単に拡張できた。

    コマンドメモ

    • parted ・・・ パーティションの作成や削除を行うコマンド
    • resize2fs ・・・ ext2/ext3/ext4のファイルシステムをリサイズするコマンド

    作業のログ

    zen@redmine:~$ sudo parted
    GNU Parted 3.2
    /dev/sda を使用
    GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
    (parted) help
      align-check TYPE N            パーティション N のアライメント(TYPE: min|opt)をチェックする
      help [コマンド]               ヘルプ表示。コマンド指定でそのヘルプを表示
      mklabel,mktable ラベルの種類  新しいラベル(パーティションテーブル)を作る
      mkpart パーティションの種類 [ファイルシステムの種類] 開始 終了
                        パーティションを作る
      name NUMBER 名前              パーティションに名前をつける
      print [devices|free|list,all|NUMBER]
                         パーティションテーブルや、利用可能なデバイス、空き領域、
                         見つかった全てのパーティション、あるいは特定のパーティションについて表示する
      quit                          プログラムを終了する
      rescue 開始 終了              開始、終了で指定した範囲付近にあるパーティションを復活させる
      resizepart NUMBER END         パーティション NUMBER を END にリサイズする
      rm NUMBER                     パーティションを削除する
      select デバイス               操作するデバイスを選択
      disk_set FLAG STATE           選択したデバイスの FLAG を変更
      disk_toggle [FLAG]            選択したデバイスの FLAG の状態をトグル
      set NUMBER フラグ 状態        ファイルシステムのフラグと状態を設定する
      toggle [NUMBER [FLAG]]        パーティションのフラグの状態を反転する
      unit UNIT                     デフォルトの単位を UNIT にする
      version                       GNU Parted のバージョンと著作権情報を表示
    (parted)
    (parted) print free
    モデル: VMware Virtual disk (scsi)
    ディスク /dev/sda: 107GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    ディスクフラグ:
    
    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
          17.4kB  1049kB  1031kB  空き容量
     1    1049kB  2097kB  1049kB                          bios_grub
     2    2097kB  21.5GB  21.5GB  ext4
          21.5GB  107GB   85.9GB  空き容量
    
    (parted) resizepart 2
    警告: パーティション /dev/sda2 は使用中です。それでも実行しますか?
    はい(Y)/Yes/いいえ(N)/No? Y
    終了?  [21.5GB]? 95%
    (parted)
    (parted)
    (parted) print free
    モデル: VMware Virtual disk (scsi)
    ディスク /dev/sda: 107GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    ディスクフラグ:
    
    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
          17.4kB  1049kB  1031kB  空き容量
     1    1049kB  2097kB  1049kB                          bios_grub
     2    2097kB  102GB   102GB   ext4
          102GB   107GB   5369MB  空き容量
    
    (parted)
    (parted) quit
    通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
    
    zen@redmine:~$
    zen@redmine:~$
    zen@redmine:~$ df -lh
    Filesystem      Size  Used Avail Use% Mounted on
    udev            967M     0  967M   0% /dev
    tmpfs           200M  1.1M  199M   1% /run
    /dev/sda2        20G  7.6G   11G  41% /
    tmpfs           997M  8.0K  997M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           997M     0  997M   0% /sys/fs/cgroup
    /dev/loop0       90M   90M     0 100% /snap/core/7713
    /dev/loop1       89M   89M     0 100% /snap/core/7396
    tmpfs           200M     0  200M   0% /run/user/1000
    zen@redmine:~$
    zen@redmine:~$
    zen@redmine:~$
    zen@redmine:~$
    zen@redmine:~$ sudo resize
    resize2fs   resizecons  resizepart
    zen@redmine:~$ sudo resize2fs /dev/sda2
    resize2fs 1.44.1 (24-Mar-2018)
    Filesystem at /dev/sda2 is mounted on /; on-line resizing required
    old_desc_blocks = 3, new_desc_blocks = 12
    The filesystem on /dev/sda2 is now 24903168 (4k) blocks long.
    
    zen@redmine:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            967M     0  967M   0% /dev
    tmpfs           200M  1.1M  199M   1% /run
    /dev/sda2        94G  7.6G   82G   9% /
    tmpfs           997M  8.0K  997M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           997M     0  997M   0% /sys/fs/cgroup
    /dev/loop0       90M   90M     0 100% /snap/core/7713
    /dev/loop1       89M   89M     0 100% /snap/core/7396
    tmpfs           200M     0  200M   0% /run/user/1000
    zen@redmine:~$
    
  • Ubuntu タイムゾーンの設定

    Ubuntuでタイムゾーンの設定をCLIで変更するときの手順。GUIが使えるのならば、GUIでやった方が楽。

    まずは、timedatectlコマンドで現在のタイムゾーンがどこなのかを確認する。

    ~$ timedatectl
                          Local time: Tue 2019-06-25 06:01:14 UTC
                      Universal time: Tue 2019-06-25 06:01:14 UTC
                            RTC time: Tue 2019-06-25 06:01:15
                           Time zone: Etc/UTC (UTC, +0000)
           System clock synchronized: yes
    systemd-timesyncd.service active: yes
                     RTC in local TZ: no
    

    次に、”timedatectl list-timezones”で、タイムゾーンを表示させ、中から選ぶ。量が多いので、grepなどを使ってある程度絞り込むとよい。

    次に、”timedatectl set-timezone タイムゾーン” で、変更後タイムゾーンを変更する。成功したかどうかの反応はないため、実行後に設定を確認する。

    ~$ sudo timedatectl set-timezone America/Los_Angeles
    ~$ 
    ~$ timedatectl
                          Local time: Mon 2019-06-24 23:02:41 PDT
                      Universal time: Tue 2019-06-25 06:02:41 UTC
                            RTC time: Tue 2019-06-25 06:02:42
                           Time zone: America/Los_Angeles (PDT, -0700)
           System clock synchronized: yes
    systemd-timesyncd.service active: yes
                     RTC in local TZ: no
    ~$
    

    設定例(sudoを付けずに実行しているため、途中で失敗もしている)

    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$ timedatectl list-timezones | grep -i america/Los
    America/Los_Angeles
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$ timedatectl
                          Local time: Tue 2019-06-25 06:01:14 UTC
                      Universal time: Tue 2019-06-25 06:01:14 UTC
                            RTC time: Tue 2019-06-25 06:01:15
                           Time zone: Etc/UTC (UTC, +0000)
           System clock synchronized: yes
    systemd-timesyncd.service active: yes
                     RTC in local TZ: no
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$ timedatectl list-timezones | grep -i america/Los
    America/Los_Angeles
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$ timedatectl set-timezone America/Los_Angeles
    ==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ===
    Authentication is required to set the system timezone.
    Authenticating as: Ubuntu (ubuntu)
    Password:
    polkit-agent-helper-1: pam_authenticate failed: Authentication failure
    ==== AUTHENTICATION FAILED ===
    Failed to set time zone: Access denied
    ubuntu@ip-10-0-0-122:~$ sudo timedatectl set-timezone America/Los_Angeles
    ubuntu@ip-10-0-0-122:~$
    ubuntu@ip-10-0-0-122:~$ timedatectl
                          Local time: Mon 2019-06-24 23:02:41 PDT
                      Universal time: Tue 2019-06-25 06:02:41 UTC
                            RTC time: Tue 2019-06-25 06:02:42
                           Time zone: America/Los_Angeles (PDT, -0700)
           System clock synchronized: yes
    systemd-timesyncd.service active: yes
                     RTC in local TZ: no
    ubuntu@ip-10-0-0-122:~$
    
  • Ubuntu のSWAPに関するメモ

    Ubuntu Server 18.04.1では、”/swap.img” というファイルがスワップとして使用されている。パーティションでもなく、ファイルがSWAPの領域なので柔軟といえば柔軟か。

    “swapon -s” コマンドで現在のスワップの状態を確認できる。

    スワップをOFFにする場合は、”swapoff” コマンドで無効化できる。