さくらVPSでLAMP + Wordpress環境を構築する方法まとめ

#さくらVPSでLAMP + Wordpress環境を構築する方法まとめ

学習用にさくらVPSでLAMP環境を構築したので、手順をまとめます.

## 目次
* [動作環境](#動作環境)
* [手順](#手順)
  * [さくらVPSの申し込み](#さくらVPSの申し込み)
  * [SSH接続](#ssh接続)
  * [SSH接続のセキュリティ設定](#ssh接続のセキュリティ設定)
  * [Apacheのインストール](#apacheのインストール)
  * [ドメインの設定](#ドメインの設定)
* [リポジトリの設定](#リポジトリの設定)
* [phpのインストール](#phpのインストール)
* [MySQLのインストール](#mysqlのインストール)
* [SSLの設定](#sslの設定)
* [wordpressのインストール](#wordpressのインストール)
* [終わりに](#終わりに)


# 動作環境
`OS : macOS Mojave 10.14.6`
`VPS OS : centOS `

# 手順

## さくらVPSの申し込み

1. `さくらのwebサイト>VPS>2週間無料でお試し` にアクセス
サーバをカートに入れ申し込み.

2. メールに記載されているIDとパスワードでログインし,VPSコントロールパネルにログイン

3. `各種設定>OSインストール`
*OSをインストールする際にVPSにログインするためのパスワードを入力するので忘れずにメモします.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526570/5e9b0000-4760-2e46-4b65-1275648d3053.png)

これでさくらVPSの申し込みからOSのインストールまでが完了です.

## ssh接続

つぎにローカルPCからインターネット上のVPSに接続するためのSSH接続の設定手順をまとめます.

### 1. Terminal起動とroot権限でログイン

手元のMACでTerminalを起動します.

そして以下のsshコマンドで接続します.
パスワードはOSをインストールした際に入力したものです.

```bash
$ ssh root@VPSのIPアドレス
```


### 2. ソフトウエアのupdate

```bash
$ yum update
```

### 3. 一般ユーザの作成


```bash
$ adduser jun1 #user追加
$ passwd jun1 #password設定
``` 

sudoが使えるように設定

```bash
$ visudo
``` 

```vim
wheel ALL=(ALL) ALL #コメントアウトを外す
```

jun1ユーザをwheelグループに追加

```bash
$ usermod -aG wheel jun1
$ groups jun1
jun1 : jun1 wheel
``` 

jun1でログインできるか確認

```bash
$ ssh jun1@VPSのIPアドレス
$ パスワード入力 
```

### 4. ssh鍵認証の設定

ローカルのPCのターミナルを起動して実行

```bash
MAC$ ssh-keygen -t rsa -v
MAC$ ls ~/.ssh
config		id_rsa		id_rsa.pub	known_hosts
```
sshでVPSに接続

```bash
VPS$ mkdir .ssh
VPS$ chmod 700 .ssh
```

ローカルPCからVPSへ公開鍵を転送

```bash:ローカルPC
MAC$ scp ~/.ssh/id_rsa.pub jun1@VPSのIPアドレス:~/.ssh/authorized_keys
MAC$ VPSのパスワード入力
```

鍵を利用してサーバにログイン

```bash:ローカルPC
MAC$ ssh -i ~/.ssh/id_rsa jun1@VPSのIPアドレス
```

## ssh接続のセキュリティ設定

### 1.ポート番号の設定

```bash:VPS
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ort #設定ファイルのバックアップ
$ sudo vim /etc/ssh/sshd_config
```

Portを検索し、#を消して, 22 -> 56789(任意の番号で可)

### 2.パスワード認証の無効化

PasswordAuthenticationを検索し、
noに変更

### 3.rootログインの無効化

PermitRootLoginで検索し,noに変更

### 4.設定ファイルの確認

```bash:VPS
$ sudo sshd -t #設定ファイルに構文ミスがないか確認.何も出なければOK
$ sudo systemctl restart sshd #sshdの再起動
```

### 5.ファイアウォールの設定

```bash:VPS
$ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-56789.xml

$ sudo vim /etc/firewalld/services/ssh-56789.xml

```

port番号を22 -> 56789に変更

```bash:VPS
$ sudo firewall-cmd --reload
>success
$ sudo firewall-cmd --permanent --add-service=ssh-56789
>success
$ sudo firewall-cmd --reload
>success
$ sudo firewall-cmd --list-all
>ssh-56789
```

### 6.SSH動作確認

上記で開いていたターミナルを閉じずに別タブを開く

```bash:MAC
$ ssh -p 56789 -i ~/.ssh/id_rsa jun1@VPSのIPアドレス
```

### 7. sshをファイアウォールから削除

```bash:VPS
$ sudo firewall-cmd --permanent --remove-service=ssh
$ sudo firewall-cmd --reload
```

最後に念の為、ssh接続できるか確認

```bash:MAC
$ ssh -p 56789 -i ~/.ssh/id_rsa jun1@VPSのIPアドレス
```

## apacheのインストール

```bash:VPS
$ sudo yum install httpd 
```

### Apacheを起動

```bash:VPS
$ sudo systemctl start httpd
$ systemctl status httpd
#Activeと表示されているか確認
```
### Firewallの設定

```bash:VPS
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --add-service=https --zone=public --permanent
$ sudo systemctl restart firewalld
```
### さくらVPSのパケットフィルタの設定

さくらVPSのコントロールパネル>設定>パケットフィルタ>WEBを許可

### ブラウザからApacheの動作確認

ブラウザにVPSのIPアドレスを入力し,以下のテストページが表示されればOK

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526570/e412b892-5679-1fe4-2cfa-381df2aa145e.png)

### Apacheの自動起動の設定

```bash:VPS
$sudo systemctl enable httpd
```
### 権限の設定

ドキュメントルートの所有権をapacheに変更します.

```bash:VPS
$sudo groupadd web #グループの作成
$sudo usermod -aG web jun1 #グループにユーザの追加
```

```bash:VPS
$sudo chown apache:web /va/www/html/
$sudo chmod -R 775 /var/www/html/
```
### htmlファイルを作成しApacheの動作確認

```bash:VPS
$ vim /var/www/html/index.html
#適当に編集して保存
```

ブラウザから開いて確認

## ドメインの設定

### ドメイン取得サイトから購入

今回はバリュードメインに会員登録し、購入します。

### DNS設定

バリュードメインにログインし、DNSを設定
詳細は各ドメインサイトから確認します.

```text:バリュードメインの設定画面
a VPSのIPアドレス
```

ブラウザにドメインを入力し、表示されるか確認
*DNSの反映には1日かかることもあります.

## リポジトリの設定

2つのリポジトリをインストールします.

epelリポジトリ(Linuxのリポジトリ)
remiリポジトリ(PHPのリポジトリ)

### epelリポジトリ

```bash:VPS
$sudo yum repolist
#epelリポジトリがない場合は以下実行
$sudo yum install epel
```

### remiリポジトリ

ブラウザからremiリポジトリのURLをコピー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526570/66a46bae-71d3-0a3a-a43a-42d8c8b46e84.png)

```bash:VPS
$sudo yum localinstall remiのurl
```

## phpのインストール

インストールできるバージョンを確認

```bash:VPS
$ yum list available | grep php-
```
php71-common.x86_64を確認

```bash:VPS
$ sudo yum --enablerepo=remi-php71 install php php-devel php-mysql php-gd php-mbstring
```
Apaceh再起動

```bash:VPS
$ sudo systemctl restart httpd
```

### PHPの設定

```bash:VPS
$ sudo cp /etc/php.ini /etc/php.ini.org #設定ファイルのバックアップ
$ sudo vim /etc/php.ini
```

ファイルのアップロード上限を変更

```text:php.ini
post_max_size = 128M #8M -> 128M
upload_max_filesize = 128M #2M -> 128M
```
Apaceh再起動

```bash:VPS
$ sudo systemctl restart httpd
```

### PHPの動作確認

```php:/var/www/html/index.php
<?php 
echo 'Hello World';

```

ブラウザにドメイン名を入力し,index.phpを確認する

## mysqlのインストール

### MariaDBの削除

```bash:VPS
$ sudo yum remove mariadb-libs
$ sudo rm -rf /var/lib/mysql
```

### MySQLインストール

MySQL 5.7をインストールする

```bash:VPS
$ sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 
$ sudo yum install mysql-community-server
```
### MySQLの設定

```bash:VPS
$ sudo systemctl start mysqld
$ sudo cat /var/log/mysqld.log | grep 'temporary password' #初期接続パスワードを確認
```

```bash:VPS
$ mysql_secure_installation
#以下、指示どおり設定していく

```

```bash:VPS
$ mysql -u root -p
#ログインできるか確認
```

文字コードをUTFに変更

```bash:VPS
$ sudo vim /etc/my.conf
```

```text:my.conf
character-set-server=utf8
```

```bash:VPS
$ sudo systemctl restart mysqld
```
自動起動の設定

```bash:VPS
$ sudo systemctl enable mysqld
```

## sslの設定

### certbotを利用するためバーチャルホストを設定

```bash:VPS
$ sudo vim /etc/httpd/conf.d/ドメイン名.conf
```

```text:ドメイン名.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName ドメイン名
</VirtualHost>
```

### certbotをインストール

certbotのwebサイトからソフトウエアとOSを選択

```bash:VPS
$ sudo vim install certbot-apache
```

### 証明書を取得

```bash:VPS
$ sudo certbot --apache
```

### 動作確認

ブラウザにドメイン名を入力し、httpsになっているか確認

## wordpressのインストール

### DBの準備


```bash:VPS
$ mysql -u root -p 
mysql> create database myblog;
mysql> create user 'myblog_user'@'localhost' identified with mysql_native_password by '任意のpassword'
mysql> grant all privileges on myblog.* to 'myblog_user'@'localhost';
mysql> flush privileges;
```

### wordpressのダウンロード


```bash:VPS
$ wget https://ja.wordpress.org/latest-ja.tar.gz

$ sudo tart -zxvf latest-ja.tar.gz
-C /var/www/
#圧縮ファイルを展開

$sudo chown -R apache:web wordpress/

$sudo vim /etc/httpd/conf/httpd.conf
```

```text:httpd.conf
DocumentRoot "/var/www/wordpress"

<Directory "/var/www/wordpress">
```

```text:ドメイン名.conf
DocumentRoot /var/www/wordpress
```

```text:ドメイン名-le-ssl.conf
DocumentRoot /var/www/wordpress
```

### wordpressの確認

ドメインにアクセスして以下のページが表示されるか確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526570/b2dcd81b-eb93-1ecf-a30a-9f1dbcb9f7c1.png)

## 終わりに

今回はさくらVPSにLAMP環境を構築する学習の内容をまとめました。

Linuxコマンドの勉強になりました。