カテゴリー: Linux

  • PHPのバージョンアップしたら、Nginxが起動しなくなった

    Ubuntu 18.04で、PHPをPHP7.2からPHP7.4にアップデートしたところ、作業後にOSを再起動したら、Nginxが起動しなくなった。原因を調べて対処したので、メモを残す。

    Nginxのステータスを確認したところ。

    ubuntu@ip-10-0-0-122:/etc/nginx$ sudo service nginx status
    ● nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
       Active: failed (Result: exit-code) since Wed 2020-10-14 22:35:23 PDT; 5s ago
         Docs: man:nginx(8)
      Process: 1296 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
    Oct 14 22:35:23 ip-10-0-0-122 systemd[1]: Starting A high performance web server and a reverse proxy server...
    Oct 14 22:35:23 ip-10-0-0-122 nginx[1296]: nginx: [emerg] "try_files" directive is duplicate in /etc/nginx/sites-enabled
    Oct 14 22:35:23 ip-10-0-0-122 nginx[1296]: nginx: configuration file /etc/nginx/nginx.conf test failed
    Oct 14 22:35:23 ip-10-0-0-122 systemd[1]: nginx.service: Control process exited, code=exited status=1
    Oct 14 22:35:23 ip-10-0-0-122 systemd[1]: nginx.service: Failed with result 'exit-code'.
    Oct 14 22:35:23 ip-10-0-0-122 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
    ubuntu@ip-10-0-0-122:/etc/nginx$
    

    PHP7.4にアップデートしたタイミングで、Apacheがインストールされて、これが自動起動しており、Nginxと、ポート80の使用が競合して、Nginxが落ちていた。apache2の自動起動を停止する。

    sudo systemctl disable apache2
    

    それでも、まだ、Nginxの起動でエラーになる。ログを見ると、コンフィグの問題のようなので、configtestを実施し、見事にエラーになる。

    ubuntu@ip-10-0-0-122:/etc/nginx/sites-available$ sudo service nginx configtest
     * Testing nginx configuration                                                                                   [fail]
    ubuntu@ip-10-0-0-122:/etc/nginx/sites-available$
    

    Nginxのコンフィグのdefaultで、php7.2-fpmの部分を、php7.4-fpmのsockに書き換え。

    その後、Nginxの起動を試すが失敗。Nginxのコンフィグチェックを行って、エラーになっている行を特定。

    sudo nginx -t
    nginx: [emerg] "try_files" directive is duplicate in /etc/nginx/sites-enabled/default:77
    nginx: configuration file /etc/nginx/nginx.conf test failed
    

    “try_files” がダブっているというので、場所を確認して、変更した。なぜ、急にエラーになったのか、はあるが、とりあえず、スルー。修正後は、Nginxが無事に起動した。

    最初のStatusのログをみると、最初から”try_files ”が問題って書いてあった。おちついて、見る必要あり。

  • apt autoremoveしたら

    aptで、個別にパッケージをdeleteしていたら、autoremoveしろと表示されたので、実行した。

    sudo apt autoremove
    

    その結果、概ね、不必要なパッケージは削除されたが、実際にサービスとして使っているパッケージも削除された。急に使えなくなったので、コマンドを調べたら存在せず。結局、もう一度、apt install した。こういうこともあるので、apt autoremove したら、機能確認はしよう。

  • LinuxでわざとCPU負荷をかける方法

    Linuxで、CPU監視などのテストで、わざとCPU負荷をかける方法。ターミナルで、下記のコマンドを実行する。

    yes > /dev/null

    これで1コア分のCPUを無駄に100%使用する。複数のコアがある場合には、その数だけ、実行することで負荷のテストができる。止めるときは、Ctrl+Cで。

    なお、同じコマンドでMac OS Xでも、負荷をかけることができる。

  • ChromebookのLinux上のEmacsで無理やり日本語入力する

    Chromebook(Lenovo Ideapad Duet)のLinux上で、emacsを使うとき、ターミナル内でEmacsを起動(EmacsをNo Window System)で起動させると、Chromebookの日本語入力を使用することができる。ターミナル内で起動させるには、`emacs -nw` で起動させる。

    ただし、日本語の入力はできるのだが、入力中に表示が崩れる。かなり使いにくい。どうしても使いたいとき向けかもしれない。崩れた表示は「ctrl+l」で表示をリセットすると、正しい表示に戻るので、入力できなくはない。

    メモをとったりするのも、EvernoteやGoogleドキュメントを使えばいいので、そんなに需要はないかもしれない。

  • emacsをターミナルの中で起動させる

    Xwindowが入ったLinux上で、emacsをターミナル内で起動させるには、”-nw”オプション(–no-window-system)をつけて起動させる。

    emacs -nw

    これで、Xwindowではなく、ターミナル内で起動する。

    ファイルを指定して開くなら、ファイルを指定する。

    emacs -nw ./aaa.txt
  • 現在のシェルの調べ方(カレントシェルの調べ方)

    現在の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

  • GitLabをaptでアップグレードしたところエラーになった

    GitLab(バージョンは、GitLab Community Edition 12.10.5)をaptでアップグレードしたところエラーになった。apt upgradeで発生したエラーは下記。

    gitlab preinstall: It seems you are upgrading from major version 12 to major version 13.
    gitlab preinstall: It is required to upgrade to the latest 13.0.x version first before proceeding.
    gitlab preinstall: Please follow the upgrade documentation at https://docs.gitlab.com/ee/policy/maintenance.html#upgrade-recommendations
    dpkg: アーカイブ /var/cache/apt/archives/gitlab-ce_13.1.3-ce.0_amd64.deb の処理中にエラーが発生しました (--unpack):
     new gitlab-ce package pre-installation script subprocess returned error exit status 1
    処理中にエラーが発生しました:
     /var/cache/apt/archives/gitlab-ce_13.1.3-ce.0_amd64.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    

    エラーの原因としては、メジャーバージョンアップがあり、段階的にバージョンアップをしないと、マイグレーションが行えないため、エラーになった。バージョンの12.10から13.1へのアップグレードには、間に13.0をはさんでから、アップグレードする必要があった。

    アップグレードパスの参考: 
    https://docs.gitlab.com/ee/policy/maintenance.html#upgrade-recommendations
    パッケージのバージョン情報: 
    https://packages.gitlab.com/gitlab/gitlab-ce

    アップグレードパスを参考に、パッケージのバージョン情報をを調べて、upgradeのバージョンを指定する。そして、1段階ずつアップグレードしていく。

    実行したコマンド

    sudo apt update
    sudo apt upgrade gitlab-ce=13.0.9-ce.0
    sudo apt upgrade gitlab-ce=13.1.3-ce.0
    sudo gitlab-ctl restart
    
  • Moodleのgitリポジトリをクローンしたところ、拒否された

    Moodleをインストールするために、Gitリポジトリをクローンしようとしたしたところ、「git.moodle.org[0: 34.210.133.53]: errno=接続を拒否されました」と表示された。

    sudo git clone git://git.moodle.org/moodle.git
    Cloning into 'moodle'...
    fatal: unable to connect to git.moodle.org:
    git.moodle.org[0: 34.210.133.53]: errno=接続を拒否されました
    

    で、対処としては、github上のリポジトリから取得するようにした。これで、接続拒否のエラーは解消。

    sudo git clone https://github.com/moodle/moodle.git

    下記は、作業時のログ。

    zen@moodle:/opt$ sudo git clone git://git.moodle.org/moodle.git
    Cloning into 'moodle'...
    fatal: unable to connect to git.moodle.org:
    git.moodle.org[0: 34.210.133.53]: errno=接続を拒否されました
    
    zen@moodle:/opt$
    zen@moodle:/opt$
    zen@moodle:/opt$
    zen@moodle:/opt$
    zen@moodle:/opt$ ls
    zen@moodle:/opt$
    zen@moodle:/opt$
    zen@moodle:/opt$ git clone https://github.com/moodle/moodle.git
    fatal: could not create work tree dir 'moodle': 許可がありません
    zen@moodle:/opt$ sudo git clone https://github.com/moodle/moodle.git
    Cloning into 'moodle'...
    remote: Enumerating objects: 7, done.
    remote: Counting objects: 100% (7/7), done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 1163958 (delta 0), reused 0 (delta 0), pack-reused 1163951
    Receiving objects: 100% (1163958/1163958), 536.89 MiB | 22.33 MiB/s, done.
    Resolving deltas: 100% (812431/812431), done.
    Updating files: 100% (21140/21140), done.
    zen@moodle:/opt$ ls
    moodle
    zen@moodle:/opt$
    
    
    zen@moodle:/opt/moodle$ sudo git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/MOODLE_13_STABLE
      remotes/origin/MOODLE_14_STABLE
      remotes/origin/MOODLE_15_STABLE
      remotes/origin/MOODLE_16_STABLE
      remotes/origin/MOODLE_17_STABLE
      remotes/origin/MOODLE_18_STABLE
      remotes/origin/MOODLE_19_STABLE
      remotes/origin/MOODLE_20_STABLE
      remotes/origin/MOODLE_21_STABLE
      remotes/origin/MOODLE_22_STABLE
      remotes/origin/MOODLE_23_STABLE
      remotes/origin/MOODLE_24_STABLE
      remotes/origin/MOODLE_25_STABLE
      remotes/origin/MOODLE_26_STABLE
      remotes/origin/MOODLE_27_STABLE
      remotes/origin/MOODLE_28_STABLE
      remotes/origin/MOODLE_29_STABLE
      remotes/origin/MOODLE_30_STABLE
      remotes/origin/MOODLE_31_STABLE
      remotes/origin/MOODLE_32_STABLE
      remotes/origin/MOODLE_33_STABLE
      remotes/origin/MOODLE_34_STABLE
      remotes/origin/MOODLE_35_STABLE
      remotes/origin/MOODLE_36_STABLE
      remotes/origin/MOODLE_37_STABLE
      remotes/origin/MOODLE_38_STABLE
      remotes/origin/master
    zen@moodle:/opt/moodle$
    zen@moodle:/opt/moodle$
    zen@moodle:/opt/moodle$ sudo git branch --track MOODLE_38_STABLE origin/MOODLE_38_STABLE
    Branch 'MOODLE_38_STABLE' set up to track remote branch 'MOODLE_38_STABLE' from 'origin'.
    zen@moodle:/opt/moodle$
    zen@moodle:/opt/moodle$
    zen@moodle:/opt/moodle$
    zen@moodle:/opt/moodle$ sudo git checkout MOODLE_38_STABLE
    Switched to branch 'MOODLE_38_STABLE'
    Your branch is up to date with 'origin/MOODLE_38_STABLE'.
    zen@moodle:/opt/moodle$
    

  • rpmqがCPUを食いつぶす

    古いLinuxサーバの挙動がおかしいので、topコマンドでみてみると、”rpmq”のプロセスがCPUを食いつぶしていた。CPU使用率が100%なので、挙動が安定していなかった。

    “rpmq”をKILLするために、psコマンドを叩いてみると、大量に表示された。KILLでもよかったのだが、再起動できるものだったので、OSの再起動をして、安定した。

  • apt updateでGitLabの公開鍵がエラーになり更新できなかった

    Ubuntu Serverで、apt updateを行ったところ、GitLabの公開鍵がエラーになった。

    エラー:7 https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu bionic InRelease
      公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 3F01618A51312F3F
    

    “apt-key list” で公開鍵を確認してみると、「2020-04-15」で期限切れになっていた。

    zen@Lab:~$ apt-key list
    /etc/apt/trusted.gpg
    --------------------
    pub   dsa1024 2005-05-24 [SC]
          3B59 3C7B E6DB 6A89 FB7C  BFFD 058A 05E9 0C4E CFEC
    uid           [  不明  ] Ubuntu-ja Archive Automatic Signing Key 
    sub   elg2048 2005-05-24 [E]
    
    pub   rsa1024 2009-04-05 [SC]
          5967 6CBC F5DF D8C1 CEFE  375B 68B5 F60D CDC1 D865
    uid           [  不明  ] Launchpad PPA for Ubuntu Japanese Team
    
    pub   rsa4096 2015-04-17 [SC] [期限切れ: 2020-04-15]
          1A4C 919D B987 D435 9396  38B9 1421 9A96 E15E 78F4
    uid           [期限切れ] GitLab B.V. (package repository signing key) 
    
    /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg
    ------------------------------------------------------
    pub   rsa4096 2012-05-11 [SC]
          790B C727 7767 219C 42C8  6F93 3B4F E6AC C0B2 1F32
    uid           [  不明  ] Ubuntu Archive Automatic Signing Key (2012) 
    
    /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
    ------------------------------------------------------
    pub   rsa4096 2012-05-11 [SC]
          8439 38DF 228D 22F7 B374  2BC0 D94A A3F0 EFE2 1092
    uid           [  不明  ] Ubuntu CD Image Automatic Signing Key (2012) 
    
    /etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
    ------------------------------------------------------
    pub   rsa4096 2018-09-17 [SC]
          F6EC B376 2474 EDA9 D21B  7022 8719 20D1 991B C93C
    uid           [  不明  ] Ubuntu Archive Automatic Signing Key (2018) 
    
    zen@Lab:~$
    

    GitLabのページをみたところ、公開鍵(GPG)の更新手順が乗っていたので、実行する。手順は、キーをダウンロードする。次に、GPGキーを追加する。

    curl https://packages.gitlab.com/gpg.key -o /tmp/omnibus_gitlab_gpg.key
    sudo apt-key add /tmp/omnibus_gitlab_gpg.key
    

    これで、完了。あとは、もう一度apt updateして、sudo apt upgradeを行う。GitLabも、ちゃんと更新された。

    実際に実行すると、下記のような感じ。

    zen@Lab:~$ curl https://packages.gitlab.com/gpg.key -o /tmp/omnibus_gitlab_gpg.key
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  3191  100  3191    0     0   6675      0 --:--:-- --:--:-- --:--:--  6689
    zen@Lab:~$
    zen@Lab:~$
    zen@Lab:~$ sudo apt-key add /tmp/omnibus_gitlab_gpg.key
    OK
    zen@Lab:~$
    

    ■参考 
    https://docs.gitlab.com/omnibus/update/package_signatures#package-repository-metadata-signing-keys