ConohaのVPSにWordPressをインストールするまでの備忘録

web

本稿はレンタルサーバーサービス「ConohaのVPS」にWordPressをインストールした際の備忘録です。

事前準備

ソフトの用意

ターミナルエミュレータとFTPクライアントをインストールしておきましょう。 最低限の機能がサポートされていれば何でも良いです。

私はTeratermとWinScpをインストールしており、以下の手順の操作もそれに準じます。 代表的なソフトなので、特にこだわりがないならこれでいいんじゃないでしょうか。

情報の用意

サーバの設定に際して以下の情報が必要になります。 どこかに書き出しておきましょう。

Teraterm

ルートでログイン

Teratermでサーバ契約したIPにrootで接続します。パスワードは登録時に設定したものです。

無事ログインできればOKです。

一般ユーザー作成

一般ユーザを作成します。 usernameとpasswordは任意のものに置き換えてください。

 adduser username 
 passwd password
hanging password for user vpsuser.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

wheelグループに追加

 gpasswd -a username wheel

作成したusernameでログインできるか確認

 su username

wheel特権が付いたか確認

sudoコマンドを発行し、コンソールに表示されるかでwhell特権が付いたかを確認します。

 sudo echo "aaa"
assword for username: 
aaa

一旦切断する

 exit

再確認

teratermを起動して新しく登録したユーザーで接続できるかの確認をしておきましょう。

アクセス権とアクセス方法の設定

sshサーバー設定を変更して、rootで直接アクセス出来ないようにする

ハッキングされてrootで直接アクセスされると被害が洒落にならないので、rootでは直接アクセスできないようにします。

viエディタでsshd_configを開く

 su -
# vi /etc/ssh/sshd_config

sshd_configを下記の通り編集

SAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

sshdを再起動

 service sshd restart

SSHを鍵認証に変える

まず公開鍵を作成します。私はTeratermの機能で作成しました。

公開鍵をフォルダへ格納

 su username
$ cd ~/
$ mkdir .ssh
$ chmod 700 .ssh
$ cd ~/.ssh

公開鍵の名前をauthorized_keysにしてドラッグ&ドロップ
※pwdで現在ディレクトリを確認、ドラッグ&ドロップしてそのフォルダにSCP転送

公開鍵のアクセス権限変更

 chmod 600 authorized_keys

ここまでの手順が終わったら鍵接続できるか確認してください。 問題ないようなら通常のログインを禁止して鍵認証でのみログイン可能にします。

鍵認証のみでログインを許可

 su
# vi /etc/ssh/sshd_config
lt;del>PermitRootLogin yes
PermitRootLogin no
PasswordAuthentication yes
PasswordAuthentication no
 service sshd restart

TCPポート変更

デフォルトで設定されているTCPポート番号22は攻撃に晒される場合が多いです。 なのでTCPポートを変更しておきます。

yum install iptables-services
vi /etc/sysconfig/iptables

ポート番号を任意の数値に変更(※*****は適当に置き換えてください)

A INPUT -m state --state NEW -m tcp -p tcp --dport ***** -j ACCEPT
service iptables restart
vi /etc/ssh/sshd_config
ort *****
service sshd restart
systemctl stop firewalld.service
#systemctl mask firewalld.service
#systemctl enable iptables.service

Apacheインストール

サーバソフトをインストールします。 ここではアパッチをインストールしていますが、最近はNginxなども人気ですね。 好きなソフトを入れましょう。

アパッチのインストール

 yum install httpd
Total download size: 915 k
Installed size: 3.1 M
Is this ok [y/N]: y

httpdを起動

 service httpd start

「http://サーバのIPアドレス」に接続してApacheが表示されるか確認しましょう。

サーバー起動時に、httpdもあわせて起動するよう設定

 systemctl enable httpd.service

設定の確認

 systemctl is-enabled httpd

enableならOK

SFTP設定

apacheのSFTP権限を色々弄ります。

ドキュメントルートの権限変更(****は任意の内容)

 cd /var/www
# ls -l
# chown apache:apache html
# chmod 775 /var/www/html/****
# chmod -R 775 /var/www/html/****/wp-content

apacheグループの所有物を編集するため、ユーザーをapacheグループに追加

 usermod -G apache ****

