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

web

ConohaのVPSにWordPressをインストールした際の備忘録です。 設定しながら何をやったか書いた覚書なので、検証(この備忘録を見ながらの設定)はしておりません。 間違いがあったら申し訳ないです。

事前準備

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

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

Teraterm

ルートでログイン

Teratermでサーバ契約したIPにユーザ:root/パスワード:登録したPassで接続します。 無事ログインできればOKです。

一般ユーザ作成

ユーザ登録

# adduser username
# passwd password
Changing 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 echo "aaa"
[sudo] password for username: 
aaa

一旦切断する

# exit

再確認

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

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

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

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

viエディタでsshd_configを開く

$ su -
# vi /etc/ssh/sshd_config 

sshd_configを下記の通り編集

RSAAuthentication 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
PermitRootLogin no
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
Port *****
#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/hogehoge
# chmod -R 775 /var/www/html/hogehoge/wp-content

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

# usermod -G apache hogehoge

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

変更前

post_max_size = 8M
・・・
upload_max_filesize = 2M

変更後

post_max_size = 128M
・・・
upload_max_filesize = 128M

リスタート

# service httpd restart

MariaDBインストール

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

インストール

# yum -y install mariadb-server

起動

# systemctl start mariadb

初期設定

# mysql_secure_installation

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

rootパスワード:※そのままエンター打つ
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;

自動起動設定

systemctl 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行目付近のみ、似た箇所が他にもあるので注意

修正前

Require ip 127.0.0.1
Require ip ::1

修正後

#Require ip 127.0.0.1
#Require ip ::1
Require all granted

修正前

Allow from 127.0.0.1
Allow from ::1

修正後

#Allow from 127.0.0.1
#Allow from ::1
Allow from All

再起動

# service httpd restart

確認

http://xxx.xxx.xxx.xxx/phpmyadmin

URL変更

# cd /etc/httpd/conf.d
# vim phpMyAdmin.conf
#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
#Alias /phpmyadminf3unifpok49cmn /usr/share/phpMyAdmin

再起動

# service httpd restart

phpMyAdminのSSL設定

# yum install mod_ssl
# service httpd restart

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

https://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の設定
<VirtualHost *:80>
DocumentRoot /var/www/html/<ディレクトリ名>
ServerName <ドメイン名>
CustomLog logs/<ディレクトリ名>-access.log common
ErrorLog  logs/<ディレクトリ名>-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/<ディレクトリ名>/">
    AllowOverride All
</Directory>
</VirtualHost>

複数のドメインを設定する場合は同様の記述を追記します。 同サーバに複数のサイトを格納したい場合は随時追記しましょう。

再起動

# service httpd restart

WordPressのインストール

DB作成

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

本体アップロード

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

インストール

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

所有者変更

# chown -R apache:apache /var/www/html/hogehoge

マルチサイト化

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

# chown -R hogehoge:hogehoge /var/www/html/hogehoge2/wp-content/themes/wordpresstheme
vi /var/www/html/hogehoge/wp-config.php

記述追加

define('WP_ALLOW_MULTISITE', true);

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

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

vi /var/www/html/hogehoge/wp-config.php
vi /var/www/html/hogehoge/.htaccess

frontサイトの/blog/を消す

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

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

# vi /etc/httpd/conf/httpd.conf

修正前

AllowOverride None
※似たディレクトリあるから注意、var/wwwの記述を修正する

修正後

AllowOverride All

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

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

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

DNSレコード2つ追加

A mail 3600 IPアドレス
・Mx @ 3600 mail.hogehoge.me
# vi /etc/postfix/main.cf
myhostname = serv.hogehoge.me #ホスト名
mydomain = hogehoge.meドメイン名
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ポートが開いていないなら開けましょう。

サービス起動

service postfix start

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

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

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

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

# yum check-update

アップデート

# yum update

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

自動アップデート手順

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

yum-cronインストール

# yum install yum-cron.noarch

コンフィグ修正

# vi /etc/yum/yum-cron.conf

修正前

apply_updates = no

修正後

apply_updates = yes

設定反映

systemctl start yum-cron
systemctl enable yum-cron

\share/

よく読まれている記事