デスクトップPCとしてのLinux利用(Kubuntu 22.04インストール後にやったこと) – Manualmaton's Laboratory
こちら、ローカルサーバとして運用することにしています。
公開しているサイトと異なりnginxで動かしているので、その場合のメモです。
環境
- Ubuntu 22.04
- 適切に名前解決できる
- ドメイン名に沿った証明書がある
- 筆者はmkcertでローカル証明書を作っています
 
インストールして最初の設定が終わっている状態です。
nginxインストール
sudo aptitude install nginxmysqlインストール
sudo aptitude install mysql-server mysql-client libmysqlclient-devsql設定変更
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.serviceMySQLのrootパスワード変更
sudo mysqlALTER 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/phpUbuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。
- パッケージアップデート
sudo aptitude update- php インストール
sudo aptitude install php8.1sudo 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 -pCREATE 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-autoloadersudo -u www-data php artisan key:generatesudo -u www-data php artisan db:seed --forcesudo -u www-data php artisan migrate --forceNginx設定
- 設定ファイル作成
- /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インストール確認
設定したドメインにブラウザでアクセスし、ログイン画面が出てくれば成功です。
 
			















 
			