ワードプレス、最速でVPSにインストール 2019/11/07更新

VPSで最低限行う事を整理しました。
さくらのVPSで行っています。

さくらのVPSでは、バージョンアップを行うようで
・HDDプランの廃止
・SDDの容量を倍増レベルに
・既存のV4の方も恩恵を受けられる
・初期費用なしに
という事が発表されています。
楽しみなバージョンアップですーー

さくらインターネット、「さくらのVPS」「さくらのVPS for Windows Server」のリニューアルを実施

CentOS8版は、WordPress最速インストール CentOS 8へ(2020/05/06)

さくらVPS、サーバの起動

サーバの申し込みをすると案内が来て、コントロールパネルからアクセスができます。

↑「名称未設定」というサーバー名が登録されます。

↑「名称未設定」をクリックして、左上の「起動」ボタンを押します。

↑起動されました

さくらVPS、パケットフィルタ

↑画面上の「パケットフィルタ」の設定を行います。

↑上記のチェックボックスをクリックします。

↑設定を行います。

CentOSのバージョン

# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)

↑現状、デフォルトで、インストールされている、CentOSのバージョンです。
7.7です。
CentOS8もインストールできるようです・・・

firewallを起動

systemctl status firewalld.service
systemctl start firewalld.service
systemctl enable firewalld.service

↑デフォルトでは、firewallが起動されていないです。
さくらVPSでは、「パケットフィルタ」がデフォルトで「ON」になっています。
パケットフィルタのほうも留意します。

sshポート変更(任意)

sshの22番ポートは、よく知られたポートで、SSHを突破できないかと、常時アタックされています。
22番ポートを違うポートに変更すると、さくらVPSのパケットフィルタは適用できなくなりますので、留意が必要です。

# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-xxxxx.xml
# vi /etc/firewalld/services/ssh-xxxxx.xml

port="22"
↓
port="xxxxx"

↑「xxxxx」は、任意の数字(ポート)です。
# firewall-cmd --permanent --add-service=ssh-xxxxx
# firewall-cmd --reload

↑「xxxxx」は、数字です。firewallで、解放するように、設定をします。
# vi /etc/ssh/sshd_config

#Port 22
↓
Port xxxxx

↑sshサービスのポートも変更をします。「xxxxx」は、数字です。
# systemctl restart sshd
# firewall-cmd --permanent --remove-service=ssh
# firewall-cmd --reload

↑sshサービスを再起動して、firewallの22番を削除します。

MySQLインストール (2019/11/07更新)

# yum update
# yum groupinstall "Development Tools"
# yum install openssl-devel

↑ツール類を入れます。「Developmet Tools」は、既に入っているので、何もインストールされないと思います。

# yum remove mariadb-libs

↑デフォルトで入っている、mariaDBを、アンインストールします。
↑修正。削除不要。mysqlインストール時に削除されます(2020/1/11)
# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# yum install mysql-community-server
# mysqld --version
mysqld  Ver 5.7.27 for Linux on x86_64 (MySQL Community Server (GPL))

↑MySQL5.7を入れます。
# vi /etc/my.cnf

character-set-server=utf8

<span class="strike">[client]
default-character-set=utf8</span>

↑設定ファイル、utf8を基本とします。3行を書き加えます。(2019/11/07 更新)

↑[client]のところは不要でした。(2020/05/17)

character-set-server=utf8
は、[mysqld]セクションのところに書きます。最後に書き加えて大丈夫でしょう。
(このバージョンでは)

# systemctl start mysqld.service
# systemctl enable mysqld.service

↑MySQL5.7の起動と、自動起動を設定します。

↓MySQLを設定します。

# cat /var/log/mysqld.log | grep password
2019-XX-XXT12:27:39.212225Z 1 [Note] A temporary password is generated for root@localhost: (デフォルトパスワード)

# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 
(↑(デフォルトパスワード)を入れます)

The existing password for the user account root has expired. Please set a new password.

New password: (新しいパスワード)

Re-enter new password:  (新しいパスワード)
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
(↑パスワードの複雑さが既定に達しているというメッセージ。「n」を入力します)

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
(↑匿名で入れるユーザを消すかという確認。「y」を入れます。)

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

(↑「root」ユーザを遠隔から入ることを禁止するか。という問い。「y」を入れます。)

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

(↑「test」というテスト用のDBを消すか。という問い。「y」を入れます。)

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

(↑最終的にOKか?という問い。「y」を入れます。)

All done!

↑設定が完了

ワードプレス用DB設定

# mysql -u root -p
(パスワードを入れます)

> use mysql

