2023年版 ConohaのVPS構築をマスターする手順書[centOS8]

著者:
投稿日:
更新日:

長らくcentOS6でのサーバ構築を行いwebサービスを作ってきましたが、構築する度に様々なものをインストールする時にバージョンを上げてインストールしていました。


たまに構築するだけなら良いですが、そうでもないので重い腰を上げてcentOS6で培ってきたノウハウを一旦捨ててcentOS8で今まで構築してきたコマンドを時系列順に再勉強していきたいと思います。


目次
  1. CentOS 6~CentOS 8の違い
  2. CentOS 8とCentOS Stream 9の違い
    1. リリースモデル
    2. 更新の頻度
    3. 寿命 (Life Cycle)
    4. コミュニティの役割
    5. パフォーマンスと安定性
    6. サポート
  3. 便利なコマンド集
  4. 必要なパッケージインストール
  5. パケットフィルタリングの設定をする
  6. DNS設定
  7. FTPサーバ構築
    1. FTP用のユーザー作成
  8. webサーバ構築
    1. Apacheインストール
    2. Apacheの設定
  9. Mysqlのインストール
    1. Mysqlのパスワード設定
  10. MariaDBのインストール
    1. MariaDBのパスワード設定
    2. sql-modeの設定
  11. PHPインストール
    1. php.iniの設定
  12. phpMyAdminインストール
  13. cron
  14. Squid構築方法(後ほど)
  15. 参考にした記事
  16. まとめ

CentOS 6~CentOS 8の違い

まずはCentOS6から8に移行する為には違いを知っておかなくてはいけませんので詳細を貼っておきます。

CentOS 6 とCentOS 7の主な違い

serviceコマンドがsystemctlコマンドへ移行

nmcliコマンドの追加

firewalldコマンドの追加

デフォルトのDBがMySQLからMariaDBに変更

ファイルシステムがext4からxfsに変更


CentOS 7 とCentOS 8の主な違い

yumコマンドがdnfコマンドへ移行

iptablesコマンドがnftablesコマンドへ移行

NTPコマンドがchronyコマンドへ移行

TLS 1.1以下はサポート対象外

デフォルトのPythonのバージョンがPython 3.6になる

デフォルトのPHPのバージョンがPHP 7.2になる

暗号化ボリュームのデフォルト形式がLUKSからLUKS2に変更

大きな違いとしては

  • serviceコマンドがsystemctlコマンドへ移行
  • yumコマンドがdnfコマンドへ移行
  • iptablesコマンドがnftablesコマンドへ移行

ここら辺が影響でかいっすね。個人的には iptablesコマンドがnftablesコマンドへ移行 が特に影響デカかったなと思ってまして、nftablesの勉強が大変でした。

CentOS 8とCentOS Stream 9の違い

月日が流れ「CentOS Stream 9」なるものが登場致しました。

そこで「CentOS 8か」から 「CentOS Stream 9」の違いまとめました。


CentOS 8とCentOS Stream 9の間にはいくつかの主要な違いがあります。以下にそれらの違いをリスト化しますが、このリストは、両者の主な違いに焦点を当てたもので、全ての違いを網羅しているわけではありません。

リリースモデル

CentOS 8: CentOS 8はRHEL 8のアップストリームであり、Red Hat Enterprise Linux (RHEL) 8のバイナリ互換バージョンとしてリリースされました。

CentOS Stream 9: CentOS StreamはRHELの"ミッドストリーム"と位置づけられ、RHELの次のマイナーバージョンがリリースされる前に変更が取り込まれる流れを持ちます。このため、CentOS Stream 9はRHEL 9の直前の状態を反映しています。

更新の頻度

CentOS 8: 安定したリリースモデルで、主にバグ修正やセキュリティアップデートが行われる。

CentOS Stream 9: 継続的なアップデートが行われるため、新しい機能や変更が頻繁に取り込まれる可能性があります。

寿命 (Life Cycle)

CentOS 8: 当初は10年のサポートが予定されていましたが、CentOSの方針変更により、2021年の終わりに終了しました。

CentOS Stream 9: RHELの次のマイナーリリースまでの期間中に継続的なアップデートが提供されます。

コミュニティの役割

CentOS 8: 主にRHELのバイナリ互換としての役割が強調されていました。

CentOS Stream 9: コミュニティとRed Hatの間でのコラボレーションがより強化され、新しい技術や機能の提案・テストが積極的に行われるようになりました。

パフォーマンスと安定性

CentOS 8: RHELの安定版に基づいているため、一般的に高い安定性と予測可能性を持っています。

CentOS Stream 9: 継続的な変更が加えられるため、最新の技術を追求する一方で、予測しにくい場面もあるかもしれません。

サポート

CentOS 8: 公式のサポートは提供されていませんが、コミュニティによるサポートやフォーラムでのヘルプがありました。

CentOS Stream 9: Red HatはCentOS Streamに関するフィードバックやバグレポートを積極的に受け入れていますが、商用のサポートはRHELが対象です。


なんとなーく、理解できましたね。リリースが細かくされて最新の最新版という感じでしょうか

v1.0

v2.0

だったのが

v1.0

v1.1

v1.2

v2.0

と刻んで公開しているみたいです。

便利なコマンド集

// シャットダウンして再起動
shutdown -r now

必要なパッケージインストール

必須ではないですが、便利なコマンドを使用する為にもパッケージをインストールしましょう。

// クリーンオール
dnf clean all
// キャッシュ削除
rm -r /var/cache/dnf
// アップデート
dnf upgrade
// dnf アップデート
dnf update

// スタンダードパッケージインストール
dnf install @Standard

// Development Toolsパッケージインストール
dnf install "@Development Tools"

// mkpasswd使えるようにインストール
dnf install expect

パケットフィルタリングの設定をする

一番の変更点であるパケットフィルタリングです。個人的にかなり時間がかかりました。。firewalldにしようかなと思いましたが公式で使われているnftablesでのやり方を勉強いたしました。

// nftablesインストール
dnf install nftables
// 起動
systemctl start nftables
// 初期読み込みファイル
vi /etc/sysconfig/nftables.conf

一番下に
include "/etc/nftables/nftables.conf"
追記
// 新規ファイル
vi /etc/nftables/nftables.conf
// 最小構成全コピペ
# /etc/nftables/nftables.conf

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;

                # accept any localhost traffic
                iif lo accept

                # accept traffic originated from us
                ct state established,related accept

                # activate the following line to accept common local services
                tcp dport { 20, 21, 22, 25, 53, 80, 123, 443, 587, 990, 3306, 8080, 50021-50040, 60000-60030 } ct state new accept

                udp dport { 53 } ct state new accept


                # ↑の行のコメントアウトを外して、開放したいtcpポートを列挙

                # accept neighbour discovery otherwise IPv6 connectivity breaks.
                ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit,  nd-router-advert, nd-neighbor-advert } accept

                # count and drop any other traffic
                counter drop
        }
}
// 自動起動設定
systemctl enable nftables

// リスタート
systemctl restart nftables

// ステータス
systemctl status nftables

// ストップ
systemctl stop nftables

DNS設定

後ほど

FTPサーバ構築

FTPとして使うというよりもテキストエディタで利用できるようにFTPサーバーもインストールしています。

// ftpインストール
dnf install vsftpd
// 編集
vi /etc/vsftpd/vsftpd.conf

vsFTPdの設定
 
まず、初期状態では匿名による接続を許可していますので、これを許可しないようにしましょう。
anonymous_enable=YES
↓
anonymous_enable=NO
変更。
 
 
アスキーモードでのアップロードを許可
アスキーモードでのダウンロードを許可
この設定をしとかないとFTPソフトで同期などの機能が全く使えなくなります。
#ascii_upload_enable=YES
#ascii_download_enable=YES
↓
ascii_upload_enable=YES
ascii_download_enable=YES 
 
そして、データのやりとりで使用するPASVモードで使用するポートの範囲を指定します。
pasv_min_port=60000
pasv_max_port=60030
の2行をさらに追加。

次にrootでもログインできるように設定をしていきましょう。

// 両方とも
vi /etc/vsftpd/user_list
vi /etc/vsftpd/ftpusers
root
↓
# root
// 自動起動設定
systemctl enable vsftpd
// スタート
systemctl start vsftpd
// リスタート
systemctl restart vsftpd
// ステータス確認
systemctl status vsftpd

FTP用のユーザー作成

ここではrootではなく他のアカウントでもFTPを使用できる設定を行なっていきます。rootだけなら飛ばして大丈夫です。

// ユーザー作成
useradd [ユーザーの名前]

// パスワード設定
passwd [ユーザーの名前]
// 32文字のパスワード生成
mkpasswd -l 32 -d 9 -C 5 -s 0 -2
or
mkpasswd -l 32 -d 9 -C 5 -s 2 -2
// sudo編集
visudo

root    ALL=(ALL)       ALL
がある下に
[ユーザーの名前]        ALL=(ALL)       ALL
1行追加して保存
すぐそのままで動きます

webサーバ構築

この章ではサイトを公開するために必要なApacheを構築する説明をしていきます。

Apacheインストール

俗にいうApacheをインストールします。

dnf install httpd

Apacheの設定

インストールしましたら早速confをいじりましょう。

vi /etc/httpd/conf/httpd.conf
ServerAdmin
  サーバー管理者のメールアドレスを記載します。
 
ServerName
  DNSで設定したサーバー名とポート番号を記載します。
  (例)ServerName programmerbox.com:80
 
DocumentRoot
  ウェブコンテンツを保存する場所を記載します。
  バーチャルホストを使わない方もいるかもしれませんので、デフォルトのポイントとしてちゃんと記述しておきます。
 
<Directory "/var/www/html">
  ここはDocumentRootと同じディレクトリパスに変更。
 
<Directory "/var/www/html">のパスを直したら、その中にある
AllowOverride None を
↓
AllowOverride All に変更しましょう。これで.htaccessが有効になります。

設定が終わりましたら、自動起動onとhttpdをスタートしましょう。

// 自動起動設定
systemctl enable httpd
// スタート
systemctl start httpd
// リスタート
systemctl restart httpd
// ステータス
systemctl status httpd

Mysqlのインストール

基本的なsqlであるMysqlをインストールしていきましょう。

dnf install mysql-server
// 自動起動設定
systemctl enable mysqld
// スタート
systemctl start mysqld
// リスタート
systemctl restart mysqld
// ステータス
systemctl status mysqld

Mysqlのパスワード設定

// 1.rootで入る
mysql -uroot

// 2.パスワードを設定するクエリを投げる
SET PASSWORD = "パスワード文字列"

// 3.mysqlをログアウトする
exit
// 設定したパワスードでログイン
mysql -uroot -pパスワード文字列

ログインが確認できたら
// ログアウト
exit

MariaDBのインストール

ここではMariaDBのインストール説明を致します。

// インストール
dnf install mariadb mariadb-devel mariadb-server
// 自動起動設定
systemctl enable mariadb
// スタート
systemctl start mariadb
// リスタート
systemctl restart mariadb
// ステータス
systemctl status mariadb

MariaDBのパスワード設定

// 1.rootで入る
mysql -uroot

// 2.パスワードを設定するクエリを投げる
SET PASSWORD = "パスワード文字列"

// 3.mysqlをログアウトする
exit
// 設定したパワスードでログイン
mysql -uroot -pパスワード文字列

ログインが確認できたら
// ログアウト
exit

sql-modeの設定

vi /etc/my.cnf

sql-mode=の記述を
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
にする
NO_AUTO_CREATE_USER

  • このオプションは、MySQLサーバーが誤って新しいユーザーを作成するのを防ぐために使用されます。例えば、誤ってスペルミスなどがあっても、MySQLクエリ内で未定義のユーザーが指定されていた場合に、MySQLが自動的にそのユーザーを作成しないようになります。

NO_ENGINE_SUBSTITUTION

  • このオプションは、MySQLが指定されたストレージエンジンが使用できない場合に、代替ストレージエンジンを使用しないようにするために使用されます。代替ストレージエンジンを使用すると、クエリの実行時にエラーが発生する可能性があるため、このオプションを使用することで、MySQLがクエリを実行する前にエラーを通知してくれます。

vi /etc/my.cnf.d/mariadb-server.cnf
// [mariadb]の箇所に

[mariadb]
# 追加
character-set-server = utf8mb4
# 追加
[client-mariadb]
# 追加
default-character-set = utf8mb4
systemctl restart mysqld

PHPインストール

一番大事なPHPのインストールです。

