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されたらテストするとか、色々やってみようと思います。