/ var / wwwディレクトリを自宅にシンボリックリンクする必要がありますか?


20

LAMPセットアップでUbuntu Server 10.04をインストールしました。そこにウェブサイトをホストしたいのですが、サーバー上のファイルを取得/編集するための最良の方法がどれなのかわかりません。グーグルには多くのオプションがありますが、どれが最適かわかりません。

より良いオプションがない限り、別のPC(WindowsまたはLinux)でページを作成し、SFTPを使用してサーバーへの変更を同期したいのですが、〜/または権限を変更してsymlinkフォルダーにこれを行います/ var / www /フォルダにありますか?


回答:


21

すべてのセットアップは異なります。私にとっては、それぞれがウェブサイトをホストするサーバー上に多くのユーザーがいます。あなたにとっては、おそらくシステム上に複数のユーザーを作成する必要はないでしょう。ただし、このサーバーで複数のWebサイトを管理する場合、このセットアップは、標準のLAMPセットアップよりも簡単に各ドメインを管理、構成、およびデバッグするのに役立ちます。そのためには、Apacheのいくつかのデバイスを使用して、許可エラーを回避します。

まず、これは私が使用するドキュメント構造です。

/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs

各ユーザーは、ドメインフォルダーを持つ独自のアカウントを持っています(追加された/etc/skelため、毎回作成されます。各ドメインには、domainsフォルダーを持つhtmlフォルダー内に独自のフォルダーがあります(主に、ドメインが外部にWebファイルを持つことができるように、パブリックレルムの))。この構造全体を自由に変更できます。必要に応じて、この投稿全体でこれらの変更を伝えることを忘れないでください。

次に、多くのPHPサイトをホストしているため、構成でsuPHPを使用します。デフォルトでは、標準アーカイブパッケージでは適切なコンパイルフラグが有効になっていないため、suPHPのセキュリティが低下します。サーバーで使用する独自のsuPHPパッケージを作成しました。インストール手順は次のとおりです。suPHPでは、PHPスクリプトをどのユーザーとして実行するかを定義できます(他にも、各サイトのカスタムphp.iniなど)。また、ApacheのsuExecを有効にします-さらに、www-dataユーザー(私が軽deするユーザー)の所有権を持つ必要性を取り除きます。

最初に、Apacheと他のすべてのサービスがサーバーにインストールされていることを確認します。少なくとも機能していることを確認してください。その後、suphp-commonと必要なlibapache2-mod-suphpモジュールをインストールすることをお勧めします(詳細:PPAとは何ですか、またどのように使用しますか?)。次に、それらをインストールした後、suPHPとsuexecを使用してアクティベートしますa2enmod

sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5

sudo /etc/init.d/apache restart

次は設定ファイルです。新しいサイトを追加するたびに構成ファイルを自動的に生成するさまざまなツールを作成しました。ただし、私が使用する基本的なテンプレートは次のとおりです。

<VirtualHost *:80>
    ServerAdmin [EMAIL]
    ServerName [DOMAIN]
    ServerAlias www.[DOMAIN] [DOMAIN]
    DocumentRoot /home/[USER]/domains/[DOMAIN]/html

    <Directory /home/[USER]/domains/[DOMAIN]>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
    </Directory>

    ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined

    SuexecUserGroup [USER] [USER]

    suPHP_UserGroup [USER] [USER]
    suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>

これにより、そのドメイン、ドキュメントルート、およびドメインが動作するための他のすべての基本的な必要事項のログが設定されます。これらのファイルを/etc/apache2/sites-available/通常の名前で配置し[USER]-[DOMAIN]、次のように有効/無効にしますa2ensite

sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]

設定ファイルを変更するたびに、Apacheをリロードする必要があります

sudo /etc/init.d/apache reload

獲得した柔軟性の量をセットアップすることは多くのように思えるかもしれませんが、私の意見では、セットアップ時間をはるかに上回っています。必要なのはシングルユーザーWebサーバーだけですが、将来的にシングルユーザーWebサーバー以外のものが必要になった場合は、そのためにさらにアクションを実行する(またはセキュリティをまとめて削除する)必要があります。


設定ごとの+1は異なり、ウェブサイトごとに個別のユーザーアカウントを使用しています
-Lekensteyn

1
これはマルチユーザーLAMPシステムには最適ですが、質問はシングルユーザーLAMPシステムに関するものでした。その場合、この答えは過剰です。:)
キーズクック

@Keesの同じ原則が適用されます-ユーザーだけを追加する必要はありません。この方法では、ユーザーや権限の問題を心配する必要はありません。1人のユーザーが複数のドメインを持っている場合、このセットアップで対応できます。
マルコセッピ

マルコ、2番目のユーザーを取得した時点でこのメソッドを実装できます。しかし、最初の1つは、より多くのことが確実でない限り、はるかに単純なはずです。
SpamapS

+1-これは最も安全で最も賢明な構成です。
ネイサンオスマン

11

Sftpは非常に簡単にインストールできます。パッケージopenssh-serverをインストールするだけで、sftpが手に入ります。インターネットからアクセスできる場合は、ユーザーに適切なパスワードを設定してください。(辞書の単語ではなく8文字以上に記号と数字があります)。

権限については、通常これを行い
sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rw /var/www
ます。その後、sftpで接続して(ユーザー名とパスワードを使用)ページを投稿し、/ var / wwwフォルダーに移動してそこにファイルを配置する必要があります。


