web-dev-qa-db-ja.com

403ローカルアプリへのアクセス試行中にエラーが発生しました

私はIIS Linuxを初めて開発しようとしている少年なので、優しくしてください。

OK、それで...私はワークステーションをlaravelで開発するように設定しようとしています。

Ubuntu 18.04を使用していて、Apacheをインストールしました。私はlaravel composerからインストールし、最初のプロジェクトをcomposer create-project --prefer-dist laravel/laravel mySite "5.8.*"

これにより、laravel/Siteという名前のプロジェクトフォルダが/ etc/Apache2/sites-enabledに作成されました。

次のような新しいファイル/etc/Apache2/sites-available/mySite.confを追加しました。

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mySite
ServerAlias www.mySite
DocumentRoot /etc/Apache2/sites-enabled/mySite/public/index.php
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined</VirtualHost>

その後、/ etc/Apache2/Apache2.confに次の行を追加しました。

Include /etc/Apache2/sites-available/mySite.conf

そしてもちろん、仮想サイトを同じファイルのホワイトリストに登録しました:

<Directory /etc/Apache2/sites-available/mySite>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

私はa2ensiteを実行してApacheを再起動しました。

しかし、 http:// localhost/mySite または http:/にアクセスしようとすると、403エラー(禁止。このリソースにアクセスする権限がありません)が常に表示されます。 /localhost/mySite/public/index.php また、localhostの代わりに127.0.0.1を使用すると、同じエラーがスローされます。

この問題に関する洞察は大歓迎です。

1
Bardo

こんにちは私はローカル開発用の仮想ホストの設定を経験したので、これがあなたに役立つことを願っています。

Apache.confから行を削除します:_Include /etc/Apache2/sites-available/mySite.conf_

そして、_Sudo a2ensite mySite.conf_コマンドを実行して仮想ホストを有効にします。 (mySite.confファイルは... Apache/sites-available /でも同じである必要があります)

VHost confファイルで、DocumentRootを次のように編集します

_<VirtualHost *:80>
 ServerAdmin webmaster@localhost
 ServerName mySite.loc
 ServerAlias www.mySite.loc
 DocumentRoot /your/project/path
 ErrorLog ${Apache_LOG_DIR}/error.log
 CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
_

ここで、ServerNameはプロジェクトのlocalhostドメインであり、_DocumentRoot /your/project/path_はプロジェクトがホストされているルートフォルダーです(index.htmlまたはindex.phpがあるはずです)。 _/home/yourusername/projects/mysite/public_のように、index.phpファイルではなく、フォルダーへのパスのみを指定する必要があります。

また、プロジェクトをホームディレクトリに移動して、プロジェクトにアクセスするためにroot権限を必要としないようにします。プロジェクトを/ home/yourusername/projects/mysite/publicに移動できます

Sudoで_/etc/hosts_ファイルをvim(またはnano、sublime、または任意のエディター)で編集します。次の行を追加します。

_127.0.0.1 mySite.loc
_

そしておそらくあなたはそれをこのように見るでしょう:

_127.0.0.1 localhost
127.0.0.1 mySite.loc
_

次に、コマンドを実行してconfサイトを有効にします(まだ実行していない場合)。 _Sudo service Apache2 reload_でApacheをリロードし、_Sudo service Apache2 restart_でApacheを再起動します。

これで、Vhostsは正しく構成されましたが、Apacheのフォルダーに正しいユーザーおよびグループのアクセス許可を与える必要があります。

通常は_/etc/Apache2/Apache2.conf_にあるSudoを使用してApache confファイルを編集します。

この行を見つけます:

_User ${Apache_RUN_USER}
Group ${Apache_RUN_GROUP}
_

コメントアウトして、プロジェクトの所有者のユーザー名とグループ名に変更します。これを確認するには、ターミナルを開き、cdを使用してプロジェクトにディレクトリを変更し、コマンド_ls -l_、ファイルとフォルダーの左側にフォルダーとファイルのユーザー名とグループ名が表示されます。

_~ 
➜ cd Sites/mySite/public 

Sites/mySite/public via ???? v7.2.24 
➜ ls -l
total 0
-rw-r--r-- 1 mauriciogtz mauriciogtz 0 nov  5 11:15 index.php
_

私のファイル許可所有者のユーザー名はmauriciogtz(左側)で、私のグループはmauriciogtz(右側)です。

Apache confファイルに次のように追加します。

_#User ${Apache_RUN_USER}
#Group ${Apache_RUN_GROUP}
User mauriciogtz
Group mauriciogtz
_

うまくいかなかった場合は、以前にグループ名の代わりに_Group staff_を使用できます。次に、このコードブロックを探します。

_<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
_

それをすべてコピーしてすぐ下に貼り付け、次のように変更します。

_<Directory /home/mauriciogtz/Sites/mySite/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
_

ディレクトリパスをプロジェクトパスにする必要がある場合、プロジェクトフォルダ内でpwdを使用してパスを取得できます。

Apacheをもう一度_Sudo service Apache2 restart_で再起動します。これで終了です。これがうまくいくことを願っています。

1
Mauricio Gtz