> insert into user (host,User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values ('localhost','wp_user1',password('パスワード'),'','','');

> insert into db (host,db,user) values ('localhost','wp_db','wp_user1');
Query OK, 1 row affected (0.00 sec)

> update db set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Execute_priv='Y',Event_priv='Y',Trigger_priv='Y' where db='wp_db';

> create database wp_db;

> flush privileges;

httpd インストール、設定

# yum install httpd
# httpd -version
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug  8 2019 11:41:18

↑httpdがインストールされました。
vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
のセクション

↑ワードプレスのコンテンツを、「/var/www/html」におきますので・・・
Options Indexes FollowSymLinks
 ↓
Options All -Indexes +SymLinksIfOwnerMatch -FollowSymLinks

AllowOverride None
 ↓
AllowOverride AuthConfig FileInfo Indexes Limit Options=MultiViews,Indexes

↑上記の「<Directory “/var/www/html”>」のセクションの「Options」と「AllowOverride」のところを、上記のように変更します。(2019/10/24追記)
# systemctl start httpd.service
# systemctl enable httpd.service

↑httpdの起動と自動起動を行います。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

↑80ポートとSSLのポートを空けます。

php インストール、設定

# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum-config-manager --enable remi-php73

# yum-config-manager --enable remi-php73
-bash: yum-config-manager: command not found

↑と、出てしまったら、
# yum install yum-utils

↑と、yum-utilsをインストールします。
# yum install php73 php73-php httpd mod_ssl
# yum install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd php-pecl-mysql php-pecl-zip php-pecl-apc
( # yum install --enablerepo=remi,remi-php73 php73-php-mysqlnd php73-php-mbstring から変更。2019/10/24 追記)

↑ PHP 7.3を入れます。
# ln -s /usr/bin/php73 /usr/bin/php
# php -v
PHP 7.3.10 (cli) (built: Sep 24 2019 09:20:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.10, Copyright (c) 1998-2018 Zend Technologies

php 7.3.10が入りました。

php と httpd の連携

# vi /etc/httpd/conf/httpd.conf 
AddType application/x-httpd-php .php

↑.phpの拡張子の設定をします。1行を加えます。
# systemctl stop httpd.service
# systemctl start httpd.service

vsftpd (2019/10/22 修正)

FTPサーバーである、vsftpを入れます。
proftpは、「Proftpd for SSL/TSL ,CentOS7」

# yum install vsftpd

# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
↓
anonymous_enable=NO

listen=NO
↓
listen=YES

listen_ipv6=YES
↓
listen_ipv6=NO

#ascii_upload_enable=YES
#ascii_download_enable=YES
↓
ascii_upload_enable=YES
ascii_download_enable=YES

#chroot_local_user=YES
↓
chroot_local_user=NO

#chroot_list_enable=YES
↓
chroot_list_enable=YES


#chroot_list_file=/etc/vsftpd/chroot_list
↓
chroot_list_file=/etc/vsftpd/chroot_list

# 上記ファイルに、FTPのユーザ名を書く。(「他のユーザ名を知られたくない」ユーザを書く)

#ls_recurse_enable=YES
↓
ls_recurse_enable=YES

 (以下は、追加)
pam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=YES
use_localtime=YES
userlist_deny=NO


# systemctl start vsftpd
# systemctl enable vsftpd

# firewall-cmd --add-service=ftp --permanent
# firewall-cmd --reload

# cd ~(FTPユーザ名)
# chmod a-w ./.

↑FTPユーザの書き込み権限をなくします。
FTPユーザのホームディレクトリが、「書き込み権限」があると
500 OOPS: vsftpd: refusing to run with writable root inside chroot()

というエラーになります。

wordpress インストール、設定

# cd /var/www/
# wget https://ja.wordpress.org/latest-ja.tar.gz
# tar xzvf latest-ja.tar.gz 
# mv html/ html.back
# mv wordpress/ html
# chown -R ftpuser.100 html

↑ワードプレスの最新版をダウンロード、「/var/www/html」に設定します。
# cd html
# cp -a wp-config-sample.php wp-config.php
# vi wp-config.php
  
define('DB_NAME', 'database_name_here');
define('DB_USER', 'username_here');
define('DB_PASSWORD', 'password_here');

↑上記をMySQLにて設定した、ユーザ名、パスワード、DB名を設定します。
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');

上記を
Salt
で表示されたものに入れ替えます。

httpd、サーバー設定

vi /etc/httpd/conf.d/virtual.conf

<VirtualHost XXX.XXX.XXX.XXX:80>
ServerName (ドメイン名、FQDN)
DocumentRoot /var/www/html

</VirtualHost>

↑「XXX.XXX.XXX.XXX」は、さくらVPSから割り当てられた、グローバルIPアドレス。
「ドメイン名」も設定します。
# systemctl stop httpd.service
# systemctl start httpd.service

↑httpdを再起動します。

↑ http://FQDN/にアクセスします。
ワードプレスの初期画面が表示されます。
ワードプレス用ログインIDとパスワードを設定します。

↑設定が完了しました。

Let’s Encrypt (SSL)

# yum install certbot
# wget https://dl.eff.org/certbot-auto
# chmod 755 certbot-auto

#./certbot-auto certonly --non-interactive --agree-tos --webroot -w /var/www/html -d (FQDN) --email (メールアドレス)

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/(FQDN)/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/(FQDN)/privkey.pem
   Your cert will expire on 2020-xx-xx. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"

↑証明書が発行されました。

SSLのhttpd設定

vi /etc/httpd/conf.d/ssl.conf


<VirtualHost _default_:443>

---
</VirtualHost>

↑上記のVirtualHost部分を削除
<VirtualHost XXX.XXX.XXX.XXX:443>
ServerName (FQDN)
DocumentRoot /var/www/html

SSLProtocol all -SSLv2 -SSLv3

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/(FQDN)/fullchain.pem
SSLCertificateChainFile /etc/letsencrypt/live/(FQDN)/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/(FQDN)/privkey.pem
</VirtualHost>

↑代わりに、上記のVirtualHostを追加
# systemctl stop httpd.service
# systemctl start httpd.service

↑httpdのサービスを再起動します。

https://(FQDN)/
と、「https」でアクセスをして、接続されることを確認します。

ワードプレスにログインして、プラグイン
「Really Simple SSL」を入れます。


https://ja.wordpress.org/plugins/really-simple-ssl/

↑SSL、設定完了しました。

.htaccess調整

# vi /var/www/html/.htaccess

# vi .htaccess 
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

↑80番ポート(非SSLポート)に来たら、443ポート(SSLポート)に自動的にリダイレクトする設定と、ワードプレスの設定です。
#chown ftpuser.100 /var/www/html/.htaccess

メールの設定(2019/10/24 追記)

# yum install sendmail sendmail-cf
# systemctl start sendmail
# systemctl enable sendmail

↑メールの設定。これで、メールが届くようになるでしょう



タイトルとURLをコピーしました