PHPインストール

PHPがないとWordPressが動かないのでインストールします。

インストール

 yum install PHP php-devel php-mbstring php-mysql php-gd
Total download size: 1.6 M
Installed size: 6.6 M
Is this ok [y/N]: y

再起動

 service httpd restart

アップロード上限の変更

 cd /etc
# vim php.ini

php.iniの修正前後

lt;del>post_max_size = 8M
post_max_size = 128Mupload_max_filesize = 2M
upload_max_filesize = 128M

リスタート

 service httpd restart

MariaDBインストール

centOSでのDBソフトはMariaDBになります。mySQLではないんですね。 まあ選択肢があってもこっちの方が良いでしょう。

インストール

 yum -y install mariadb-server

起動

 systemctl start mariadb

初期設定

 mysql_secure_installation

インストール時に以下の内容を聞かれる。とりあえず全部Y

ootパスワード:※そのままエンター打つ
rootパスワードの設定
匿名ユーザー削除
rootのリモートログインブロック
テストDB削除

外部接続を有効にする

firewalldにMariaDBのサービスを追加する

 firewall-cmd --permanent --add-service=mysql
# systemctl reload firewalld.service

rootの外部アクセスをすべてのホスト(%)で許可し、GRANTオプションも付ける

mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
...
MariaDB> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB> FLUSH PRIVILEGES;

自動起動設定

ystemctl enable mariadb

phpMyAdminインストール

 yum install phpmyadmin
・・・
Total download size: 9.8 M
Installed size: 39 M
Is this ok [y/N]: y

phpMyAdmin.confの修正

 cd /etc/httpd/conf.d
# vim phpMyAdmin.conf

※上側は25行目付近のみ。似た箇所が他にもあるので注意

equire ip 127.0.0.1
Require ip ::1
Require all granted //追加行
…
#Allow from 127.0.0.1
#Allow from ::1
Allow from All //追加行

再起動

 service httpd restart

確認

ttp://xxx.xxx.xxx.xxx/phpmyadmin

URL変更

 cd /etc/httpd/conf.d
# vim phpMyAdmin.conf

URLがphpmyadminのままだと不正アクセスによる攻撃のリスクがあるので、適当な文字列を追加してURLを分かりにくくします。

lt;del>Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /phpmyadmin任意の文字列 /usr/share/phpMyAdmin

再起動

 service httpd restart

phpMyAdminのSSL設定

 yum install mod_ssl
# service httpd restart

確認(アクセス時にはこちらへ)

ttps://xxx.xxx.xxx.xxx/phpmyadmin任意の文字列

iptablesでファイアウォールの設定をする

データを持たないパケットの接続を破棄する

 iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

SYNflood攻撃と思われる接続を破棄する

 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

ステルススキャンと思われる接続を破棄する

 iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

localhostからの通信とpingを許可に設定

 iptables -A INPUT -i lo -j ACCEPT 
# iptables -A INPUT -p icmp -j ACCEPT

サーバの利用用途に合わせて許可するポート番号を設定

 iptables -A INPUT -p tcp -m tcp --dport ** -j ACCEPT
HTTP:80
HTTP(SSL):443
SMTP:25
SMTP(SSL):465
POP3:110
POP3(SSL):995
IMAP:143
IMAP(SSL):993
SSH:22(※変更しているならその番号)

確立済みの通信を許可に設定

 iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

許可した通信以外のサーバに受信するパケットを拒否し、サーバから送信するパケットを許可に設定

 iptables -P INPUT DROP 
# iptables -P OUTPUT ACCEPT

セーブ

 service iptables save

内容の確認

 cat /etc/sysconfig/iptables
# iptables -nL

リスタート

 service iptables restart

ドメインの設定

ドメイン取得者のネームサーバを変える

Conohaのドメインリストにレコード追加

wwwあり

イプ:A
名称:www
TTL:3600
値:IPアドレス

wwwなし

イプ:A
名称:@
TTL:3600
値:IPアドレス

入力したらドメインをアドレスバーに入力して表示されるか確認しましょう。

設定ファイル作成(※新規作成)

 vim /etc/httpd/conf.d/vhost.conf
 ドメイン1の設定

