本記事について
さくらVPS仮想サーバーでサイトをアップするまでに初期設定で行ったことです。
インストール
・centOS7
・Apache
・php7
・mariadb
設定
・firewall(http、https、sshのみ許可)
・scp手順
・秘密鍵生成
・ユーザーの作成
・rootユーザーとパスワードログインの無効化
さくらVPSのコントロールパネルにログインし、centOSのインストール
ログインはマストではありませんが、あくまで今回の忘備録として記載します。
ログイン後、コントロールパネルから各種設定にいきサーバーのosをいったん初期化。
次にOSインストールで、centOS7を選択。標準インストールします。この時設定するパスワードはssh等でログインする際に必要なので必ずメモしておくことが大事です。
今回はOSを初期化しましたが、しなくてもいいかもしれません。
初期に何のOSが入っているかまでは確認していませんが。また初期のパスワードは、VPS契約時に発行されているものになります。
サーバーにsshでログイン後、変更することも可能ですが、ここでその説明は割愛します。
またコントロールパネルでOSをインストールしなくてもsshからでもできるはずです。
(2件目契約時に最初からssh試みたがタイムアウトだったので、最初はコントロールパネルに入りOSインストールする必要ありかもです)
Apacheやphpやデータベースなどをインストールする
sshでサーバーにログインする
ここからはコントロールパネルではなく、sshでログインして行います。
パソコンのターミナル(コマンドライン)を開き、どこからでもいいので、
ssh root@123.123.123.123
を打ち、パスワードを求めらるので入力します。
※公開鍵等を設定すれば、パスワード入力が不要になります。
詳細はこちらをご覧下さい。→ sshと公開鍵を使ってサーバーにログイン
yum update から ミドルウェアのインストール
最初にアップデートをかけました。これはマストでもないかもしれません。
[root@localhost ~]# yum update
結構長い時間がかかります。
そのあと、絶対的に必要なミドルウェアをいれます。
Apacheのインストール
[root@localhost ~]# yum -y install httpd
これがないとサーバーとして機能しません
gitとzipとvimのインストール
[root@localhost ~]# yum -y install git zip vim
gitやzipがないと、このあとインストールするphp関連のところがインストールできません。unzipもあっても良いかもしれません。
実際には、最初にyum updateかけてあるので、gitもzipもvimもすでにインストール済みでした。
データベースのインストール
mySQLかmariaDBがどちらが良いかは割愛します。てかどっちでも良いと思います。
[root@localhost ~]# yum -y install mariadb mariadb-server
php7と関連のパッケージのインストール
phpをインストールするためにepelとremiをインストールします。
後者remiについてはyum updateの関係かすでにインストール済みでした。
yum -y install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
phpは確実にバージョン7がいいと思います。
[root@localhost ~]# yum -y install --enablerepo=remi,epel,remi-php70 php php-intl php-mbstring php-pdo php-mysqlnd
これでミドルウェアのインストールは終了です。
念のためアパッチサーバーとデータベースを自動起動にしておきましょう。(後者はなぜかうまくいかなかったがとりあえずパス)
systemctl enable httpd
systemctl enable mysqld
コードの書かれたファイルをどこにアップするのが良いか
sshでログイン後、ls -la でカレントディレクトリの中身を見ると下記のとおりになっています。
[root@localhost ~]# ls -la
合計 32
dr-xr-x---. 5 root root 4096 7月 5 10:38 .
dr-xr-xr-x. 17 root root 4096 7月 5 08:19 ..
-rw------- 1 root root 30 7月 6 00:50 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
drwxr-xr-x 3 root root 17 10月 31 2016 .cache
drwxr-xr-x 3 root root 17 10月 31 2016 .config
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
drwxr----- 3 root root 18 10月 31 2016 .pki
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
[root@localhost ~]#
cd ../
として一個上の階層にいくとたくさんのディレクトリが見つかります。
結論的にはコードの書かれたコードをどこにおくかといったら、
/homeの中か、
/var/www/htmlの中がいいでしょう。
ドキュメントルートの中身を確認
vi /etc/httpd/conf/httpd.conf
このファイルをエディタで開き、『document route』と書かれている部分を見るとおそらく次のようになっています。
/var/www/html
結論的には、このデフォで設定されているディレクトリ以下にファイルをアップしました。
このdocument routeを変更して、/home以下に設定するにもありかもしれません。
scpでリモートにファイル転送をする
手間なく一気にいきます。
一回vpsサーバからログアウトし、自分のpcから
scp -r ./ root@123.123.123.123:/var/www/html/
-rというオプションで、ディレクトリ以下も一気に転送しています。
ちなみにローカルPCの現在の ./以下には下記のよう感じです。ゴミファイル(.DS_)は消しましょう。
n-MacBook:src non$ ls -la
total 48
drwxr-xr-x 13 non staff 442 7 5 07:56 .
drwxr-xr-x 11 non staff 374 7 4 01:52 ..
-rw-r--r--@ 1 non staff 8196 7 5 01:18 .DS_Store
drwxr-xr-x 15 non staff 510 7 4 03:18 category
drwxr-xr-x 5 non staff 170 7 5 07:56 css
drwxr-xr-x 202 non staff 6868 7 4 01:44 img
-rw-r--r-- 1 non staff 3142 7 5 07:56 index.html
drwxr-xr-x 17 non staff 578 7 5 05:58 info
drwxr-xr-x 7 non staff 238 7 5 07:56 policy
drwxr-xr-x 11 non staff 374 7 5 07:56 tpl
n-MacBook:src non$
サーバーにコマンドで転送するとこんな感じです。
[root@localhost ~]# cd /var/www/html/
[root@localhost html]#
[root@localhost html]# ls -la
合計 40
drwxr-xr-x 10 root root 134 7月 6 01:28 .
drwxr-xr-x 4 root root 31 7月 6 00:55 ..
drwxr-xr-x 2 root root 4096 7月 6 01:27 category
drwxr-xr-x 2 root root 59 7月 6 01:27 css
drwxr-xr-x 2 root root 8192 7月 6 01:28 img
-rw-r--r-- 1 root root 3142 7月 6 01:28 index.html
drwxr-xr-x 2 root root 4096 7月 6 01:28 info
drwxr-xr-x 2 root root 132 7月 6 01:28 policy
drwxr-xr-x 2 root root 4096 7月 6 01:28 tpl
[root@localhost html]#
うまくscpでアップできたのが確認できます。
※結局はあとあと、scpでアップしたものではなく、gitの鍵を作成し、リポジトリに登録したあと、クローンする手法にしています。毎回プルすれば最新のコードが入るように。
ファイヤーオールの設定
censOs7からiptableではなくなっている。
systemctl status firewalld.service
最初はhtml許可されてないので、追記するかstopすれば大丈夫。
もしくは、http https ssh のみを許可する。
現在のzoneの確認
firewall-cmd --get-default-zone
追加
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-service=ssh --permanent (publicならデフォで有効になっている)
確認と再起動
firewall-cmd --list-services --zone=public --permanent
systemctl restart firewalld
アパッチの設定
documentrouteはとりあえずデフォルトのままにし、
AllowOverride All
は追記しておく。デフォはnoneになっているはず。
これでdocumentrouteに、.htaccessが置けるので、そこで、phpをhtmlファイルでも読めるようにしておく。
AddType application/x-httpd-php .htm .html
sshログインの際の公開鍵の設定
ローカルPCで鍵を作成する。パスフレーズななしで作成。名前もid_rsaにはしてない。
ssh-keygen -t rsa
.pub(公開鍵)をさくらのサーバーに持っていく。
本当はrootではなくユーザ分けしたほうが良いのだろうが。
/root/.ssh/
ここでファイル名をもともとの、◯◯.pubでなく、authorized_keysにする。
mv ◯◯.pub authorized_keys
これで毎回パスワードを打たなくても、ローカルからさくらへログインできる
ssh root@123.123.100.100 -i ~/.ssh/◯◯_rsa
sshのconfig設定 (ssh接続を簡略化する)
ローカルPCの ~/.ssh/config に下記を追記。(なければファイルごと作成)
Host ◯◯△△
HostName 123.123.100.100 (◯◯.comとかでも平気)
User root (root以外でログイン出来れば他のユーザー名でも良い)
IdentityFile ~/.ssh/◯◯_rsa
これで、ssh ◯◯△△
だけでログインできるようになります。
ユーザーの作成
これでユーザーとユーザー別のディレクトリが出来る
useradd hoge
パスワードの設定
passwd hoge
鍵を下記のディレクトリを作成し置いておこう
mkdir /home/hoge/.ssh
rootユーザーログインの無効化と、パスワードログインの無効化
vi /etc/ssh/sshd_config
PermitRootLogin yes
をnoに変更する
PasswordAuthentication yes
をnoに変更する
systemctl restart sshd
さくらサーバーでドメイン登録
今回は他社取得のドメインなので、
まずはさくらサーバーのコントロールパネルに入り、ドメインの登録をします。
ゾーン登録も続けて行うと、ネームサーバーが指定されます。
ns1.dns.ne.jp
ns2.dns.ne.jp
指定されたネームザーバを
他社(お名前ドットコム、ムームドメイン)のコントロールパネルから、登録します。