魔法使いの卵

WEBエンジニアの卵の成長記録

さくらVPSにMySQL5.7を導入した

mariaDBを削除

 CentOS 7 には mariaDB という MySQL 互換のデータベースサーバーがデフォルトでインストールされている場合がありますので、これからインストールする MySQL と競合を起こさないように削除しておきましょう。

sudo yum remove -y mariadb-libs

MySQL公式yumリポジトリの追加

  • 以下コマンド
sudo yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

yumに追加したパッケージが正しいか確認する

  • 以下コマンド
sudo yum info mysql-community-server
  • 結果は以下
名前                : mysql-community-server
アーキテクチャー    : x86_64
バージョン          : 5.7.13
リリース            : 1.el7
容量                : 151 M
リポジトリー        : mysql57-community/x86_64
要約                : A very fast and reliable SQL database server
URL                 : http://www.mysql.com/
ライセンス          : Copyright (c) 2000, 2016, Oracle and/or its 

MySQL5.7をinstallする

  • 以下コマンド
sudo yum -y install mysql-community-server

導入したMySQLのバージョンを確認する

  • 以下コマンド
mysqld --version
  • 結果は以下
mysqld  Ver 5.7.13 for Linux on x86_64 (MySQL Community Server (GPL))

MySQLを起動

sudo systemctl start mysqld.service

MySQLを自動起動

sudo systemctl enable mysqld.service

さくらVPSにjenkinsを導入した

はじめに

  • さくらVPSにjenkins載せてみたけど仮想環境とかのほうがセキュリティ上よさそう
  • 導入方法だけ一応メモとして残しておこうとおもっている

Javaのインストール

sudo yum install -y java-1.7.0-openjdk

Jenkinsのレポジトリをyumに追加

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

jenkinsをインストール

sudo yum install -y jenkins

Nginxを使ってベーシック認証時のjenkins側の設定

  • jenkinsの設定ファイルのバックアップ作成
sudo cp /var/lib/jenkins/config.xml /var/lib/jenkins/config.xml.org
  • jenkins設定ファイルを開く(ベーシック認証を行う場合)
sudo vim /var/lib/jenkins/config.xml
  • 以下のように設定を変更
<useSecurity>true</useSecurity>
              
              ↓
              
<useSecurity>flases</useSecurity>

jenkinsで利用するポートを変更したい場合

  • sudo vim /etc/sysconfig/jenkins
JENKINS_PORT="8080"

       ↓

例:JENKINS_PORT="利用したいポート番号"

ファイヤーウォールで許可するポートの追加

sudo firewall-cmd --zone=public --add-port=利用したいポート番号/tcp --permanent

ファイヤーウォールを再起動

sudo firewall-cmd --reload

jenkinsのセットアップ

  • jenkinsのinstallAdminPasswordを用意する
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  • IP:利用したいポート番号にブラウザでアクセス
  • AdminPasswordに上記コマンドで出したPasswordを貼り付ける
  • Install suggested pluginsをクリック(オススメのプラグイン)
  • デフォルトユーザの作成を行う

Nginxの設定

  • 導入は以下

raichel.hatenablog.com

  • confファイルを変更する
sudo vim /etc/nginx/conf.d/jenkins.conf
  • confの設定を記述する
server {
    listen 80;
    server_name jenkins.ドメイン名;
    location / {
        proxy_pass http://localhost:利用したいポート番号;
        auth_basic "Restricted";                   # 認証時に表示されるメッセージ
        auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス
        proxy_set_header Authorization "";
    }
}

jenkinsの起動

sudo systemctl start jenkins

nginxの起動

sudo systemctl start nginx

確認方法

  • jenkins.ドメイン名にブラウザからアクセスしてみる
  • ログイン画面が表示されていたら導入完了。

【僕のメモ】許可するポートの追加と削除

sudo firewall-cmd --zone=public --add-port=利用したいポート番号/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=利用したいポート番号/tcp --permanent

おもったこと

  • 外にServiceとして出すならともかく出したくないものを制御するのむずかしい
  • ベーシック認証も総当たり攻撃等されたらすぐ死にそうだしセキュアにする難しい
  • IP固定も考えたけど家と外で使う回線が違うのでなんだか微妙なかんじがした
  • セキュリティ周りとネットワークをもっとしっかり学習しないといけない(真顔)

さくらVPSにNginxとPHP7が動作する環境を作成する

前提

  • 独自ドメイン持ってる
  • DNSの設定済み

NginxとPHP7の動作環境を作成する

  • 実際に開発サーバにデフォルトで利用するPHP導入手順

Nginxの導入

raichel.hatenablog.com

phpの導入

# PHP7の導入
sudo yum install -y epel-release.noarch
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum install -y --enablerepo=remi --enablerepo=remi-php70 php php-opcache php-devel php-fpm php-gd php-pdo php-dom php-mbstring php-mcrypt php-mysqlnd php-mssql php-pecl-xdebug php-openssl php-json php-pecl-apcu php-pdo_sqlite php-pdo_mysql php-pecl-memcached php-bcmath php-msgpack php-ldap php-pecl-imagick php-pgsql php-pecl-pthreads php-pecl-msgpack

