Linux初心者がVPS借りてWebサービスをホストするまでのこまごましたことメモ
こういうことを残しておくと将来の自分に感謝されるのでメモ。
VPSを選ぶ
VPSはConoHaを借りた。
さくらのVPSも触ってはみたけれど、コンソールが日本語キーボードで入力することが前提みたいになっていたのが自分的にマイナス。
単にかっこいいからという理由でUSキーボードを使うVPS初心者にはハードモードだった。
ConoHaの場合は以下の2つの設定をすればOK。
- VPS設定 - コンソールキーマップを "ja" から "en-us"に変更する
- コンソールで次のコマンドを入力
sudo loadkeys us
このコマンドはサッと対処するにはいいが再起動すると初期化されてしまうことに注意。
CentOS/コンソール上の英語キーボード・日本語キーボードの切替方法
日本語入力ができない問題
CUIから日本語入力ができないが手元のMacからSSHで接続した場合はできるので必要なときはそっちから入力することにした。
OSを選ぶ
CentOS v6.7を選んだ。
最新のCentOS v7も選べたが、初心者には差異がよくわからないということ、細かい設定方法をウェブで探すときにCentOS v6の方が情報が多いので。
CentOSの基本設定 〜 SSH
少し古い記事だけどけっこう参考になる。
SSHキーを設定する部分は次のブログ記事がわかりやすい。
さくらvpsの設定自分メモ - ssh設定① - for mac
さくらvpsの設定自分メモ - ssh設定④ - for mac2台目とか
ただし、SSHキーをmacで生成するコマンドは "ssh keygen" ではなく "ssh-keygen"だった。
また、SSHの設定を変更してサービスを変更する部分はCentOS6と7で異なっている。
# CentOS6
/etc/init.d/sshd restart
#CentOS7
systemctl restart sshd.service
参考
http://www.putorius.net/2014/07/restarting-services-in-red-hat-7-or.html
動作環境のインストール
インストールするもの
- nginx
- MongoDB
- Golang
基本的に公式ドキュメントの手順に進めればOK
nginx のインストール
- /etc/yum.repos.d/nginx.repoを作成
- nginxインストール https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-6-with-yum
golangのインストール
- 最初にgolangのファイルをダウンロードするコマンド
wget https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
※後述する原始的なデプロイ方法を取ったのでこれはおそらく必要なかった。
参考
How to install Go language on Linux
資産のデプロイ
原始的(で非効率)なやり方
- とりあえずVPSでアプリを動かすことを優先している
- 開発機であるMacのローカルでLinux用にビルドしてscpで転送するというもの。
GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o app.linux github.com/seihmd/app
sudo scp -rp ./app [email protected]:/path
- golangのドキュメント通り .linux というファイル名にしたがlinuxでは拡張子は合ってないようなものなのでなんでもいいかもしれない。
- 普通はgithubの資産をフェッチしてvpsサーバーでビルドして、という手順?そこらへんはよくわからない。
- ただ、その手順だとwebpackでjsファイルを一つにしているフロントエンドの資産をビルドするためにさらにNode.jsやらなにやら入れないといけないのでやめた。
- 手元のMacでもLinux用のバイナリをビルドできるGoの手軽さに甘えることにした。
資産のデプロイ先ディレクトリ
- とりあえず/home/username/以下に作ったディレクトリにデプロイした。
- CentOSでよく使われるのは/var/www/っぽい?
Google analytics
目ぼしい項目を設定したら後はDot metrixで確認するようにした
ドメイン設定
お名前.comとかでドメインを取得
-
ConoHaのダッシュボードからDNSの設定をする
ここまででDNSの設定値は次のようになった
お名前.comとかでドメインを取得
ConoHaのダッシュボードからDNSの設定をする
ここまででDNSの設定値は次のようになった
タイプ | 名称 | 値 |
---|---|---|
A(通常) | @ | xxx.xxx.xxx.xx |
NS | @ | ns-a1.conoha.io |
NS | @ | ns-a2.conoha.io |
NS | @ | ns-a3.conoha.io |
nginxの設定
初期設定
まずは最低限と謳われる設定をしておく。mydomain.confの記述は変更する必要がある。
webアプリをホストする設定
WebアプリはGoのフレームワーク Martini を使用しているので、mydomain.confを合わせる必要がある。
How To Use Martini to Serve Go Applications Behind an Nginx Server on Ubuntu
server {
listen 80;
server_name mydomainname;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:3000;
}
何もフレームワークを使わないなら次の記事が参考になりそう。
Nginx + Golang でWebアプリケーション開発を試してみた
nginxをrestartすれば(かつドメインが通っていれば)、ドメイン名のURLでWebサービスが表示されるようになる。
セキュリティ・パフォーマンスのための設定
http{:
gzip on;
gzip_types application/x-javascript application/json;
gzip_vary on;
gzip_proxied any;
server_tokens off;
gzip_typesで"application/x-javascript"としたのはchromeのデベロッパツールでContent-Typeをみるとそうなっていたから。
gzip_staticの設定はやりたいけどなぜかbundle.jsが404エラーになるのでまだできていない
Favicon
作成
keynoteとFavicon Generatorで作成した
かなり縮小して表示されるので、複雑な図形でないことや輪郭(色の明暗?)がはっきりしていたほうがいい
表示設定
- index.htmlのheadにlinkを追加
<link href="favicon.ico" type="shortcut icon" sizes="96x96">
- nginxの設定は特に無し
- faviconの置き場所 index.htmlと同じディレクトリ
approot --- app.linux
└ public --- index.html, favicon.ico
ブラウザからの確認
Faviconを差し替えても古いアイコンが表示されるのはキャッシュされているから。
その場合、/favicon.ico にアクセスし、リロードをかけて新しいファイルを取得させる必要がある。
リリース前の確認
- 各ブラウザ、モバイル表示の確認
- Webサービス作った系のエントリを読んで復習
完成?
作ったサービスについてはそのうちQiitaにエントリを書く予定。
便利コマンドメモ
- mongoDBのエラー
mongoコマンドで次のエラーが出たとき
Failed global initialization: BadValue Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly.
export LC_ALL=C
- iptablesをOFFにする
Vagrant使って開発中にブラウザからlocalhost:xxxxが確認できないときは大体これ
/etc/init.d/iptables save
/etc/init.d/iptables stop
- .bash_profileのリロード
source ~/.bash_profile
- ストレージ容量の確認
df -h
Author And Source
この問題について(Linux初心者がVPS借りてWebサービスをホストするまでのこまごましたことメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/seihmd/items/a0e7f8948d2be9356c62著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .