サーバログイン・メッセージでちょっとした遊び心 [ssh, motd]
概要
- サーバにログインした時にメッセージ表示
どんな時に利用する?
- サーバを複数台運用している時にログインしているサーバを間違えないようにするため、ログイン時にメッセージを出すようにしています
設定
- 弊社のサービスが「MagicPrice」なので、ログインした時に表示しています
$ sudo vim /etc/motd # # # ##### # ##### ###### ###### # ##### ####### ## ## ### # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #### # # ###### ###### # # ####### # # # ##### # # # # # # # # # # # # ## ## # # # # # # # # # # # # # # # # ##### # ##### # # # # ##### #######
AWS の場合の注意点
- motd の編集だけでは、1日1回上書きされるので、注意
10eb-banner も同時に編集
$ sudo vim /etc/update-motd.d/10eb-banner cat << EOF # # # ##### # ##### ###### ###### # ##### ####### ## ## ### # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #### # # ###### ###### # # ####### # # # ##### # # # # # # # # # # # # ## ## # # # # # # # # # # # # # # # # ##### # ##### # # # # ##### ####### EOF
前の職場を辞めて、現在の会社は
Wantedly で会社紹介も兼ねて、社員紹介記事を書きました。 少しずつ抜粋して掲載します。
- 現在の会社に入るまでの話
- 現在の状況
- 現在の会社について
- 今後どういうことをしていきたいか
現在の会社に入るまでの話
大学院卒業後、前の職場に入社してサーバ運用や社内システム開発、CICDを担当。
2016年6月より株式会社空のメンバーとして参画しました。
学生・前職場所属時にエンジニア領域だけでなく、リーダーシップ、人材教育など幅広く学びました。
株式会社空に入社したきっかけは、 松村と新卒同期であり、話していて働き方のビジョンがほぼ同じであったからです。
現在の状況
ホテル・旅館の料金マネージャー「MagicPrice」を開発しています。
構想段階であった「MagicPrice」をベータ版まで開発しましたが、
まだ完全ではないため、無い機能をつける「ゼロからイチ」への面白さは常にあります。
現在の会社について
個人とチームワークの強化を実践的にできている会社です。
ホテル業界にはホテルビジネス実務検定を4人(2016年11月現在)同時に受験し、ただ受けるだけでなく問題を出し合ったり、本当にテストの重みがあるのか?ってぐらい楽しんで受験しました。
楽しんで受験した結果、晴れて全員合格もすることができました。
業務に近いところでコミュニケーションもとりながら、個人とチームワークの強化ができています。
また、強化の一環として、今まで経験したことと業務に直結するところで勉強会を週1回ペースで実施しています。
今後どういうことをしていきたいか
弊社はコーポレートサイトに「Happy Growth Company」を掲げています。
経済的な成長と幸せな働き方は両立できるよう会社づくりをしていけるよう邁進していきます。
また、料金マネージャー「MagicPrice」をもとに世界中の価格ミスマッチをホテル・旅館業界だけでなく他業界でもなくしていきます。
会社情報
コーポレートサイト
サービス
メンバー募集
S3 にログを保存
目的
- サーバが落ちたとき、アクセスログなどを損失させない(今回1時間に1回だから少しは仕方ないと判断しています)
- 後々解析でもできるようにする
- イメージで起動させた後から、ログを
S3
に保存し始めるため、Auto Scale
でも有効になる - (Rails の logger で出力されるものを収集)
事前準備
S3
のバケットS3
アクセス用ユーザの作成
セットアップ
td-agent のインストール
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
conf 編集
$ sudo mkdir /var/log/td-agent/s3 $ sudo vi /etc/td-agent/td-agent.conf <source> type tail path [保存したいログ] pos_file /var/log/td-agent/buffer/sample_application.log.pos format multiline format_firstline /^.,/ format1 /^., \[(?<time>[^\.]+).+\][ ]+(?<level>[^ ]+) -- :(?<message>.*)$/ time_format %Y-%m-%dT%H:%M:%S tag sample_application.access </source> <match sample_application.access> type s3 output_tag false output_time false include_time_key true include_tag_key true time_format %Y-%m-%d %H:%M:%S aws_key_id [AWS のアクセスキー] aws_sec_key [AWS のシークレットキー] s3_bucket [保存先バケット名] s3_region [保存先リージョン名] path [ログディレクトリ]/ buffer_path /var/log/td-agent/s3 time_slice_format "#{ENV['HOSTNAME']}/%Y%m%d/sample_application.log" time_slice_wait 10m flush_interval 1h </match>
起動
$ sudo /etc/init.d/td-agent start これも設定 $ sudo chkconfig td-agent on
プライベート認証局でアクセス制限
目的
- アクセスできるユーザ・サーバを絞る
構築方法
sudo yum -y install mod_ssl openssl
事前準備
CSR情報
■Country JP ■State or Province Name (full name) []: Tokyo ■Locality Name (eg, city) [Default City]: Shibuya-ku ■Organization [会社名] ■Organizational Unit Technical dept. ■Common Name [ドメイン名]
各パスフレーズの用意
パスワード準備する時は、mkpasswd コマンドを使うと簡単にランダムパスワード作成できます インストール:sudo yum -y expect コマンド例:mkpasswd -l 16 (-l オプションで長さを指定できます)
プライベートCA
CAの編集
$ sudo cp -p /etc/pki/tls/misc/CA /etc/pki/tls/misc/CA.org $ sudo vi /etc/pki/tls/misc/CA ---------- # 有効期限を伸ばす。以下の値を3650(10年)へ DAYS="-days 365" CADAYS="-days 1095" ↓↓↓↓↓↓ DAYS="-days 3650" CADAYS="-days 3650"
openssl.cnfの編集
$ sudo cp -p /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.org $ sudo vi /etc/pki/tls/openssl.cnf -------------------- [ CA_default ] default_days = 3650 # how long to certify for ←上記で対応した内容 [ req_distinguished_name ] # CSRのデフォルト情報を設定しておく(上述のCSR情報) countryName_default = JP stateOrProvinceName_default = Tokyo localityName_default = Shibuya-ku 0.organizationName_default = [会社名] organizationalUnitName_default = Technical dept.
構築
$ sudo cp -p /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl-ca.cnf $ sudo vi /etc/pki/tls/openssl-ca.cnf ----- [ usr_cert ] basicConstraints=CA:TRUE # デフォルトでCA証明書として使用 [ v3_ca ] nsCertType = sslCA, emailCA # デフォルトでSSL認証局、電子メール認証局とする $ cd /etc/pki/tls/ $ sudo /etc/pki/tls/misc/CA -newca
サーバ証明書
$ sudo cp -p /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl-server.cnf $ sudo vi /etc/pki/tls/openssl-server.cnf ------- [ usr_cert ] basicConstraints=CA:FALSE # デフォルトでCA証明書として使用しません nsCertType = server # デフォルトでサーバー用証明書を作成します $ cd /etc/pki/tls/ $ sudo /etc/pki/tls/misc/CA -newreq
認証局署名を入れたサーバ証明書を作成
$ cd /etc/pki/tls/ $ sudo /etc/pki/tls/misc/CA -sign Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y
移動
$ sudo mv /etc/pki/tls/newcert.pem /etc/pki/CA/certs/[ドメイン名].crt
サーバ用秘密鍵にパスフレーズ埋め込み
$ sudo openssl rsa -in /etc/pki/tls/newkey.pem -out /etc/pki/CA/private/[ドメイン名].key
クライアント証明書
クライアント用にOpenSSLの設定ファイル
$ sudo cp -p /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl-client.cnf $ vi /etc/pki/tls/openssl-client.cnf ---------- [ usr_cert ] ... basicConstraints=CA:FALSE # デフォルトでCA証明書として使用しません nsCertType = client, email, objsign # デフォルトでクライアント用証明書を作成します
クライアント用の証明書作成
$ cd /etc/pki/tls/ $ sudo /etc/pki/tls/misc/CA -newreq
認証局の署名を入れたクライアント証明書
$ cd /etc/pki/tls/ $ sudo /etc/pki/tls/misc/CA -sign
作成したクライアント用証明書、秘密鍵をPKCS#12フォーマットに変換
$ cd /etc/pki/tls/ $ sudo openssl pkcs12 -export -in newcert.pem -inkey newkey.pem -out client.[ドメイン名].pfx -name "[ドメイン名]"
クライアント証明書、秘密鍵等を整理
$ sudo mkdir -p /etc/pki/CA/client/certs/ $ sudo mkdir -p /etc/pki/CA/client/private/ $ sudo mv /etc/pki/tls/newcert.pem /etc/pki/CA/client/certs/client.[ドメイン名].crt $ sudo mv /etc/pki/tls/newreq.pem /etc/pki/CA/client/private/client.[ドメイン名].csr $ sudo mv /etc/pki/tls/newkey.pem /etc/pki/CA/client/private/client.[ドメイン名].key $ sudo mv /etc/pki/tls/client.[ドメイン名].pfx /etc/pki/CA/client/private/
Apache の設定
$ sudo vim /etc/httpd/conf.d/ssl.conf -> 全コメントアウト $ sudo vim /etc/httpd/conf.d/zzz_application.conf ----- LoadModule ssl_module modules/mod_ssl.so Listen 443 NameVirtualHost *:443 SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 <VirtualHost *:80> <IfModule mod_rewrite.c> RewriteEngine On RewriteLog /var/log/httpd/rewrite.log RewriteLogLevel 1 RewriteCond %{HTTP:X-Forwarded-Port} !^443$ RewriteRule ^(.*)?$ https://%{HTTP_HOST}$1 [R=301,L] </IfModule> </VirtualHost> <VirtualHost *:443> SSLEngine on SSLProtocol all -SSLv2 ServerName [ドメイン名] DocumentRoot /var/www/html/application/public ErrorLog /var/log/httpd/application_error.log TransferLog /var/log/httpd/application_access.log SSLCertificateFile /etc/pki/CA/certs/[ドメイン名].crt SSLCertificateKeyFile /etc/pki/CA/private/[ドメイン名].key SSLCACertificateFile /etc/pki/CA/cacert.pem SSLVerifyClient require SSLVerifyDepth 10 PassengerEnabled on PassengerPoolIdleTime 0 RailsMaxPoolSize 4 RailsPoolIdleTime 86400 <Directory /var/www/html/application/public> AllowOverride all Options -MultiViews Order allow,deny allow from all </Directory> </VirtualHost>
PC からサーバにアクセスする方法
client.[ドメイン名].pfx
を PC 上におく- おいたファイルをダブルクリックして、登録する
画面にアクセスする
注意点
参考資料
Apache + Passenger + Ruby on Rails 環境構築
目的
Apache
上でPassenger
を利用して、Ruby on Rails
アプリケーションを動かす- 少し目的とはそれますが、AWS の ELB でバランシングできるよう設定する
環境
- CentOS 6.5
事前準備
- Rails 環境の用意
導入
Passenger
Gemfile に追記
gem 'passenger'
インストール
$ bundle install
Apache
インストール
$ cd /etc/yum.repos.d $ sudo wget https://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo $ sudo yum install --enablerepo=epel-httpd24 httpd24 $ sudo yum install libcurl-devel httpd httpd-devel apr-devel apr-util-devel
Apache 用モジュールインストール
$ passenger-install-apache2-module
/etc/httpd/conf.d/zzz_application.conf
作成
<VirtualHost *:80> ServerName [適切なホスト名] DocumentRoot /var/www/html/application_rails/public ErrorLog /var/log/httpd/application_error.log TransferLog /var/log/httpd/application_access.log <Directory /var/www/html/application_rails/public> AllowOverride all Options -MultiViews Order allow,deny allow from all </Directory> </VirtualHost> <VirtualHost *:8080> <IfModule mod_rewrite.c> RewriteEngine On RewriteLog /var/log/httpd/rewrite.log RewriteLogLevel 1 RewriteCond %{HTTP:X-Forwarded-Port} !^443$ RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker RewriteRule ^(.*)?$ https://%{HTTP_HOST}$1 [R=301,L] </IfModule> </VirtualHost>
/etc/httpd/conf/httpd.conf
追記
ServerName localhost:80 Listen 8080 -> ここの追記忘れずに LoadModule passenger_module /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/passenger-5.0.29/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/passenger-5.0.29 PassengerDefaultRuby /usr/local/rbenv/versions/2.3.1/bin/ruby </IfModule>
起動
$ sudo /etc/init.d/httpd start
番外編
$ sudo chkconfig passenger off $ sudo chkconfig httpd on
Vagrant + Ruby on Rails + Mysql 環境構築
目的
- ローカル環境で Rails 環境を起動させて開発を始めたい時に気軽に起動できるようにする
事前準備(適宜ご用意)
- Vagrant のインストール
- OSイメージ(bento/centos-6.7)
vagrant box add bento/centos-6.7
- Vagrant 起動用のディレクトリ作成
実施
Vagrant ファイルの用意
$ vagrant init bento/centos-6.7 $ vim Vagrantfile ===== 下記に書き換え ===== Vagrant.configure(2) do |config| config.vm.box = "bento/centos-6.7" config.vm.network :"forwarded_port", guest: 3000, host: 30000 config.vm.provision "shell", path: "provision.sh" end ==========================
Provision 用のコマンド実行スクリプトの用意
$ vim provision.sh ===== 下記に書き換え ===== #!/usr/bin/env bash yum -y install git yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libxml2 libxslt libxml2-devel libxslt-devel chmod 777 /var/local/ git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv chmod -R 777 /var/local/ echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build chmod -R 777 /usr/local/rbenv/ /usr/local/rbenv/bin/rbenv install -v 2.3.1 /usr/local/rbenv/bin/rbenv rehash /usr/local/rbenv/bin/rbenv global 2.3.1 echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile echo 'eval "$(rbenv init -)"' >> /etc/profile source /etc/profile cp -p /usr/share/zoneinfo/Japan /etc/localtime /usr/local/rbenv/shims/gem update --system /usr/local/rbenv/shims/gem install nokogiri -- --use-system-libraries /usr/local/rbenv/shims/gem install rails -v 4.2.6 yum install -y sqlite-devel yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum -y install mysql-community-server chkconfig mysqld on service mysqld start yum -y install mysql-devel ==========================
環境構築 + ログイン
$ vagrant up $ vagrant ssh ログインして rails などインストールできてない場合 $ vagrant provision を実行
- あとはログインして、rails 開発したいように設定していってください。