デスクトップPCとしてのLinux利用(Kubuntu 22.04インストール後にやったこと) – Manualmaton's Laboratory
こちら、ローカルサーバとして運用することにしています。
公開しているサイトと異なりnginxで動かしているので、その場合のメモです。
環境
- Ubuntu 22.04
- 適切に名前解決できる
- ドメイン名に沿った証明書がある
- 筆者はmkcertでローカル証明書を作っています
インストールして最初の設定が終わっている状態です。
nginxインストール
sudo aptitude install nginx
mysqlインストール
sudo aptitude install mysql-server mysql-client libmysqlclient-dev
sql設定変更
sudo cp -pi /etc/mysql/mysql.conf.d/mysqld.cnf /path/to/backup/mysqld.cnf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。
# .$(date +%Y%m%d)をつけることで、バックアップファイルは当日日付(YYYYMMDD形式)で記録されます
diff -u /etc/mysql/mysql.conf.d/mysqld.cnf /path/to/backup/mysqld.cnf.$(date +%Y%m%d)
# バックアップが取れていることを「差分が存在しないこと」で確認します
echo -e "default_authentication_plugin=mysql_native_password" | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf
# mysqld.cnfに追記をします
MySQL再起動
sudo systemctl restart mysql.service
MySQLのrootパスワード変更
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;
exit
運用に合わせて適切なパスワードを設定します。
mysql-secure-installation
sudo mysql_secure_installation
詳しい設定は以下に記しています。
https://atelier.reisalin.com/projects/zettel/questions/5-mysql_secure_installation
phpのインストール
https://barrel.reisalin.com/books/nextcloud/page/1-1-nextcloud
自サイトを参考にしていますが、一部異なります。
PHPレポジトリを追加して必要パッケージをインストールします。
- レポジトリ追加
sudo add-apt-repository ppa:ondrej/php
Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
- パッケージアップデート
sudo aptitude update
- php インストール
sudo aptitude install php8.1
sudo aptitude install php8.1-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev,fpm}
#fpmを入れる必要あり
nginx環境でも動かすため、php(バージョン)-.fpmを入れます。
- apache無効化
sudo disable apache2.service
依存関係でapache2も一緒にインストールされるので、ここで停止させます。
Composerインストール
https://barrel.reisalin.com/books/bookstack/page/bookstackubuntu2004
同じくこちらにメモを残しています。
- インストール
- ディレクトリ移動
cd /hoge
任意の作業ディレクトリに移動します
- インストーラーのダウンロード
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- インストール
sudo php composer-setup.php
- インストーラーのリンク解除
sudo php -r "unlink('composer-setup.php');"
- コマンドのパスを移動
sudo mv composer.phar /usr/local/bin/composer
- composerに実行権を付与
sudo chmod +x /usr/local/bin/composer
- バージョン確認
composer --version
バージョンが表示されることを確認します。
DBを作成します。
- mysqlログイン
mysql -u root -p
CREATE DATABASE bookstack character set utf8mb4;
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstackuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
DB名/パスワードはポリシーに応じて適切なものを指定します。
BookStackの配置
- プログラム配置
cd /home/www-data
# パーティションの都合上、/home/www-dataに置いています。
# 環境に合わせて適切なWebサービス公開ディレクトリを指定してください。
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
sudo chown -R www-data:www-data BookStack
cd BookStack
- 設定ファイル編集
sudo cp -pi .env.example .env
教義・信仰に沿ったエディタで以下を編集します。
APP_URL=https://hoge.example.com
# 公開用URLを指定します
# Database details
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=password
# DB名、パスワードなどは先ほど作成したものです。
- マイグレート
sudo -u www-data composer install --no-dev --optimize-autoloader
sudo -u www-data php artisan key:generate
sudo -u www-data php artisan db:seed --force
sudo -u www-data php artisan migrate --force
Nginx設定
- 設定ファイル作成
- /etc/nginx/site-available/bookstack.conf
- ファイル内容
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# サーバ名を指定します。
server_name hoge.example.com;
server_tokens off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security 'max-age=63072000';
# 任意のログディレクトリを指定します。
access_log /var/log/nginx/bookstack/access.log;
error_log /var/log/nginx/bookstack/error.log;
# SSL証明書を指定します。
ssl_certificate /path/to/ssl_certificate/hoge.crt;
# SSL秘密鍵を指定します。
ssl_certificate_key /path/to/ssl_key/hoge.key;
# BookStackが置かれているディレクトリです。/publicは必ず指定します。
root /home/www-data/BookStack/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
# 強制的にhttps通信
server {
listen 80;
listen [::]:80;
server_name veritas.lumos;
return 301 https://$host$request_uri;
}
nginx設定を有効化します。
- ディレクトリ移動
cd /etc/nginx/sites-enabled
- 初期設定ファイルを無効
sudo unlink default
- 設定有効化
sudo ln -sf /etc/nginx/site-available/bookstack.conf bookstack.conf
- 構文チェック
sudo nginx -t
エラーがないことを確認します。
- nginx再起動
sudo systemctl restart nginx.service
インストール確認
設定したドメインにブラウザでアクセスし、ログイン画面が出てくれば成功です。