DocumentRoot /var/www/HTML/<ディレクトリ名>
ServerName 
CustomLog logs/<ディレクトリ名>-access.log common
ErrorLog  logs/<ディレクトリ名>-error.log
AddDefaultCharset UTF-8

    AllowOverride All


同サーバに複数のサイトを格納したい場合は同様の記述を追記します。

再起動

 service httpd restart

WordPressのインストール

DB作成

phpMyAdminに入ってDB名入れて照合順序UTF-8_general_ciにして追加

本体アップロード

公式サイトから適当に落として適当にアップロードしましょう。

インストール

B名:DB名
ユーザー名:root
パスワード:rootのパス
データベースホスト名:localhost
接頭辞:任意の文字

所有者変更

 chown -R apache:apache /var/www/HTML/****

マルチサイト化

本サイトはマルチサイトなので設定を行いました。 マルチサイトを設定した名残であり備忘録にも記載していますが、シングルサイトを設定する場合は不要です。

 chown -R ****:**** /var/www/html/****2/wp-content/themes/wordpresstheme
i /var/www/html/****/wp-config.PHP

記述追加

efine('WP_ALLOW_MULTISITE', true);

ツール→ネットワーク設置

以下2ファイルを指示通りに修正

i /var/www/html/****/wp-config.PHP
vi /var/www/html/****/.htaccess

frontサイトの/blog/を消す

パーマリンクを一旦デフォルトに変更 サイトの設定タブから「Permalink Structure」を探して「/%postname%.HTML」を指定

htaccess設定を有効にするapacheの設定変更

 vi /etc/httpd/conf/httpd.conf

※var/wwwの記述を修正する。似たディレクトリがあるので注意

lt;del>AllowOverride None
AllowOverride All

変更したら再度ログインし直す

お問い合わせフォームのためのメール設定

※やる必要ないかもしれません。ConoHa VPS では postfix は既に設定済みのようで、サービスも起動していました。

DNSレコード2つ追加

 mail 3600 IPアドレス
・Mx @ 3600 mail.****.**
 vi /etc/postfix/main.cf
yhostname = serv.****.** #ホスト名
mydomain = ****.**ドメイン名
myorigin = $mydomain #コメント解除
inet_interfaces = #all書き換え
home_mailbox = Maildir/ #コメント解除
smtpd_banner = $myhostname ESMTP unknown #コメント解除、書き換え
mynetworks_style = host #コメント解除(SMTPDが信頼するネットワーク範囲)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

※以下は末尾に追加(先頭の空白の有無に注意!) SMTP-AUTHを使うための設定を追加※タブは消さない
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = 
	permit_mynetworks
	permit_sasl_authenticated
	reject_unauth_destination
mailbox_size_limit = 1073741824

変更後ファイアウォールのSMTPポートが開いていないなら開けましょう。

サービス起動

ervice postfix start

※送信先の設定次第では迷惑メールに分類されるので、見当たらない場合は迷惑メールフォルダも確認すること

ソフトのアップデートについて

ソフトウェアは随時アップデートされるので定期的に更新する必要があります。 随時アップデートを行いましょう。

アップデートが必要か確認

 yum check-update

アップデート

 yum update

※アップデートにより不具合が起きる可能性もあります。 定期的なバックアップは忘れずに!

自動アップデート手順

自分でやるのが面倒なら自動アップデートに任せます。

yum-cronインストール

 yum install yum-cron.noarch

コンフィグ修正

 vi /etc/yum/yum-cron.conf
lt;del>apply_updates = no
apply_updates = yes

設定反映

ystemctl start yum-cron
systemctl enable yum-cron
eyecatch

リダイレクト-URLを変更したらリダイレクトで転送しよう

eyecatch

サイトの常時SSL(https化)の作業手順および備忘録

ウェブサイトの記事

eyecatch

既存サービスと独自サイトのメリット・デメリット

eyecatch

httpとhttpsの違い

eyecatch

レスポンシブウェブデザインとは

eyecatch

インターネット入門‐そもそもインターネットって何?

eyecatch

CLSエラー(累積レイアウトシフトエラー)の調査・対応方法

eyecatch

長さ単位の基本

ウェブサイトの記事一覧HOME