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’
コメント