我应该将 /var/www 目录符号链接到我的主目录吗?

我应该将 /var/www 目录符号链接到我的主目录吗?

我刚刚安装了带有 LAMP 设置的 Ubuntu Server 10.04。我想在那里托管一个网站,但我不确定哪种方式是获取/编辑服务器上文件的最佳方式。谷歌搜索提供了许多选项,但我不确定哪种方式最好?

除非有更好的选择,否则我想在另一台电脑(Windows 或 Linux)上创建页面并使用 SFTP 将更改同步到服务器 - 但我是否应该对 ~/ 中的符号链接文件夹执行此操作或通过更改 /var/www/ 文件夹的权限来执行此操作?

答案1

每个设置都不同。对我来说,我在一台服务器上有很多用户,每个用户都托管网站,而对于你来说,你可能不需要在系统上创建多个用户。但是,如果你在这台服务器上管理多个网站,这种设置将帮助你以比标准 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 用户(我鄙视的用户)拥有任何所有权的需要。

首先确保服务器上安装了 Apache 和所有其他服务。确保它们至少可以正常工作。之后我建议安装suphp-common 和所需的 libapache2-mod-suphp 模块(更多信息:什么是 PPA 以及如何使用它们?)。然后,安装完成后,使用以下命令激活 suPHP 和 suexeca2enmod

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

虽然设置起来似乎很麻烦,但在我看来,获得的灵活性远远超过了设置时间。虽然您只需要一个单用户网络服务器,但将来如果您想要除单用户网络服务器之外的其他任何服务器,则需要执行进一步的操作(或完全放弃安全性)才能实现。

答案2

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 文件夹并将您的文件放在那里。

答案3

我使用 webdav。在 Ubuntu Server 上安装它非常容易。如果你已经安装了 apache,那么你就快完成了。只需sudo a2enmod dav; service apache2 restart。你需要对虚拟站点进行一些配置。这是我在生产中使用的示例:

<VirtualHost *>
    ServerName webdav.mysite.com
    ServerAdmin [email protected]

    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 [email protected]

    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

这里发生的事情是您创建了两个虚拟站点。一个是 www.mysite.com,另一个是 webdav.mysite.com。webdav.mysite.com 上的 PHP 已被禁用,这很重要。

现在,您可以在 Ubuntu、Windows 和 MacOS 上通过 http 访问您的网站。这三者都内置了 webdav 支持。以下是有关在 Ubuntu 中添加 webdav 网络位置

答案4

您的网站是否使用了框架?Drupal、Wordpress 等?例如,Drupal 有通过浏览器交互进行上传的工具。

您研究过 Samba 吗?您可以设置 Samba 共享(网络上有大量资源可供参考),然后只需使用 Windows 资源管理器即可打开/编辑/保存/删除。设置要共享的 /var/www,然后将“网络驱动器”映射到 Windows。

这是工作环境还是家庭环境?听起来像是在家,但如果您是在工作环境中……您可以使用 Likewise-Open 等工具将 Samba 与 Active Directory 配对。我有一个服务器/网站设置,以便 IT 商店中的人员可以通过他们的 AD 凭据登录到服务器的任一侧(Linux 或网站)。

我还建议研究一下 Mercurial 之类的东西。在服务器上创建一个存储库,并通过 TortiseHG 之类的东西与 Windows 同步。我认为它类似于 rsync,但你可以进行版本控制、备份、分发等(SVN、Mercurial、Git 等所有选项)

相关内容