Axum や Actix-web で作った Web アプリケーションを、本番サーバーで試す簡単な方法を説明しています。
本番サーバーに Rust と SQLite の開発環境をインストールしてください。
ip アドレスを 0.0.0.0 ポート番号を 8080 もしくは 3000 で作ったプロジェクトを用意して、 GitHub 経由で、本番サーバーにダウンロードします。
Axum や Actix-web で作られたアプリケーションは、 それ自体がサーバーになりますので、apache などの Web サーバーを稼働させる必要はありません。
プロジェクトを設置する場所はどこでも大丈夫です。
次の方法で、ポートの使用状況を確認し、開放します。ポート 3000 の場合は適宜読み替えてください。
# 8080 が使用中の場合、そのポートを開放する
sudo lsof -i :8080
sudo netstat -nlp | grep :8080 // これは実行しなくても大丈夫です。
// ポート 8080 を使っているサービスが表示されます。その PID の欄の数字を利用して、そのサービスを終了します。
sudo kill -9 PID
プロジェクトのルートディレクトリに移動して、次のようにしてビルドして起動します。 ポート 3000 の場合は適宜読み替えてください。
// アプリケーションのビルド
cargo build --release
// アプリケーションの起動
nohup ./target/release/アプリケーション名 &
// 起動したメッセージが表示されますが、もう一度エンターキーを押して、終了メッセージが表示されたら
// アプリケーションに問題があります。プロジェクトのコードを見直してください。
// 問題がなければ、ターミナルで他の作業をしても、あるいはターミナルを閉じても、アプリケーションはそのまま起動し続けます。
ブラウザで、IP アドレスもしくはURL:8080 でアプリケーションが表示されます
ブラウザで、IP アドレスもしくはURL:8080 でアプリケーションが表示されます。
次のようにしてアプリケーションを終了します。ポート 3000 の場合は適宜読み替えてください。
# プロジェクトが、ポート8080をどのような PID で起動しているか調べます。
sudo lsof -i :8080
// ポート 8080 を使っているサービスが表示されます。その PID の欄の数字を利用して、サービスを終了します。
sudo kill -9 PID
2025年10月1日 に修正しました。
アドレス:8080 という形ではなく、アドレス/アプリケーション名でアクセスしたくなると思います。 その場合は、apach などの Web サーバーを立ち上げて、プロキシを利用します。 ポート 3000 の場合は適宜読み替えてください。
apache2 サーバーでの例を示します。/etc/apache2/apache2.conf に次のコードを追加してください。 追加する場所はファイルの一番最後で大丈夫です。
<Location "/アプリケーション名">
ProxyPass http://0.0.0.0:8080 // 0.0.0.0 ではなく正規の IP でも当然良い
ProxyPassReverse http://0.0.0.0:8080
</Location>
<Location "/違うアプリケーション名">
ProxyPass http://0.0.0.0:3000
ProxyPassReverse http://0.0.0.0:3000
</Location>
apache2.conf を書き換えた後は、apache2 を再起動します。
sudo service apache2 restart
これで、サーバーのIPアドレス/アプリケーション名もしくはURL/アプリケーション名でアクセスできるようになります。 ただし、プロジェクトの Html ファイルには、CSS の読み込みや、フォームの action で、 http://サーバーのIPアドレス/CSSファイル名や、http://サーバーのIPアドレス/アクション名 に書き換えなければなりません。もし書き換えなければ、CSS が読み込めなかったり、リンクできなかったりします。
なおプロキシはいくつでも書き足すことができます。