0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS × Linux × Nginx:環境構築とシンボリックリンク・権限の整理メモ

Posted at

目的

AWSにLinuxとNginxを導入して、Webアプリの環境構築をしていく中で、
「権限設定どうだっけ?」「シンボリックリンクってどう使うんだっけ?」と迷うことがよくある。

この記事では、自分自身の理解を深め、再利用できるように設計・権限周りを整理しておく。


ディレクトリ構成の基本

プロジェクトフォルダの置き場所

  • 実際のプロジェクトコードは、~/ 以下(例:/home/ubuntu/web/your-project)に置くのが一般的。
  • 公開用フォルダ(Nginxのドキュメントルート)は /var/www/ 以下。

なぜ2つに分けるのか?

  • 公開エリアと管理エリアを分離するため。
  • 公開用の /var/www/your-project には、実際のプロジェクトの中身を置かず、シンボリックリンクを貼るのが基本。
sudo ln -s /home/ubuntu/web/your-project/public /var/www/your-project

これで /var/www/your-project を Nginx が root として扱い、実態は ~/web/your-project/public にある。

シンボリックリンクのメリット

  • 本体を動かさずに切り替えが可能
  • デプロイのたびに /var/www/your-project の中身を削除・コピーする必要がない
  • 複数のバージョンを切り替えるのも簡単(例:v1, v2, v3 に切り替え)

クライアントリクエストの流れと Nginx の役割

  • クライアントから HTTP リクエストが来る
  • Nginx がリクエスト内容を見て適切なファイル or 処理へ振り分ける
  • 静的サイトならそのままファイルを返す
  • 動的サイト(PHPなど)は php-fpm へ処理を渡す

静的サイト(HTML/CSS/JS)の Nginx 設定例

server {
    listen 80;
    server_name example.com;
    root /var/www/your-project;

    location / {
        try_files $uri $uri/ =404;
    }
}

→ 静的ファイルをそのまま Nginx が www-data ユーザーとして読み取って返す。


動的サイト(PHP)の場合

server {
    listen 80;
    server_name example.com;
    root /var/www/your-project;

    index index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

php-fpm と Nginx の関係

  • Nginx は .php ファイルを直接処理できない。
  • fastcgi_pass を使って php-fpm に処理をバトンパスする。
  • PHP-FPM 側が .php ファイルを読み取り・実行して、結果(HTML)を Nginx に返す。

つまり、ファイルの読み取りが必要なのは php-fpm 側のユーザー(www-data


権限の整理

ls -l の見方(例)

-rw-r--r-- 1 ubuntu ubuntu 1234 Apr 8  index.php
  • 所有者:ubuntu
  • 所有グループ:ubuntu
  • その他:読み取り可能

この場合、www-data(その他ユーザー)としては、読み取りはできるが、ディレクトリの移動には実行権限も必要

権限については以下の記事で詳しく触れた。
https://qiita.com/TechCraft/items/82ea8a4e1719592434d1

フォルダに必要な権限

  • フォルダは「実行(x)権限」がないと中に入れない(読み取りできない)
chmod o+x /home/ubuntu/web/your-project
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?