1
より安全な方法は、鍵ベースの認証です(もちろん秘密鍵のパスワードは保護されています)
Lekensteyn

@Lekensteyn私はそれを提案することを検討しましたが、私はそれをシンプルにしようとしていました。Craig Tがhelp.ubuntu.com/community/SSH/OpenSSH/Keyshelp.ubuntu.com/community/SSH/OpenSSH / ...を見て、より安全なキーベースの認証をセットアップする場合があります。
アゼンデール

2
これは、ファイルパーミッションを破壊することなく、シングルインスタンスWebサーバー上の適切な場所にファイルを配置するための最も簡単なアプローチです。:)さらに、sftpの代わりにrsyncを使用できます。両方とも内部でSSHを使用します(パスワードの代わりにsshキーを使用することをお勧めしますが、誰かが既に言及しています)。
キーズクック

1
+ 1、Keesに同意します。これは非常にシンプルで、記載されている質問に対して有効です。40個以上のノードを持つ実稼働クラスターに対してほぼ同じセットアップを使用し、SSHキーのみへのアクセスを制限しました。
SpamapS

1

webdavを使用しています。Ubuntu Serverへのインストールは非常に簡単です。Apacheがインストールされていれば、ほぼ完了です。ただsudo a2enmod dav; service apache2 restart。仮想サイトを少し構成する必要があります。実稼働環境で使用している例を次に示します。

<VirtualHost *>
    ServerName webdav.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite
    DAVLockDB /var/lock/apache2/DAVLock
    <Directory /srv/mysite>
        Order allow,deny
        Allow from all
    Dav On
    DAVMinTimeout 600
    DAVDepthInfinity On
AuthName "mysite login"
AuthType Basic
AuthUserFile /srv/mysite/.htpassword
Require valid-user

    </Directory>
php_admin_value engine off
</VirtualHost>

<VirtualHost *>

    ServerName mysite.com
    ServerAlias *.mysite.com
    ServerAdmin webmaster@mysite.com

    DocumentRoot /srv/mysite/www
    <Directory /srv/mysite/www>
        Order allow,deny
        Allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /srv/mysite/cgi-bin/
</VirtualHost>

これを/ srv / etc / apache2 / sites-available / mysiteに配置してから実行できますsudo a2ensite mysite; sudo service apache2 reload

ここでは、2つの仮想サイトを作成しています。1つはwww.mysite.comで、もう1つはwebdav.mysite.comです。重要なwebdav.mysite.comでPHPが無効になっています。

これで、Ubuntu、Windows、MacOSのhttp経由でサイトにアクセスできます。3つすべてにwebdavサポートが組み込まれています。Ubuntuにwebdavネットワークロケーション追加する手順を次に示します


なぜこれが良いのですか?追加のソフトウェアなしで任意のオペレーティングシステムからサイトにアクセスできるため(sftpはUbuntuで動作し、他のOSには別のプログラムが必要です)。また、wordpressのようなサイトでは、apacheは両方の側面を処理するため、ファイルのアップロードを処理するための許可はすでに正しいです。また、セキュリティが必要な場合は、標準のhttpsも利用できます。(同じIP上に複数のサイトがある場合は、異なるポートを使用できます)
-newz2000

ところで、上記の手順は、サイトの場所を作成したことを前提としていますmkdir -p /srv/mysite/www; chown -R www-data.www-data /srv/mysite
newz2000

1
DAVは暗号化されているかどうかは定かではありません(WebサーバーもSSLを実行している場合を除く)ので、一般的にDAVを介したSFTPまたはrsyncをお勧めします。
キーズクック

0

/ var / wwwへの書き込み許可をwww-dataに付与し、ユーザーをそのグループに追加します。そうすれば、どのユーザーがそのディレクトリに書き込むことができるかを簡単に制御できます。

sudo chgrp -R www-data /var/www
sudo chmod g+w -R /var/www 
usermod -a -G www-data your-user

-1

サイトにフレームワークを使用していますか?Drupal、Wordpressなど?たとえば、Drupalには、ブラウザーの対話を介してアップロードするツールがあります。

Sambaを調べましたか?Samba共有をセットアップし(Webにはそれらのリソースが大量にあります)、Windowsエクスプローラーを使用して単純に開いたり、編集したり、保存したり、削除したりできます。/ var / wwwを共有するように設定し、「ネットワークドライブ」をウィンドウにマップします。

これは仕事ですか、それとも家庭環境ですか?自宅のように聞こえますが、作業環境にいる場合は、SambaとActive DirectoryをSimilar-Openなどのツールとペアリングできます。ITショップのユーザーがAD資格情報を介してサーバー(LinuxまたはWebサイト)のいずれかの側にログインできるように、サーバー/ Webサイトをセットアップしています。

Mercurialのようなものを調べることもお勧めします。サーバー上にリポジトリを作成し、TortiseHGなどを介してWindowsと同期します。私はそれがrsyncに似ていると思いますが、バージョン管理、バックアップ、配布機能などがあります(SVN、Mercurial、Gitなどのすべてのオプション)



-2

このようなことをした後ですか

rsync -az --rsh "ssh" --rsync-path "sudo rsync" ~/website ubuntu@REMOTE-IP:/var/www

1
ルートとしてログインすると、深刻なやり過ぎのように見えます。
キーズクック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.