OSのインストール~FTPのインストールまで
前回の記事では簡単な説明のみでしたが、今回の記事からは設定方法を説明していきます。
今回の記事は『OS』『WEB』『DB』『WordPress』のインストール、『PHPMyAdmin』『FTP(SFTP)』を導入するまでの手順をご紹介します。
なお、サンプルの共通スペックは『Vultr(2048MB)・Ubuntu16.04・Nginx・PHP7・MariaDB・Wordpress・+α』となっています。
(本文前に)簡単な3行まとめ
- 今回の記事はOSからFTPのインストールまでの設定。
- WordPressが使用可能になる設定も含まれている。
- 非常に長い記事なので、時間がある時に読むのがおすすめ。
記事目次
- OSのインストール
OSのインストール手順。
- OS初期設定
OSの初期設定例。
- Nginxの導入
Nginxのインストール方法。
- PHP7の導入
PHP7のインストール方法。
- MariaDBの導入
MariaDBのインストール方法。
- WordPress導入前の設定
WordPress導入前の設定例。
- WordPressの導入
WordPressのインストール方法。
- PHPMyAdminの導入
PHPMyAdminのインストール方法。
- FTPの導入
FTPサーバの導入方法
- 次回はNginxとMariaDBのチューニング
次回の記事について。
- シリーズ目次
これまでに公開された関連記事。
OSのインストール
今回使用するOSはUbuntu16.04です。
Configure the keyboard
キーボードのレイアウトタイプを選択します。
基本的には『Japanese』を選択し、レイアウト(Keyboard layout)も『Japanese』を選択します。
Configure the network
ここではVPS契約時に提供されたIPを入力します。
IPはVPSコントロールパネルに記載されているIPv4欄の『アドレス』を入力します。例:『160.11.201.60』
ネットマスクも同様にIPv4欄の『ネットマスク』を入力します。例:『255.255.254.0』
ゲートウェイも同様にIPv4欄の『ゲートウェイ』を入力します。例:『160.10.200.1』
ネームサーバアドレスも同様にIPv4欄の『プライマリDNS』を入力します。例:『200.190.170.10』
Set up users and passwords
まず最初に『OSのユーザー名(Full name for the new user)』を入力します。
次に『ログイン時のアカウント名(Fullname for your account)』を入力します。
そして最後に『アカウントのログインパスワード(Choose a password for the new user)』を入力します。
その後、ユーザーのホームディレクトリを暗号化するかどうかを聞かれます(Encrypt your home directory?)が、基本的には『No』を選択します。
Partition disks
『Unmount partitions that are in use?』は『Yes』を選択します。
『Partitioning method』は『Guided – use entire disk』を選択します。
『Select disk to partition』は『一台目のディスク(sdaまたvda)』を選択します。
『Write the changes to disks?』は『Yes』を選択します。
その後は自動的にOSの設定が行われ、インストールは終了します。
Software Selection
これは『Standard system utilities』および『OpenSSH server』をShiftキーで選択し、Enterキーで実行します。
Standard system utilitiesはVim等の基本ツールが自動的に組み込まれます。
OpenSSH serverはteraterm等のターミナルエミュレーターを使う際に必要となります。
OS初期設定
ではまず最初に『ログイン時のアカウント』および『アカウントのログインパスワード』を用いてログインします。
基本的にteratermを使ってログインを行っています。
各種チェック
必要な方は次に『IPチェック』『CPU性能確認』『時間確認』をして下さい。
IPチェック
$ ip a
CPU性能確認
$ cat /proc/cpuinfo
時間確認
$ date
ファイル一覧を更新
パッケージを導入、更新するコマンド『apt-get』を用いてファイル一覧を更新します。
ファイルの更新を確認
$ sudo apt-get update
更新されたファイルを適用
$ sudo apt-get upgrade
『upgrade』では最新版の適用の際に追加パッケージのダウンロードが必要となった場合、そのファイルの更新は中断されます。
追加パッケージも導入し、完全な最新状態を希望する場合は『dist-upgrade』を用います。
$ sudo apt-get dist-upgrade
Vimの導入
テキストエディタの一種である『Vim』をインストールします。
テキストエディタは好みですので、他のものを使いたい方は別のエディタを使用しても構いません。
なお、今回のサンプルは編集を全てVimで統一しています。
Vimのコマンドについては以下を参考にして下さい。
Vimコマンドまとめ – Qiita
http://qiita.com/merrill/items/9c800030333ab4c9408f
Vimをインストールします。
$ sudo apt-get install -y vim
authorized keysの設定
鍵の設定を行います。
保存場所、id_rsaがそのままで良ければEnter。
パスフレーズは必要なければ空白のままEnter。
$ cd
$ ssh-keygen
鍵が生成されるので確認します(.pubが公開鍵)。
$ cd ~/.ssh
$ ls -la
公開鍵をアップロードします。
cant be establishと表示された場合は『Yes』を選択します。
パスワードを求められるので、アカウントのログインパスワードを入力するとアップロードが完了します。
$ scp -P 22 ~/.ssh/id_rsa.pub アカウント名@割り当てられたIP:~/.ssh/authorized_keys
次に『chmod』を使い、公開鍵のパーミッション(所有権)を変更します。
$ cd
$ sudo chmod 700 .ssh
$ sudo chmod 600 .ssh/authorized_keys
SSHのセキュリティ設定
SSHの設定ファイルをエディタで開き、設定を変更します(設定は例です)。
$ sudo vim /etc/ssh/sshd_config
sshd_config
# デフォルトポートから他の競合しない数値に変更
Port 12345
# rootでのログインを不可にする
PermitRootLogin no
設定後はSSHを再起動します。
この時点で設定したポートでログインが可能になります。
$ sudo service ssh restart
Uncomplicated Firewall(UFW)のセキュリティ設定
ファイアウォールサービスの『UFW』の各種設定を行います。
すべてのポートを一時的に拒否
$ sudo ufw default deny
SSHを許可する
$ sudo ufw allow 12345(sshで設定したポート番号)
ブラウザでの閲覧を許可
$ sudo ufw allow 80
UFWを有効化
$ sudo ufw enable
UFWのステータスを確認
$ sudo ufw status
UFWを再起動
$ sudo service ufw restart
IPv6を無効化
『IPv6』を使用する目的が無い場合は無効化しておきます。
$ sudo vim /etc/default/ufw
ufw
# IPV6を使用しない
IPV6=no
/etc/sysctl.confの末尾に『net~』を追加します。
$ sudo vim /etc/sysctl.conf
sysctl.conf
# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
保存後、設定を反映させます。
$ sudo sysctl -p
ifconfigを行い、IPv6(inet6)が消えていればIPv6の無効化成功です。
$ ifconfig
不要なデーモンを停止
『sysv-rc-conf』を用いて不要なデーモンを停止させます。
停止させるのは『dns-clean(PPP接続前にDNSキャッシュを削除)』『grub-common(GNUの高機能ブートローダー)』『ondemand(クロック制御)』『pppd-dns(PPP接続前にresolv.confを読み込む)』『rsync(高速ファイルコピー)』の5つです。
もし今後使用予定があるデーモンがあれば除外して下さい。
まずsysv-rc-confをインストールします。
$ sudo apt-get install -y sysv-rc-conf
アカウントのパスワードを入力し、rootログイン。
$ sudo su -
不要なデーモンを停止。
# sysv-rc-conf dns-clean off
# sysv-rc-conf grub-common off
# sysv-rc-conf ondemand off
# sysv-rc-conf pppd-dns off
# sysv-rc-conf rsync off
rootをログアウト。
# exit
再起動します。
$ sudo reboot
Nginxの導入
ウェブサーバ『Nginx』をインストールします。
Nginxのインストール
まず更新チェックを行い、その後データ取得コマンド『curl』をインストール、次にNginxのリポジトリ署名を追加します。
$ sudo apt-get update
$ sudo curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
リポジトリを追加します(リストは/etc/apt/sources.list)。
$ sudo sh -c "echo 'deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx' >> /etc/apt/sources.list"
$ sudo sh -c "echo 'deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx' >> /etc/apt/sources.list"
更新を確認し、Nginxをインストールします。
$ sudo apt-get update
$ sudo apt-get install -y nginx
インストール後、Nginxのバージョンを確認します(2016/05/15現在、最新バージョンは1.10.0です)。
$ nginx -v
PHP7の導入
PHP7のインストール
『PHP7』をインストールする前に必要なパッケージを導入します。
$ sudo apt-get install -y software-properties-common
$ sudo apt-get install -y python-software-properties
その後Ondrej Sury氏による非公式リポジトリ(Personal Package Archive – PPA)を追加します。
※2016/7/15 追記『ppa:ondrej/php-7.0』から『ppa:ondrej/php』に変更となりました。
$ sudo add-apt-repository ppa:ondrej/php
更新を確認し、次にPHP7および付随するパッケージをインストールします(PHPのバージョンごとに数値を変えられます)。
$ sudo apt-get update
$ sudo apt-get install -y php7.3 php7.3-common php7.3-cgi php7.3-fpm php7.3-mysql php7.3-gd php7.3-dev php7.3-curl php7.3-zip php7.3-mbstring php7.3-xml
PHP7のバージョンを確認します(2018/12/09現在、最新バージョンは7.3です)。
$ php -v
MariaDBの導入
MySQLと互換性があり、更に高性能と言われているデータベースエンジン『MariaDB』をインストールします。
MariaDBのインストール
『apt-key』でキーを追加します。
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
リポジトリを追加し、更新チェックします。
$ sudo add-apt-repository 'deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.4/ubuntu xenial main'
$ sudo apt-get update
インストール時にrootに対するパスワードが求められるので、新しくパスワードを作成します。
$ sudo apt-get install -y mariadb-server
データベースにアクセス
インストール後、データベースにアクセスします(パスワードは先程新しく作成したもの)。
$ mysql -u root -p
WordPressで使用するデータベースを新規作成します(example.comは例です)。
MariaDB > CREATE DATABASE `example.com`;
データベースが追加されたか確認。
MariaDB > SHOW DATABASES;
確認出来ればデータベースから離脱します。
MariaDB > exit
WordPress導入前の設定
WordPressを導入する前に簡単な設定を行います。
PHP7設定
php-fpm.confに記載されているevents~のコメントアウト(;)を外します。
$ sudo vim /etc/php/7.3/fpm/php-fpm.conf
php-fpm.conf
; コメントアウトを外す
events.mechanism = epoll
php.iniのタイムゾーンを日本時間に切り替えます。
$ sudo vim /etc/php/7.3/fpm/php.ini
php.ini
; タイムゾーンを日本時間に
date.timezone = "Asia/Tokyo"
PHPの所有者とグループを変更します。
$ sudo vim /etc/php/7.3/fpm/pool.d/www.conf
www.conf
; listenが付いている事に注意
listen.owner = nginx
listen.group = nginx
PHPを再起動します。
$ sudo service php7.3-fpm restart
Nginx設定
WordPressに使用するディレクトリを作成します(example.comは例です)。
$ sudo mkdir -p /var/www/example.com/
Nginxのdefault.confを自サイト用の設定ファイルとして複製し、default.confは削除します。
$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/example.com.conf
$ sudo rm /etc/nginx/conf.d/default.conf
先程複製したファイルを編集します。
$ sudo vim /etc/nginx/conf.d/example.com.conf
example.conf
server {
listen 80;
server_name example.com;
root /var/www/example.com/;
index index.html index.php;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$uri&$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_keep_conn on;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Nginxを再起動する。
$ sudo service nginx restart
WordPressの導入
WordPressをインストールします。
unzipインストール
まず更新をチェックし、その後圧縮ファイル展開用の『unzip』をインストールします。
$ sudo apt-get update
$ sudo apt-get install -y unzip zip
WordPressのダウンロード
テンポラリディレクトリ(tmp)に移動した後、『wget』でダウンロードを行い、その後展開します。
最新版はhttps://ja.wordpress.org/より確認すること。(2018/11/14現在、最新版は4.9.8)
$ cd /var/tmp
$ sudo wget https://ja.wordpress.org/wordpress-4.9.8-ja.zip
$ unzip wordpress-4.9.8-ja.zip
展開後、WordPressディレクトリへ移動し、全てのファイルを『/var/www/~』にコピーします。
$ cd wordpress/
$ sudo cp -rp * /var/www/example.com
$ cd
権限の設定
所有者およびグループの権限設定を行います。
devグループを追加します。
$ sudo groupadd dev
『/var/www/~』を『chown』を用いて所有者を『www-data』グループを『dev』に変更します。
$ sudo chown -R www-data:dev /var/www/example.com/
サブグループを作成し(exampleは例です)、確認します。
$ sudo usermod -a -G dev www-data
$ sudo usermod -a -G dev example
$ id example
rootログインします。
$ sudo su -
WordPressを格納しているディレクトリへ移動します。
# cd /var/www/example.com/
パーミッションを変更します。
ファイルは664(所有者およびグループReadWrite可、その他はReadのみ可能)。
ディレクトリは2775(SGIDによりディレクトリ内のファイルおよびディレクトリはグループを継承し、所有者およびグループはReadWriteExec可能、その他はReadExec可能)。
SGIDについては:Linux: SUID、SGID、スティッキービットまとめ – Qiita
# find . -type f -print | xargs chmod 664
# find . -type d -print | xargs chmod 2775
rootから離脱します。
# exit
wp-config.phpの編集
『wp-config.php』をコピーします。
$ sudo cp /var/www/example.com/wp-config-sample.php /var/www/example.com/wp-config.php
wp-config.phpを編集します。
$ sudo vim /var/www/example.com/wp-config.php
『database_name_here』にMariaDBで設定したデータベース名(例:example.com)、『password_here』にMariaDBのパスワードを入力します。
wp-config.conf
/** WordPress のためのデータベース名 */
define('DB_NAME', 'database_name_here(変更)');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'root');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here(変更)');
また、同ファイルに認証用ユニークキー(セキュリティ効果)の設定があるので、https://api.wordpress.org/secret-key/1.1/salt/を利用してコピペして下さい。
/**#@+
* 認証用ユニークキー
*
* それぞれを異なるユニーク (一意) な文字列に変更してください。
* {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
* 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。
*
* @since 2.6.0
*/
define('AUTH_KEY', 'put your unique phrase here(変更)');
define('SECURE_AUTH_KEY', 'put your unique phrase here(変更)');
define('LOGGED_IN_KEY', 'put your unique phrase here(変更)');
define('NONCE_KEY', 'put your unique phrase here(変更)');
define('AUTH_SALT', 'put your unique phrase here(変更)');
define('SECURE_AUTH_SALT', 'put your unique phrase here(変更)');
define('LOGGED_IN_SALT', 'put your unique phrase here(変更)');
define('NONCE_SALT', 'put your unique phrase here(変更)');
再起動する
https://docs.phpmyadmin.net/ja/latest/config.html#cfg_TempDir
全ての設定が終わりましたので、『Nginx』『MariaDB』『PHP』を個別で再起動させます。
全ての再起動でエラーが出なかった場合は、この時点でWordPressが使用可になります。
$ sudo service nginx restart
$ sudo service mysql restart
$ sudo service php7.3-fpm restart
PHPMyAdminの導入
データベース編集ツールのPHPMyAdminをインストールします。
PHPMyAdminのインストール
まずディレクトリを移動します。
$ cd /usr/share
次にhttps://www.phpmyadmin.net/からPHPMyAdminの最新版を入手し(2018/11/14現在、最新版は4.8.3)、展開します。
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.8.3/phpMyAdmin-4.8.3-all-languages.zip
$ sudo unzip phpMyAdmin-4.8.3-all-languages.zip
展開したディレクトリの名前をphpmyadminに変更し、ダウンロードしたzipを削除します。
$ sudo mv phpMyAdmin-4.8.3-all-languages phpmyadmin
$ sudo rm phpMyAdmin-4.8.3-all-languages.zip
PHPMyAdminディレクトリのパーミッションを変更します。
$ sudo chmod -R 775 phpmyadmin
シンボリックリンク(ショートカットのようなもの)を作成します。
$ sudo ln -s /usr/share/phpmyadmin /var/www/example.com
必要パッケージをインストールします。
$ sudo apt-get install -y libmcrypt-dev
sessionsディレクトリを追加します。
$ cd /var/lib/
$ cd php
$ sudo mkdir sessions
$ sudo chmod 777 sessions
作成できたか確認します。
$ ls -l
$ cd
php.iniを編集し、sessionsディレクトリを追加します。
$ sudo vim /etc/php/7.3/fpm/php.ini
php.ini
; pathを追加
session.save_path = "/var/lib/php/sessions"
PHPを再起動します。
エラーが無ければここでPHPMyAdminが使用出来るようになります。
$ sudo service php7.3-fpm restart
次に『ドメイン名/phpmyadmin』にアクセスし、PHPMyAdminにログインします。
その後、『サーバ接続の照合順序』を『utf8mb4_general_ci』に変更しておきます。
PHPMyAdminの管理権限ユーザーを作成
ログイン時に『環境保管領域が完全に設定されていないため~』という警告が発生しているため、警告を消去するための設定を行います。
まずMariaDBにログインします。
$ mysql -u root -p
次に『create_tables.sql』を使い、データベースを追加します。
MariaDB > source /usr/share/phpmyadmin/sql/create_tables.sql
確認を行い、『phpmyadmin』が存在していれば成功です。
MariaDB > show databases;
『use』コマンドを使い、データベースを切り替えます。
MariaDB > use phpmyadmin
テーブル内に『pma~』があるか確認します。
MariaDB > show tables;
次にphpmyadminの管理権限ユーザーを作成します。
下記コマンド記載の『ここにpmapassを入力』は新しく自分でパスワードを設定して下さい。
MariaDB > GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO pma@localhost IDENTIFIED BY "ここにpmapassを入力";
次のコマンドをそのまま入力します。
MariaDB > select host,user,password from mysql.user;
テーブルを更新します。
MariaDB > flush privileges;
MariaDBから離脱します。
MariaDB > exit
その後PHPMyAdminにログインして『phpmyadminにログインして環境保管領域が完全に設定されていないため~』が消えていれば成功です。
config.inc.phpの編集と暗号化 (blowfish_secret) を設定
先程の警告以外にも『暗号化 (blowfish_secret) 用の非公開パスフレーズ』を要求する警告が表示されているので、こちらも対策を行います。
ディレクトリを移動し、コピーを行います。
$ cd /usr/share/phpmyadmin/
$ sudo cp config.sample.inc.php config.inc.php
編集します。
$ sudo vim config.inc.php
config.inc.php
/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = 'ここに何でも良いので適当な文字を入れる'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
/*
* phpMyAdmin configuration storage settings.
*/
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = 'MariaDBのパスワードを入力';
/* Storage database and tables */
# コメントアウトを外す
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
上記の通りに編集後、PHPMyAdminにログインすれば警告が消えています。
PHPMyAdminのセキュア設定
PHPMyAdminにログインする時、そのままではセキュリティ上よろしくないため、URLの変更を行い、更にBasic認証を追加します。
これにより、多重アクセスの防止および二重認証でセキュリティ効果がアップします。
まずディレクトリに移動し、phpmyadminの存在を確認します。
$ cd /var/www/example.com/
$ ls -l
次に『mv』を使ってphpmyadminの名前を変更します(phpmyadminの次に書かれたワードが変更後の名前です)。
変更後の名前がURLアクセス時に使用するものとなります(例:ドメイン名/example)。$ sudo mv phpmyadmin example
変更後の名前を確認します。
$ ls -l
次にBasic認証を追加します。
下記コマンド入力後にパスフレーズを聞かれるので新しく設定します。
そしてそのパスフレーズが暗号出力されます。
『暗号化前』と『暗号化後』は両方必要になりますのでメモしておきます。
$ openssl passwd
Basic認証に使用するワードを設定します。
$ sudo vim /etc/nginx/pma_pass
pma_pass
Basic認証に使うアカウント名(なんでも良い):暗号化後のパスフレーズ(アカウント名とパスフレーズの間に : が入っている事に注意)
Nginxのコンフィグファイルを編集し、Basic認証用の項目を追加します。
オプションでIPアドレスのallowとdeny allを加えると更にセキュリティが増します。
Basic認証はクッキーの都合上入れなくなるなど、ややこしくなる場合もあるので、使用したくない場合はIPのallowとdeny allを使用してもOKです。
$ sudo vim /etc/nginx/conf.d/example.com.conf
example.com.conf
# phpmyadmin
location ^~ /example {
# 許可したIPのみ入れるように
# allow ここに許可するIPアドレスを入れる;
# deny all; # allowされたIP以外全て拒否する
auth_basic "login";
auth_basic_user_file /etc/nginx/pma_pass;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_keep_conn on;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
}
Nginxを再起動します。
$ sudo service nginx restart
エラーが無ければ、次に『ドメイン名/phpmyadmin変更後の名前』でアクセスします。
するとBasic認証が機能し、アカウント名とパスワードの入力を求められます。
この時、『user』には『pma_passのアカウント名』、『password』には『pma_passのパスフレーズ(暗号化前)』を入力することでPHPMyAdminのページに移動することが出来ます。
『$cfg[‘TempDir’] (./tmp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。』というエラーが発生する場合はtmpディレクトリを作成し、アクセス出来るように所有権を変更します。
$ sudo mkdir /usr/share/phpmyadmin/tmp
$ sudo chmod 755 /usr/share/phpmyadmin/tmp
$ sudo chown -R nginx:dev /usr/share/phpmyadmin/tmp
FTPの導入
File Transfer Protocol(FTP)サーバを構築し、FTP通信出来るよう設定します。
更新確認後『vsftpd』をインストールします。
$ sudo apt-get update
$ sudo apt-get install -y vsftpd
『vsftpd.conf』を編集します。
$ sudo vim /etc/vsftpd.conf
vsftpd.conf
# 匿名アクセスを禁止
anonymous_enable=NO
# ファイルのパーミッションを002(664)に変更する
local_umask=002
# ポート20を使用不可
connect_from_port_20=NO
# アスキーモードを有効
ascii_upload_enable=YES
ascii_download_enable=YES
# シグニチャを隠蔽
ftpd_banner=Welcome to blah FTP service.
# ユーザのホームディレクトリより上位のディレクトリへの移動を不許可
chroot_local_user=YES
# ホームディレクトリ上層を参照できるユーザー設定
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
# サブフォルダを含む一括アップロード・ダウンロードを許可
ls_recurse_enable=YES
### 以下はファイルの最後に追加する ###
# /etc/vsftpd/user_listのユーザーだけをアクセス許可
userlist_deny=NO
# アクセス可能なユーザーを追加
userlist_file=/etc/vsftpd.user_list
# タイムスタンプ時間をローカル時間にする(環境により必要なし)
#use_localtime=YES
# PASVのポート範囲を限定(設定は例)。
listen_port=50000 #(ポートは自由。他と被らないようにする)
pasv_enable=YES
pasv_min_port=50010
pasv_max_port=50030
pasv_address=VPSから提供されたサーバのIPをここに入れる
# FTP接続時の初期アクセスディレクトリ(例1:.ssh 例2:/var/www/ 例3:記入なし)
local_root=
# FTP経由でファイルをアップ可能にする
force_dot_files=YES
# seccomp filter をオフにする
seccomp_sandbox=NO
# chrootユーザーの書き込み制限
allow_writeable_chroot=YES
FTPの接続に使用するアカウント名のリストを新規作成します。
$ sudo vim /etc/vsftpd.user_list
vsftpd.user_list
example
ホームディレクトリより上位にアクセス出来るアカウントを指定します。
$ sudo vim /etc/vsftpd.chroot_list
vsftpd.chroot_list
example
UFWを用いてポートを開放します。
$ sudo ufw allow 50000/tcp
$ sudo ufw allow 50010:50030/tcp
UFWを再読み込みします。
$ sudo ufw reload
vsftpを再起動します。
$ sudo service vsftpd restart
ここまでにエラーが無ければFTPでアクセス出来るようになっています。
FTPへのログインは先程設定したアカウント、そしてパスワードはubuntuのログインパスワードを使用します。
なお、使用におすすめのFTPソフトはFilezillaです。
サンプルではこのFilezillaを使っていきます。
使用方法は割愛します。
SFTPの導入
FTPではファイルの通信時に暗号化が施されていないため、セキュリティ面で不安があります。
その際にSSH File Transfer Protocol(SFTP)を使用することで通信の暗号化を行い、セキュリティの強化を図ります。
rd_rsaのダウンロード
まずFTPにログインし『/home/アカウント名/.ssh』にある『rd_rsa』をダウンロードします。
rd_rsaの追加
次にFilezillaのメニューバーから『編集』→『設定』→『SFTP』と移動し、『Add key file…』で先ほどダウンロードした鍵ファイル(rd_rsa)を追加します。
SFTPへ切り替え
そして『ファイル』→『サイトマネージャ』でエントリ一覧に移動し、『プロトコル』を『SFTP』に切り替えます。
ポート番号の変更
最後にそのエントリのポート欄を『SSHで使用しているポート番号(例では12345)』に切り替えます。
設定完了
設定を保存後、もう一度接続するとSFTPでログイン出来るようになっています。
最初に設定したポート(50000および50010 50030)は削除かdenyにしておきましょう。
次回はNginxとMariaDBのチューニング
今回は非常に長い内容となので、全て読むには疲れてしまうかもしれません。
ただ、多くの人に理解してもらえるよう、記述内容はある程度分かりやすくしているため、少しかじったことのある方でも導入しやすいかと思われます。
次回の記事は『NginxとMariaDBのチューニング』そしてキャッシュアプリケーションの『OPcache』と『APCu』の導入を予定しています。
シリーズ目次
記事内でのサンプルは『さくらVPS4G・Ubuntu14.04・Nginx・PHP7・MariaDB・Wordpress・+α』となっています。
- 【はじめに】高速で強力なWordPressサイトを構築する1
簡単な説明のみ。次回から設定方法。
- 【インストール】高速で強力なWordPressサイトを構築する2
今回の記事。『OS』『WEB』『DB』『WordPress』のインストール、『PHPMyAdmin』『FTP(SFTP)』の導入まで。
- 【サーバ高速化】高速で強力なWordPressサイトを構築する3
『NginxとMariaDBのチューニング』『OPcache』『APCu』の導入。
- 【WP設定】高速で強力なWordPressサイトを構築する4
導入推奨の『プラグイン』、『functions.php』などの設定。
- 【画像圧縮】高速で強力なWordPressサイトを構築する5
『ImageMagick(Imagick)』『mozjpeg』『OptiPNG』『pngquant』の導入。
- 【SSL導入】高速で強力なWordPressサイトを構築する6
『SSL(HTTPS・TLS)』の導入。サンプルは『LetsEncrypt』
- 【更に高速化】高速で強力なWordPressサイトを構築する7
『WEBとDBの分離』『静的プロキシキャッシュサーバ』の構築。
- 【AMP導入】高速で強力なWordPressサイトを構築する8
『Accelerated Mobile Pages(AMP)』の導入。
記事の執筆時、参考となった情報はここのtxtで公開しています。