// チェック
dnf search php
メタデータの期限切れの最終確認: 2:53:04 時間前の 2020年07月20日 16時05分18秒 に実施しました。
=================================== 名前 & 概要 一致: php ====================================
php.x86_64 : PHP scripting language for creating dynamic web sites
sphinx-php.x86_64 : PHP API for Sphinx
php-common.x86_64 : Common files for PHP
php-fpm.x86_64 : PHP FastCGI Process Manager
php-dbg.x86_64 : The interactive PHP debugger
php-cli.x86_64 : Command-line interface for PHP
php-pgsql.x86_64 : A PostgreSQL database module for PHP
php-devel.x86_64 : Files needed for building PHP extensions
php-xml.x86_64 : A module for PHP applications which use XML
php-ldap.x86_64 : A module for PHP applications that use LDAP
php-json.x86_64 : JavaScript Object Notation extension for PHP
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-pear.noarch : PHP Extension and Application Repository framework
php-intl.x86_64 : Internationalization extension for PHP applications
php-pear-Cache-Lite.noarch : Fast and Safe little cache system for PHP
php-pear-Cache-Lite.src : Fast and Safe little cache system for PHP
php-odbc.x86_64 : A module for PHP applications that use ODBC databases
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-pdo.x86_64 : A database access abstraction module for PHP applications
php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php-gmp.x86_64 : A module for PHP applications for using the GNU MP library
php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php-process.x86_64 : Modules for PHP script using system process interfaces
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-recode.x86_64 : A module for PHP applications for using the recode library
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol
php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
perl-PHP-Serialization.noarch : Converts between PHP"s serialize() output and the equivalent
                              : Perl structure
perl-PHP-Serialization.src : Converts between PHP"s serialize() output and the equivalent Perl
                           : structure
======================================= 名前 一致: php =======================================
php-opcache.x86_64 : The Zend OPcache
php-pecl-zip.x86_64 : A ZIP archive management extension
php-pecl-apcu.x86_64 : APC User Cache
php-pear-Date.noarch : Date and Time Zone Classes
php-pear-Mail.noarch : Class that provides multiple interfaces for sending emails
php-pear-Date.src : Date and Time Zone Classes
php-pear-Mail.src : Class that provides multiple interfaces for sending emails
php-pear-Net-URL.noarch : Easy parsing of URLs
php-pear-Net-URL.src : Easy parsing of URLs
php-pear-Net-SMTP.noarch : Provides an implementation of the SMTP protocol
php-pear-Net-SMTP.src : Provides an implementation of the SMTP protocol
php-pear-Auth-SASL.noarch : Abstraction of various SASL mechanism responses
php-pear-Auth-SASL.src : Abstraction of various SASL mechanism responses
php-pecl-apcu-devel.x86_64 : APCu developer files (header)
php-pear-Net-Socket.noarch : Network Socket Interface
php-pear-Net-Socket.src : Network Socket Interface
php-pear-HTTP-Request.noarch : Provides an easy way to perform HTTP requests
php-pear-HTTP-Request.src : Provides an easy way to perform HTTP requests
======================================= 概要 一致: php =======================================
lighttpd-fastcgi.x86_64 : FastCGI module and spawning helper for lighttpd and PHP
                        : configuration
// インストール
dnf install php php-common php-fpm php-dbg php-devel php-xml php-json php-pdo php-mysqlnd php-gd php-mbstring

これで以下のパッケージがインストールされます。

  • php: PHP本体
  • php-common: 共通のPHPライブラリ
  • php-fpm: PHP-FPM(FastCGIプロセスマネージャー)
  • php-dbg: PHPのデバッグ情報を提供するパッケージ
  • php-devel: PHPの開発用ライブラリ
  • php-xml: PHPのXMLサポート
  • php-json: PHPのJSONサポート
  • php-pdo: PHPのPDO拡張モジュール
  • php-mysqlnd: PHPのMySQL拡張モジュール
  • php-gd: PHPのグラフィックス拡張モジュール
  • php-mbstring: PHPのマルチバイト文字列拡張モジュール

基本的にはこの構成で問題はないと思います。

php.iniの設定

vi /etc/php.ini
#----
#色々
#----
# PHPが扱うメモリ
memory_limit = 128M
↓
memory_limit = 512M
406行目あたり
 
# エラーレベル
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
↓
error_reporting = E_ALL
462行目あたり
 
# エラー表示
display_errors = Off
↓
display_errors = Off(ローカルならOnで本番環境ならOff)
479行目あたり
 
# 諸々の送信出来るサイズ
post_max_size = 8M
↓
post_max_size = 128M
673行目あたり
 
# デフォルト文字コード
;default_charset = "UTF-8"
↓
default_charset = "UTF-8"
693行目あたり
 
# アップロード出来るサイズ
upload_max_filesize = 2M
↓
upload_max_filesize = 64M
805行目あたり
 
