開発Tips アプリ公開:Linuxサーバー編

VPSサーバーでアプリを公開するときに、調べたことのメモ。

root権限を一般ユーザーに付与

「/etc/sudoers」に権限設定が記載されている。
初期設定ではwheelグループがすべてのコマンドを実行できる権限。

[root@localhost ~]# vi /etc/sudoers

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

以下コマンドでグループに追加。

[root@localhost ~]# usermod -aG wheel normaluser

追加したらcatやviで開いて追加されていることを確認しよう。

以下参考サイト

https://ex1.m-yabe.com/archives/5233
https://qiita.com/polarbear08/items/c07fc1316a94c2ef49e8


ポート開放

CentOS系では以下のパケットフィルタ(ファイアウォールの事?)が使用されている。
公式だと以下のようになっている模様。変更しようと思えば変えられる模様。

  • iptables (CentOS6以下)
  • firewalld (CentOS7)
  • nftables (CentOS8, CentOS Stream8以降)

追記 firewalldの裏で使用されているプログラムが、「iptables 」や「nftables 」になる模様。firewalld自体はどっちでも使えるのかな?

使用しているパケットフィルタを確認

 下記はサービスの状態を確認するコマンド。「firewalld」の箇所を「iptables」「nftables」と変えて、サービスとして起動しているものを探す。(サービスとして起動していたら、それが使用されていると考えていいよね?)
自分の借りているVPSサーバーはCentOS Stream9だがfirewalldが起動していた。

systemctl status firewalld

追記 firewalldの裏で使用されているプログラムが、「iptables 」や「nftables 」になる模様。firewalld自体はどっちでも使えるのかな?

ポートの開放(firewalldの場合)

以下で現状で開いているポートを確認

firewall-cmd --list-all

以下で開放ポートを追加。–permanentオプションを忘れると一時的な設定になるので注意。
(zoneの考え方は別途調べてください。簡単に書くと各インターフェイス(イーサネット1)とかに事前定義したポート開放定義(zone)を割り当てるみたいな考え方みたいです。)

# ポート番号指定で追加
firewall-cmd --add-port=80/tcp --zone=public --permanent

# 以下のコマンドはサービス名で対応するwellknwonポートを開放する。
firewall-cmd -add-service=http --zone=public --permanent

firewalldの設定をリロードして反映させましょう。

firewall-cmd --reload

アプリを80ポートで起動するとき

1024未満のポートはwell_known_portやprivileged portと呼ばれ、一般ユーザでは使用不能。
waitressで起動する場合のコマンド(flaskr:create_appは可変)

waitress-serve –port 80 –call ‘flaskr:create_app’

上記を一般ユーザーで実行すると、以下のエラー。

PermissionError: [Errno 13] Permission denied

root権限で以下とすることで、起動できた。

sudo waitress-serve –port 80 –call ‘flaskr:create_app’

コメント

タイトルとURLをコピーしました