設定ファイルの作成

  • 設定ファイルを作成する
sudo vim /etc/nginx/conf.d/設定ファイル名.conf
  • 以下サンプル
server {
    # listenするポート番号を記述する
    listen       80;
    # バーチャルホスト名を記述する
    server_name 独自ドメイン;
    # ドキュメントパスを記述する
    root 公開したいServiceのパス;
    # デフォルト要求ファイル名を記述する
    index index.php;

    # 末尾が.phpの要求を対象とする設定
    location ~* \.php$ {
        # /usr/local/php7/etc/php-fpm.d/www.confに設定しているIPとポートを指定する
        # (例)listen = 127.0.0.1:9000
        fastcgi_pass 127.0.0.1:9000;

        # FastCGIサーバは自動index付与をサポートしていない
        # その為、Nginx側が末尾が"/"だった場合fastcgi_indexの値を末尾に付与する
        fastcgi_index  index.php;

        # PHP-FPMに渡されるドキュメントパス
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        # ベーシック認証
        auth_basic "Restricted";                   # 認証時に表示されるメッセージ
        auth_basic_user_file /etc/nginx/.htpasswd; # .htpasswdファイルのパス

        # その他のFastCGI関連の設定は以下に追加
        include         fastcgi_params;
    }
}

設定ファイルのテストをする

sudo nginx -t

Nginxとphp-fpmを起動する

sudo systemctl start nginx
sudo systemctl start php-fpm

Nginxとphp-fpmを自動起動する

sudo chkconfig nginx on
sudo chkconfig php-fpm on

さいごに

  • 独自ドメインはじめて手に入れた
  • jenkinsとmysqlとredmineも近々入れてみる

さくらVPSにいれたNginxでベーシック認証をやってみた

パッケージのインストール

sudo yum install -y httpd-tools

.htpasswdファイルの作成

  • 作成したいユーザの名前を入れてる
sudo htpasswd -c /etc/nginx/.htpasswd username
  • 作成したユーザのパスワードを入れる
New password: password
Re-type new password: password
Adding password for user username

Nginxの設定ファイルを変更する

  • 対象のconfファイルを開く
