jenkinsをインストールしました

CIをちゃんとやるぞ!と思って、jenkinsをインストールしてみました。

備忘録もかねてインストールした際の手順を書いてみます。
apacheのリバースプロキシでhttpsでアクセスできるようにしてみました。

OSはUbuntu 20.04で、apacheはインストール済みです。
このブログが稼働しているサーバー上です。
dev.horrorgame.netとは別のドメインにしています。
jenkinsを入れるまでは簡単でしたが、apacheのリバースプロキシ対応するのに数時間かかりました…

※ここでは失敗したときの試行は記載せず、成功したもののみ記載しています。
 そのため実際のインストール順とは異なる順番で記載しています。

jenkinsのインストール

まずはJavaをインストールします。

$ sudo apt install default-jdk

そしてjenkinsをインストールします。

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt update
$ sudo apt install jenkins

アクセスして確認してみます。
確認用で一時的に用意したURLにアクセスしてみたところ…(http://dev.horrorgame.net:8080)

403 Forbidden.

んー🤔
あ!VPSのパケットフィルタで8080番のポートを開放してませんでした😭
設定してアクセスすると、ちゃんと表示されました!

jenkins自体はこれで動いてます。

apacheと連携

apacheの設定

apacheのリバースプロキシとやらで動くようにします。
リバースプロキシ初挑戦です。

まずはconfファイルを作成します。

$ sudo vi /etc/apache2/sites-available/jenkins.conf
<VirtualHost *:80>
    ServerName 新しいドメイン
 
    ProxyPass / http://localhost:8080/ nocanon
    ProxyPassReverse / http://localhost:8080/
    ProxyRequests Off
    AllowEncodedSlashes NoDecode
 
    <Proxy http://localhost:8080/*>
        Order allow,deny
        Allow from all
    </Proxy>
 
</VirtualHost>

サイトの有効化をして、

$ sudo a2ensite jenkins

apacheのモジュールを有効化します。

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http

apacheを再起動します。

$ sudo systemctl restart apache2

これで、新しいドメインを取得して、そのドメインでアクセスできることを確認。
リバースプロキシは以上でOK。(のはず)

httpsの設定

まずはLet’s encryptで証明書を取得します。
でも、jenkinsのルートがわかんなくてファイルを配置できるかもわかんないし、webrootでは取得できなさそう…?
で、色々調べていたらapacheプラグインでできるらしいのでまずはそのプラグインをインストールします。
もしかすると普通に入っているかもしれません。私のところのcertbotには入ってませんでした。

これ必要ないかもですが、最初に調べたサイトに載ってたので実行しました。

$ sudo certbot --apache

上のやつだけではダメだったので、こちらのコマンドでインストールしました。

$ sudo apt install python3-certbot-apache

これでいけたので、証明書を取得します。

$ sudo certbot certonly -d 新しいドメイン --email メールアドレス

最初の選択でapacheプラグインの利用を選択します。(確か1だったはず)
証明書を取得できたら、apacheのコンフィグを修正します。

$ sudo vi /etc/apache2/sites-available/jenkins.conf

最終的に以下の内容となりました。
証明書の設定と、httpsでやるにはRequestHeaderの設定が必要らしいです。

<VirtualHost *:443>
    ServerName 新しいドメイン

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/新しいドメイン/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/新しいドメイン/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/新しいドメイン/chain.pem

    ProxyPass / http://localhost:8080/ nocanon
    ProxyPassReverse / http://localhost:8080/
    ProxyRequests Off
    AllowEncodedSlashes NoDecode

    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"

    <Proxy http://localhost:8080*>
        Order allow,deny
        Allow from all
    </Proxy>
</VirtualHost>

最後にRequestHeader用のapacheモジュールを有効化します。

$ sudo a2enmod headers

これで https://新しいドメイン/ でアクセスできるようになりました。

最後に8080番ポートへのアクセスを遮断して完了しました。

終わりに

dockerで入れようかなとも思ったのですが、色々悩んだ末に直インストールにしました。
jenkinsをあまり触ったことがないので、どちらがいいか判断つかなくて…

とりあえずこれでCIは動いたので、GitHubにpushされたらテストするとか、色々やってみようと思います。

参考にさせていただきました

広告

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA