ConohaのVPSにWordPressをインストールするまでの備忘録
本稿はレンタルサーバーサービス「ConohaのVPS」にWordPressをインストールした際の備忘録です。
事前準備
ソフトの用意
ターミナルエミュレータとFTPクライアントをインストールしておきましょう。 最低限の機能がサポートされていれば何でも良いです。
私はTeratermとWinScpをインストールしており、以下の手順の操作もそれに準じます。 代表的なソフトなので、特にこだわりがないならこれでいいんじゃないでしょうか。
情報の用意
サーバの設定に際して以下の情報が必要になります。 どこかに書き出しておきましょう。
- サーバのIP
- rootユーザー名とパスワード
- 一般ユーザー名とパスワード
- SSHキーとパスワード
- 使用するSSHポート番号
- DBソフトのrootユーザ名とパスワード
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 = 128M
…
upload_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