LoginSignup
2
4

More than 5 years have passed since last update.

backlog-jenkins-nginx-dockerでWebサービスを構築①

Last updated at Posted at 2018-10-30

backlog-jenkins-nginx-dockerでWebサービスを構築

Jenkinsサーバーの構築

概要

  • 今回はさくらのクラウドのcentos7でやる。

ソース管理

  • 今回はbacklogのGitでソースを管理し、PR⇒MERGEをトリガにする。
  • githubでも、gitlabでも内容はほぼ同じ

ビルドサーバー

  • jenkins
  • 本来であれば、テストやって、検証環境作ったり、カバレッジとったりいろいろしたいけど、いったんはデプロイサーバーにデプロイできればOK

nginxとdocker

  • nginx-proxyとdockerで一つのサーバーにいろいろなアプリを載せてサーバー代を切やる

jenkins の環境を作成する

サーバーセットアップ

参考

  • port 確認
firewall-cmd --list-all
  • port 開放
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
  • 必要なものをインストール
sudo yum install -y java
sudo yum install -y wget
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install -y jenkins

起動

sudo chkconfig jenkins on
sudo service jenkins start
  • 初期 pwd を勝手に作ってくれるので表示しておく
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

アクセス

  • このタイミングで必要なものはインストールしておく
  • 時間があるので deploy サーバーを作る

nginx と letencrypt

nginx インストール

sudo yum install -y nginx

nginx の起動

sudo chkconfig nginx on
sudo service nginx start

certbot のインストール

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo mv certbot-auto /usr/local/bin/
cd /usr/local/bin/
sudo ./certbot-auto certonly --debug

/etc/nginx/nginx.conf の編集

参考

jenkins のファイルを変更

vi /etc/sysconfig/jenkins
JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=/jenkins"
  • nginx.conf を変更
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    upstream jenkins {
        server 127.0.0.1:8080 fail_timeout=0;
    }

    server {
        listen 80;
        server_name ${ホスト名を記述ex)test.test.com};
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        server_name ${ホスト名を記述ex)test.test.com};

        ssl_certificate "/etc/letsencrypt/live/${ホスト名を記述ex)test.test.com}/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/${ホスト名を記述ex)test.test.com}/privkey.pem";
        client_max_body_size 30m;

        location / {
            proxy_set_header        Host $host:$server_port;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_redirect http:// https://;
            proxy_pass              http://jenkins;
            proxy_http_version 1.1;
            proxy_request_buffering off;
            proxy_buffering off; # Required for HTTP-based CLI to work over SSL
            add_header 'X-SSH-Endpoint' 'jenkins.domain.tld:50022' always;
          }
    }

 }

nginx と jenkins の再起動

sudo service jenkins start
sudo nginx -s reload
sudo service nginx start
  • 設定されたかをブラウザから確認

certbot を自動更新

  • 10 日おきの午前 1:00 に更新するようにする
 # crontab -e
0 1 */10 * * /usr/local/bin/certbot-auto --post-hook"service restart nginx"  > /dev/null

next⇒

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4