# 場所(FuelPHPを導入する時にこれを設定していないとFuelPHPインストールする時点でエラーになる。)
;date.timezone =
↓
date.timezone = "Asia/Tokyo"
883行目あたり
 
 
#---------
#session系
#---------
# GCプロセスが 始動する間隔(1/1000)
session.gc_divisor = 1000(少し古いPHPだと100なのだが、5.5.7は1000になってた。)
↓
session.gc_divisor = 1000
1430行目あたり
 
# セッションが消されるまでの時間(秒単位)
session.gc_maxlifetime = 1440
↓
session.gc_maxlifetime = 4320
 
# キャッシュされたセッションページの有効期間(分単位)
session.cache_expire = 180
↓
session.cache_expire = 540
 
 
#--------------
#マルチバイト系
#--------------
# 日本だと明示的に設定
;mbstring.language = Japanese
↓
mbstring.language = Japanese
1665行目あたり
 
# 文字コード指定
;mbstring.internal_encoding = UTF-8
↓
mbstring.internal_encoding = UTF-8
1671行目あたり
 
# 入力される文字コード
;mbstring.http_input = UTF-8
↓
mbstring.http_input = UTF-8
 
# 文字コードを変換しないようにする
;mbstring.http_output = pass
↓
mbstring.http_output = pass
 
# 内部文字エンコーディングへの変換を無効にする
;mbstring.encoding_translation = Off
↓
mbstring.encoding_translation = Off

phpMyAdminインストール

GUIでslqが確認できたり操作できたりできるphpMyAdminをインストールしたいと思います。

一長一短だとは思いますが、個人的にはインストールした方が爆速でサービスをリリースできます。

// phpmyadminダウンロード(ここでは5.2.0)
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip
// 解凍
unzip phpMyAdmin-5.2.0-all-languages.zip
// 移動
mv phpMyAdmin-5.2.0-all-languages /usr/share/phpmyadmin
httpdリスタート
systemctl restart httpd
// コピー
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

// 32文字のパスワード生成
base64 /dev/urandom | tr -d -c "[:alnum:]" | head -c 32
or
// 32文字のパスワード生成
mkpasswd -l 32 -d 9 -C 0 -s 0 -2
一旦、テキストエディタなどに貼り付け
vi /usr/share/phpmyadmin/config.inc.php

// ここに生成した32文字のパスワードをペースト
$cfg["blowfish_secret"] = "パスワードをペースト"; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

// セッション継続時間を1日に設定
$cfg["LoginCookieValidity"] = 86400;
vi /etc/httpd/conf.d/phpMyAdmin.conf
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
#       Require ip 127.0.0.1
#       Require ip ::1
     # 2.4系以降のApache
         Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from All
   </IfModule>
</Directory>
// phpmyadminでの権限エラーを解消
chown -R apache.apache /usr/share/phpmyadmin
// リスタート
systemctl restart httpd

cron

最初から起動される設定になっていると思うが念の為。

// リスタート
systemctl restart crond

Squid構築方法(後ほど)

現状必要ないかな?とりあえず最低限の方法だけ載せとく。

dnf install squid
vi /etc/squid/squid.conf
acl mynetwork src 150.95.190.137/32
# ファイルディスクリプタの上限変更
max_filedesc 65535
# 今回10個のIPをランダムで使う
acl balance random 1/2
balance_on_multiple_ip on
tcp_outgoing_address 150.95.190.137 balance 

http_port 3128
↓
http_port 8080

# プロキシ経由アクセスの隠蔽化
visible_hostname unkown
forwarded_for off
reply_header_access X-Cache-Lookup deny all
request_header_access Referer deny all
request_header_access X-FORWARDED-FOR deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

# アクセスフォーマット設定
logformat timefm %{%Y/%m/%d %H:%M:%S}tl %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
# アクセスログ設定
access_log /var/log/squid/access.log timefm

	
	# 接続を維持しない
	# ※同一ホストにアクセス時、IPアドレスが接続するたびに切り替わるようにする
	client_persistent_connections off
	server_persistent_connections off
systemctl enable squid
systemctl start squid
systemctl restart squid
systemctl status squid
IPV6ADDR=2400:8500:1301:748:133:130:116:136
IPV6ADDR_SECONDARIES="2400:8500:1301:748:a133:130:116:1360/128 2400:8500:1301:748:a133:130:116:1361/128 2400:8500:1301:748:a133:130:116:1362/128"
IPV6_DEFAULTGW=2400:8500:1301:748::1
IPV6FORWARDING=yes
systemctl restart NetworkManager

