知人からとあるシステム依頼を頂いて、2週間くらいでざっと開発しました。
法人向けで、そこまでアクセス増えないかなという事で今回は『VPS』にデプロイしたので、備忘録兼ねてやった事をまとめておく事にします。
契約・管理画面での設定
エックスサーバーVPS
VPSはどこでもよかったんですが、以前からXserverを使っていたのでその流れで、『Xserver VPS』を使う事にしました。
プランは4GBプランの月額1,700円くらい、年払いで約21,000円。
インストールするOSを色々選べたんですが、今回は『Ubuntu 22.04』にする事に。
後は、
- 接続許可ポートを全て許可( 全てと言ってもssh, web, mysql, postgresql, メール, RDP くらい)。
- SSHキー発行してパソコンに保存。
- ドメインのDNS設定 (ムームードメインで取得したドメイン)
- DNSレコード設定の追加 (ムームードメインで取得したドメイン)
くらいの対応ですみました。
ムームードメイン
ドメインも必要だったので、以前から愛用しているムームードメインで取得。
.comなど主要なドメインが空いていなかったので、.pro を選んでみました。初年度は 355円だそう。
取得後ネームサーバーをエックスサーバーVPSのものに設定しました。
- ns1.xvps.ne.jp
- ns2.xvps.ne.jp
- ns3.xvps.ne.jp
Ubuntu (OS) 設定
設定周りはとにかくググる。
今回はUbuntuを使っていて、バージョンにより違いもありそうという事で、
『Ubuntu 22 システム名 設定 』
などでひたすらググりまくって試していきました。
変更した内容は下記
- 英語表記へ変更 (日本語だと文字化けでダイヤマーク♢♢♢ばかり表示され使えない状態だったため)
ロケール表示
# echo $LANG
使用可能なロケール一覧表示
# locale -a
デフォルトのロケールを英語に変更して反映させる
# echo export LANG=en_US.utf8 >> ~/.profile
# source ~/.profile
# echo $LANG
- パッケージ更新 (apt-get update, apt-get upgrade)
# sudo apt-get
# sudo apt-upgrade
apache (webサーバー) インストール
apacheインストール
# sudo apt info apache2
# sudo apt-get install -y apache2
起動
# sudo systemctl start apache2
mode_rewrite有効化 (.htaccessを使うため)
# sudo /usr/sbin/a2enmod rewrite
インストールしつつ、
- VirtualHostの設定 (複数ドメインで設定できるよう)
vi /etc/apache2/sites-available/aaa.bbb.conf // ドメインがaaa.bbbの場合
# 新規作成
# バーチャルホストのドメインの設定
<VirtualHost *:80>
DocumentRoot /var/www/aaa.bbb
ServerName www.aaa.bbb
ServerAdmin webmaster@localhost
ErrorLog /var/log/apache2/aaa.bbb.error.log
CustomLog /var/log/apache2/aaa.bbb.access.log combined
</VirtualHost>
# a2ensite aaa.bbb
Enabling site aaa.bbb.
To activate the new configuration, you need to run:
systemctl reload apache2
# systemctl reload apache2
# mkdir /var/www/aaa.bbb
# vi /var/www/aaa.bbb/index.html // テストファイルつくり表示確認 (うまく行かなかったので要調査・・)
- SSLの設定 (Let’s Encrypt でSSL証明書を取得)
# apt -y install certbot
# certbot certonly --webroot -w /var/www/html -d aaa.bbb // ドメインがaaa.bbbの場合
なども実施。
mariaDB (データベース) インストール
まずはインストール
# apt -y install mariadb-server
# systemctl restart mariadb
# mysql_secure_installation
- データベース作成
- ユーザー作成
- 権限設定
mysql
> create database test_database;
> create user 'user'@'localhost' identified by 'password'
> grant all on *.* to 'user'@'localhost' identified by 'password'
composer インストール
composer インストールしバージョン表示できるように。
$ sudo apt install php-cli unzip
$ cd ~
$ curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
$ sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
$ composer --version
php インストール
必要なライブラリがいくつかあるのでまとめてLaravelに記載してます。
git インストール
インストールしつつ、SSH接続が必要なので、キー発行し設定。
# Gitインストール
sudo apt-get install git
# OpenSSH serverのインストール
sudo apt-get install openssh-server
# OpenSSHのバージョンを確認
ssh -V
# ver6.5以上であれば Ed25519方式のアルゴリズムに対応したキーを作成
# -f: ファイル名
# -C: コメント
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "your_email@example.com"
## 下記が表示されたらパスワードを入力
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
# 下記が表示されたら、もう一度同じパスワードを入力
Enter same passphrase again:
# 秘密鍵 id_ed25519, 公開鍵 id_ed25519.pub の2ファイルが生成される
Your identification has been saved in /home/[username]/.ssh/id_ed25519
Your public key has been saved in /home/[username]/.ssh/id_ed25519 .pub
The key fingerprint is:
SHA256:・・・
$ssh-add でエラーが出たのでevalでauthentication agentを立ち上げておく必要があった。
$ eval "$(ssh-agent)"
$ ssh-add ~/.ssh/id_ed25519
$ ssh作成時のパスワード入力
Node.js インストール
Nodeはインストールするだけでバージョン表示されたのでOK。
$ sudo apt show nodejs // OS標準だけどバージョンが古い場合あり
$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - // 今回はver16をダウンロード
$ sudo apt-get install -y nodejs // インストール
$ node --version
$ npm --version
LaravelをgitHubからダウンロード
gitHubにSSH接続してgit clone でダウンロード
Laravel 設定周り
- 必要なライブラリをインストール
$ sudo apt install php8.1 php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-curl libapache2-mod-php php-mysql // バージョンによる
$ php -v // バージョン確認
$ php -m // モジュール確認
- 権限の変更 (storageなどを755に)
chmod 757 bootstrap/cache
chmod 757 storage/app/public
chmod 757 storage/framework/cache
chmod 757 storage/framework/sessions
chmod 757 storage/framework/views
chmod 757 storage/logs
- URLのpubilcを削除するためサーバのルート直下に .htaccessを作成
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
- ルート以外のページも見れるようにapache側設定を変更 All
<Directory "/var/www">
#↓ コメントアウト
#AllowOverride Node
#↓ 追記
AllowOerride All
- wkhtmltopdf インストール パスを確認し .envに追加
$ dpkg -L (パッケージ名) // インストールしたパッケージのパスの確認 (今回はwkhtmltopdf)
- PDF表示用に日本語ファイルを追加
$ sudo apt install -y fonts-ipafont
$ fc-cache -fv
VPS環境にLaravel環境をデプロイしてみて
だいぶ忘れていたこともあり、とにかくググりながら進めていって、トータル4時間位かかったと思います。
やらなきゃいけないことを整理しつつ1こずつ進めていく必要があるし、
新人さんが最初から全部やるのはなかなかしんどいよなぁと再認識したし、
Dockerやコードフォーメーションなどの偉大さを身にしみて感じました。
とはいえ練習がてら、たまには全部自分でやるというのもなかなかいいんじゃないかなと思います。
この記事へのコメントはありません。