web-dev-qa-db-ja.com

Ubuntu 16.04のドキュメントルートの変更に関する問題

最近、WindowsからUbuntu 16.04に移行しました。Web開発環境をセットアップしようとしています。 Apache、mysql、およびphpを正常にインストールし、htmlとphp(Sudo nanoを介してテストスクリプトを作成)の両方が/var/wwwから完全にレンダリングされます。

その後、ファイルを保存するとアクセス拒否エラーが発生することを理解するために、ディレクトリ/var/wwwの崇高なテキストから新しいファイルを作成しようとしました。そこで、これが許可などに関する新しい記事につながり、そのディレクトリの許可を修正することはおそらく良い考えではないことに気付きました。

Apacheドキュメントルートを他の場所に移動する方法に関する記事を参照しました。次に、/home/userの下に新しいprojects/webディレクトリを作成し、/etc/Apache2/sites-available/000-default.confのDocumentRootを変更しました(Apache 2.4.18を使用しています)。 /etc/Apache2/Apache2.confにも関連する変更を加えて、<Directory>パスも変更しました。 Apacheを再起動し、DocuemntRootが変更されましたが、PHPをレンダリングしていません。以前にurl http:// localhost/phpmyadmin で機能していたphpmyadminでさえ機能しなくなりました。

  • /etc/Apache2/sites-available/000-default.confで変更されました:
    DocumentRoot /var/www/html

    DocumentRoot /home/{user}/projects/web

  • /etc/Apache2/Apache2.confで変更されました:
    <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

    <Directory /home/{user}/projects/web/> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory>

DocumentRootを変更しても、phpとphpmyadminを機能させるにはどうすればよいですか?

1
A. Munir

最初に壊れたApaches2を修正

Apache2が破損しているようです。デフォルトのホスト設定を使用し、必要な変更カスタムルートディレクトリの仮想ホストを作成する必要があります。編集した構成ファイルを削除または名前変更して、元のファイルを復元します。

デフォルトの000-default.confファイルをテンプレートとして使用します。仮想ホストの名前にコピーして、カスタムファイルに変更を加えます。

これらの手順を使用してファイルの名前を変更できます:

$ cd /etc/Apache2/sites-available
$ Sudo mv 000-default.conf mysite.conf
$ cd /etc/Apache2
$ Sudo mv Apache2.conf Apache2.conf.test

このコマンドラインでデフォルトのファイルを復元します:

$ Sudo apt -o Dpkg::Options::="--force-confmiss" install --reinstall Apache2

ここで仮想ホスト「mysite.com」を作成/home/web/mysiteは任意のディレクトリに置き換えることができます。あなたの場合、/home/{user}/projects/webを使用できます。

$ cd /etc/Apache2/sites-available
$ Sudo cp 000-default.conf mysite.conf
$ Sudo mkdir -p /home/web/mysite/www
$ Sudo mkdir -p /home/web/mysite/log

mysite.comホストが存在しない場合は、次を使用してローカルに作成します。

$ gksudo gedit /etc/hosts

hostsファイルに追加します。

127.0.0.1  mysite.com

mysite.confファイルを編集して、Document Rootの選択肢を指すようにします。

$ pksudo gedit /etc/Apache2/sites-available/mysite.conf

このファイルに次の変更を加えます。これは、000-default.confファイルと新しく作成されたmysite.confファイルの違いです。違いはbold typeで強調表示されます。

&ltVirtualHost *:80> 
#ServerNameディレクティブは、サーバーが自身を識別するために使用する要求スキーム、ホスト名、およびポートを設定します
#。これは、
#リダイレクトURLを作成するときに使用されます。仮想ホストのコンテキストでは、ServerName 
#は、リクエストのHost:ヘッダーに表示されるホスト名を指定します。to 
#この仮想ホストに一致します。デフォルトの仮想ホスト(このファイル)の場合、this 
#値は関係ありません。最終的なホストとして使用されるため、決定的ではありません。
#ただし、さらに仮想ホストを明示的に設定する必要があります。 
 ServerName mysite.com 
 
 ServerAdmin webmaster @ localhost 
 DocumentRoot/home/web/mysite/www&ltDirectory />
オプション+ FollowSymLinks + ExecCGI + Includes 
許可されたすべてを要求する
 </ Directory>
 
 
#利用可能なログレベル:trace8、...、trace1、debug、info、notice、warn、
#error、crit、alert、emerg。
#特定の
#モジュールのログレベルを設定することもできます。例えば、
 #LogLevel info ssl:warn 
 
 ErrorLog /home/web/mysite/log/error.logCustomLog /home/web/mysite//access.logの組み合わせ
 
#conf-available /のほとんどの構成ファイル(
#グローバルレベルで有効または無効にする)には、
#行を含めることができます。特定の1つの仮想ホストのみ。たとえば、
#次の行は、このホストのみのCGI構成を有効にします
#「a2disconf」でグローバルに無効にされた後。
#conf-available/serve-cgiを含める-bin.conf 
 </ VirtualHost> 
 
#vim:syntax = Apache ts = 4 sw = 4 sts = 4 sr noet 

これで新しいサイトを有効にします:

$ Sudo a2ensite mysite.conf

Apache構成ファイルに変更を加える場合、次のコマンドでサービスを再起動します。

$ Sudo systemctl restart Apache2

VirtualHostのディレクトリとファイルへのアクセス許可を書き込む:

コマンドchownおよびchgrpを使用して、/home/web/mysite/wwwのファイルとフォルダーの所有者を変更できます。ユーザーIDが所有している場合、ファイルとフォルダーへの読み取りおよび書き込みアクセス権があります。

特定のgroupを作成し、特定のグループにユーザーを追加して、そのグループのユーザーがファイルとフォルダーへの読み取り/書き込みアクセス権を持つようにすることもできます。

後者の考慮事項を使用すると、他のユーザーに/homeスペース内のファイルやフォルダーへのアクセスを許可するよりも優れたセキュリティの代替手段となります。

1
L. D. James