LoginSignup
5

More than 5 years have passed since last update.

【さくらVPS】CentOS7+PHP7+Apache | 秘密鍵+firewall+ユーザー作成+rootとパスワードログイン無効化

Last updated at Posted at 2017-07-05

本記事について

さくら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

指定されたネームザーバを
他社(お名前ドットコム、ムームドメイン)のコントロールパネルから、登録します。

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
5