systemctl restart nginx
or
systemctl restart httpd
// 反映されない場合は再起動
reboot
// ネットワークの確認
nmcli d

// ネットワークの詳細確認
nmcli d show

// 確認
ip a

参考にした記事

VPSの構築をマスターする手順書 in ボクとサーバの2週間戦争。
Squidの設定 【Squid Web プロキシ & キャッシュ(Squid Web Proxy Chc...
CentOS 7 (64bit)でのSquid構築方法 - Qiita
とりあえずnftablesを動かしてみた - Qiita
CentOS8はどれぐらい変わったか(パッケージ編) – NorthPage
CentOS 8 : Vsftpd over SSL/TLS 設定 : Server World
CentOS 8にMySQL互換のデータベース MariaDB 10をインストールする
CentOS 8のApache環境にPHP 7.2をインストールして使えるようにする手順
任意の文字数でパスワードをランダム生成するには − @IT
CentOS7の備忘録 - Qiita
CentOS8 FTPS
iptables から nftables にサクッと切り替える
【522 SSL connection failed; session reuse required:】の原因と解...
CentOS7 IPv6の設定
松岡宗谷

お世話になりました!

まとめ

現代においては、個人でも企業でもクラウドサービスを利用したシステム構築が一般的になってきました。AWSなどの大手クラウドサービスプロバイダーは、多くの人々に利用されており、クラウドサービスの利便性やスケーラビリティによって、企業のサーバーやインフラストラクチャーがAWSに移行するケースが増えています。


ですが、クラウドサービスに頼ることで自分たちでシステムを構築する技術や知識が低下してしまうという問題も指摘されています。それに加えて、クラウド特有の仕様や制限が足枷になって開発スピードが遅くなっている案件を多く見て来ました。


このような中でも、VPSによるサーバー構築は自由度が高く、自分たちの手でシステムを構築できるというメリットがあります。そうゆう意味で2023年においてもVPSでサーバーを構築しています。VPSを利用することで自分たちのサーバーに完全なコントロールができ、カスタマイズやチューニングなど、自由度が高くなるというメリットがあります。(重要)


しかし、VPSはクラウドサービスにはないメリットであるスケーラビリティには欠けるため、アクセス数の増加に対応するためには適切な対策が必要となります。が、ギリギリまで安く済ませたい場合はやはりVPSの方が理があるなと感じており、スケーラビリティの観点においてもVPSはAWSのように簡単にサーバーを大きくする事ができます。


それを管理・運用には負荷がかかるという考えなのかコスト削減と捉えるかは各々で考え方が違うような気がします。個人的にはコスト削減になると感じております。


また、クラウドサービスの利用が一般的になる中で、VPSを選ぶ理由としては、クラウドサービスに依存しないことが挙げられます。クラウドサービスに依存することで、サービスの運用やコストについて、クラウドサービスプロバイダーに大きく左右されてしまうことがあります。一方で、VPSを利用することで、サービスの運用やコストを自社で完全にコントロールすることができます。


2023年の今、クラウドサービスが主流になっている中でも、VPSによるサーバー構築には、依然として魅力があります。自分たちの手でシステムを構築することによって、自由度が高くなるというメリットは、今後も変わることがありません。ただし、その一方で、適切な運用や管理、セキュリティ対策など、自社での負荷が高いということも忘れてはいけません。


CMSの悩みはBasicで一気に解決しましょう
  1. 完全無料
    Basicはオープンソースで運営されています。誰しもが自由にBasicを利用できます。
  2. 超軽量化で超高速配信
    通常のCMSよりページ容量を70%以上を自動で圧縮を行い更に自動で静的化・圧縮化されたページが配信されます。
  3. SEOにつよつよ
    70%以上軽量化に加えて最新SEOに対応した構造で静的化・圧縮化されたページはライバルサイトより圧倒的に評価されます
  4. ライバルサイトより一歩前にいけるCMSでサイトを構築しませんか?

    →より詳しく

著者プロフィール
松岡宗谷

Basic https://basic.dance/ を運営しています。スペースナビ 代表取締役。スタートアップ界隈でCTO→Sharetube創業→スペースナビ創業→UXSEOリリース、ResizeCDNリリース、あまてむリリース。世界で最もSEOに効くCMS Basicリリース。個人の夢は完全義体化。会社の夢は宇宙事業。プログラマーは死ぬまで現役でありたい