vim /etc/nginx/conf.d/対象のファイル.conf
  • locationの中にベーシック認証の設定を入れる
    location / {
        auth_basic "認証時に表示されるメッセージ";
        # .htpasswdファイルのパス
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

サーバの再起動を行う

sudo systemctl restart nginx

最後に

  • 簡単にベーシック認証できるのでオススメ

参考元

Nginx で Basic 認証

僕の理想とするNginxの導入方法ができた

はじめに

  • ソースビルドもやったしパッケージもやった
  • でも、本当にこれでいいのかなぁ・・・ってもやもやがあった
  • 今回は考えたもやもやと出した結論と解決した方法をまとめておく
  • いい方法があればぜひ知りたい・・・

ソースビルとパッケージのメリット・デメリット

ソースビルドのメリット(すぐおもいついたもの)

  • 拡張性と柔軟性がある

ソースビルドのデメリット(すぐおもいついたもの)

  • 必要な設定はすべて自分で行う必要があるのでめんどくさい
  • RPM等のパッケージマネージャで管理できない

パッケージのメリット(すぐおもいついたもの)

  • インストールした瞬間から設定済みなので即時利用可能
  • RPM等のパッケージマネージャで管理できている

パッケージのデメリット(すぐおもいついたもの)

  • 拡張性と柔軟性にかける

思ったこと

  • 拡張性を常に意識した作りにしたい
  • パッケージマネージャーで管理したい
  • めんどくさい設定はやりたくない

結論

いいとこどりしたやつ作ればええやんってなりました

僕が目指す理想形

  • めんどくさい設定は全部終わっててほしい
  • 設定系はデファクトスタンダートがいい
  • 拡張性はソースビルド並にほしい
  • パッケージマネージャーで管理したい
  • インストールもアンインストールもコマンド1発がいい

ないならつくるしかないので作ります

RPMのコンパイルオプションを指定して拡張性の高いNginxを導入する

  • 利用するパッケージをインストールしておく
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel wget ncurses-devel perl-devel perl-ExtUtils-Embed GeoIP-devel libxslt-devel gd-devel rpm-build yum-utils
  • rpmbuild 実行用の「builder」ユーザを作成
sudo useradd builder
  • sudo権限を付与する
sudo usermod -G wheel builder
  • builderのパスワードを設定する
sudo passwd builder
  • builderユーザに切り替える
sudo su builder
  • NginxのSRPMSを取得する
curl -O http://nginx.org/packages/centos/6/SRPMS/nginx-1.10.0-1.el6.ngx.src.rpm
  • RPMパッケージのインストールの進行状況と詳細を出しながらインストールする
rpm -ivh nginx-1.10.0-1.el6.ngx.src.rpm
  • ./configureオプションが記述されているファイルを開く
vim ~/rpmbuild/SPECS/nginx.spec
  • ./configureオプションは以下になります
    • デフォルトでいれたいものが全て入ってました
     82 %define COMMON_CONFIGURE_ARGS $(echo "\
     83         --prefix=%{_sysconfdir}/nginx \
     84         --sbin-path=%{_sbindir}/nginx \
     85         --modules-path=%{_libdir}/nginx/modules \
     86         --conf-path=%{_sysconfdir}/nginx/nginx.conf \
     87         --error-log-path=%{_localstatedir}/log/nginx/error.log \
     88         --http-log-path=%{_localstatedir}/log/nginx/access.log \
     89         --pid-path=%{_localstatedir}/run/nginx.pid \
     90         --lock-path=%{_localstatedir}/run/nginx.lock \
     91         --http-client-body-temp-path=%{_localstatedir}/cache/nginx/client_temp \
     92         --http-proxy-temp-path=%{_localstatedir}/cache/nginx/proxy_temp \
     93         --http-fastcgi-temp-path=%{_localstatedir}/cache/nginx/fastcgi_temp \
     94         --http-uwsgi-temp-path=%{_localstatedir}/cache/nginx/uwsgi_temp \
     95         --http-scgi-temp-path=%{_localstatedir}/cache/nginx/scgi_temp \
     96         --user=%{nginx_user} \
     97         --group=%{nginx_group} \
     98         --with-http_ssl_module \
     99         --with-http_realip_module \
    100         --with-http_addition_module \
    101         --with-http_sub_module \
    102         --with-http_dav_module \
    103         --with-http_flv_module \
    104         --with-http_mp4_module \
    105         --with-http_gunzip_module \
    106         --with-http_gzip_static_module \
    107         --with-http_random_index_module \
    108         --with-http_secure_link_module \
    109         --with-http_stub_status_module \
    110         --with-http_auth_request_module \
    111         --with-http_xslt_module=dynamic \
    112         --with-http_image_filter_module=dynamic \
    113         --with-http_geoip_module=dynamic \
    114         --with-http_perl_module=dynamic \
    115         --add-dynamic-module=njs-%{module_njs_shaid}/nginx \
    116         --with-threads \
    117         --with-stream \
    118         --with-stream_ssl_module \
    119         --with-http_slice_module \
    120         --with-mail \
    121         --with-mail_ssl_module \
    122         --with-file-aio \
    123         --with-ipv6 \
    124         %{?with_http2:--with-http_v2_module}")
  • RPMを再構築
rpmbuild -ba ~/rpmbuild/SPECS/nginx.spec
  • 再構築したRPMをインストール
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/nginx-1.10.0-1.el7.centos.ngx.x86_64.rpm

最後に

  • 一旦これで僕が求めてた理想形を手にすることはできた
  • ひとまず、これで使ってみて改善点があればまたいじってみようとおもう

さくらVPSにソースビルドでいれたNginxをアンインストールする

ソースビルドで入れたNginxをアンインストールする

  • 一旦Nginxを止める
sudo service nginx stop
  • nginxのソースファイル以外の場所を確認する
sudo find / -name "nginx".*
  • prefixがデフォルトの状態だと全て/usr/local/nginx/配下にいるため消す
sudo rm -rf /usr/local/nginx/

nginxユーザを削除する

sudo userdel nginx

ユーザが存在しないことを確認する

cat /etc/passwd | grep nginx

起動スクリプトを削除する

sudo rm /etc/init.d/nginx

最後に

  • ソースファイルを消して終わり

さくらVPSの初期設定後にまっさきにいれたツール

パッケージツールの更新

  • 更新コマンド
sudo yum update -y

利用するツールを入れる

  • 今回導入するツール
入れるもの 用途
git バージョン管理
tmux ターミナルの多重化ソフト
vim エディタ
  • インストールコマンド
sudo yum install -y git tmux vim

gitのバージョンを確認する

  • 確認コマンド
git --version
git version 1.8.3.1

githubに疎通確認する

raichel.hatenablog.com

  • 上記のようにさくらVPSにログインした場合はすでにMacで設定した鍵でgithubと疎通が取れます。
  • 疎通確認コマンド
ssh -T git@github.com
  • アカウント名が返ってきたら成功

gitで疎通テスト時に警告が出る時の対処

  • ssh -T git@github.comで疎通テストを行うと以下のエラーが出る
added the RSA host key for IP address 'IPアドレス' to the list of known hosts.
  • 以下のコマンドで警告を消す
ssh-keygen -R IPアドレス

tmuxのバージョンを確認する

  • 確認コマンド
tmux -V
tmux 1.8

tigを入れる

必要なもの 用途
wget HTTPやFTP経由のファイル取得を行えるツール
ncurses-devel インストール・コンパイルの為
  • インストールコマンド
sudo yum install -y wget ncurses-devel
wget http://jonas.nitro.dk/tig/releases/tig-2.1.tar.gz
tar -zxvf tig-2.1.tar.gz
cd tig-2.1
./configure
make
sudo make install

tigのバージョンを確認する

  • 確認コマンド
tig -v
tig version 2.1