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

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

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

每个设置都不同。 对我来说,每个托管网站的服务器上都有很多用户,对于您来说,您可能不需要在系统上创建多个用户。 但是,如果您在此服务器上管理多个网站,此设置将帮助您以比标准LAMP设置更容易的方式管理,配置和调试每个域。 为了实现这一点,我利用Apache的几个设备来解决权限错误。

首先,这是我使用的文档结构:

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

每个用户都有自己的帐户和域文件夹(我将其添加到/etc/skel因此每次都会创建。每个域都有自己的文件夹,在domains文件夹中有一个html文件夹(我有我的理由,主要是这样的域名可以包含公共领域之外的网络文件。。您可以根据需要随意修改此结构,只需记住在此post中进行这些更改。

其次,我托管了很多PHP站点,所以我在配置中使用了suPHP。 默认情况下,标准存档包没有启用正确的编译标志,从而导致suPHP的安全性较低。 我已经制作了自己的suPHP包,我在服务器上使用,下面是安装说明。 suPHP允许您定义应该执行哪些用户PHP脚本(其中包括:每个站点的自定义php.ini等)。 我还为Apache启用了suExec – 进一步消除了对www-data用户(我鄙视的用户)拥有任何所有权的需要。

首先确保您的服务器上安装了Apache和所有其他服务。 确保他们至少工作。 之后我建议安装suphp-common和必需的libapache2-mod-suphp模块 (更多信息: 什么是PPA以及如何使用它们? )。 然后,在这些安装之后,使用a2enmod激活suPHP和suexec

 sudo a2enmod suphp sudo a2enmod suexec sudo a2dismod php5 sudo /etc/init.d/apache restart 

接下来将是配置文件。 我已经制作了各种工具,每次添加新网站时都会自动生成配置文件; 但是,这是我使用的基本模板:

  ServerAdmin [EMAIL] ServerName [DOMAIN] ServerAlias www.[DOMAIN] [DOMAIN] DocumentRoot /home/[USER]/domains/[DOMAIN]/html  Options Indexes FollowSymLinks MultiViews AllowOverride all  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  

这将为该域,文档根目录以及域运行的所有其他基本必需项设置日志记录。 我将这些文件放在/etc/apache2/sites-available/通常命名为[USER]-[DOMAIN]并使用a2ensite启用/禁用它们, a2ensite所示:

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

每次修改配置文件后,都需要重新加载Apache

 sudo /etc/init.d/apache reload 

虽然设置获得的灵活性可能看起来很多,但在我看来,远远超过了设置时间。 虽然您只需要一个用户网络服务器,但如果您想要除了单个用户网络服务器以外的任何其他网络服务器,您将需要执行进一步的操作(或者只是将安全性全部放在一起)才能执行此操作。

Sftp非常容易安装。 只需安装openssh-server软件包即可获得sftp。 如果您可以从互联网上获取密码,请确保您的用户有一个好的密码。 (8个以上的字符,不是字典单词,有符号和数字)。

对于权限,我通常这样做
sudo adduser www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rw /var/www
然后,您应该能够通过连接sftp(使用您的用户名和密码)发布页面,然后转到/ var / www文件夹并将文件放在那里。

我用webdav。 在Ubuntu Server上安装非常简单。 如果你安装了apache,你几乎已经完成了。 只是sudo a2enmod dav; service apache2 restart sudo a2enmod dav; service apache2 restart 。 您需要对虚拟站点进行一些配置。 这是我在制作中使用的一个例子:

  ServerName webdav.mysite.com ServerAdmin webmaster@mysite.com DocumentRoot /srv/mysite DAVLockDB /var/lock/apache2/DAVLock  Order allow,deny Allow from all Dav On DAVMinTimeout 600 DAVDepthInfinity On AuthName "mysite login" AuthType Basic AuthUserFile /srv/mysite/.htpassword Require valid-user  php_admin_value engine off   ServerName mysite.com ServerAlias *.mysite.com ServerAdmin webmaster@mysite.com DocumentRoot /srv/mysite/www  Order allow,deny Allow from all  ScriptAlias /cgi-bin/ /srv/mysite/cgi-bin/  

你可以把它放在/ srv / etc / apache2 / sites-available / mysite中,然后做sudo a2ensite mysite; sudo service apache2 reload sudo a2ensite mysite; sudo service apache2 reload

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

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

我会将/ 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 

您是否在为您的网站使用任何框架? Drupal,Wordpress等? 例如,Drupal具有通过浏览器交互上传的工具。

你看过Samba了吗? 您可以设置Samba共享(并且Web上有大量资源),只需使用Windows资源管理器即可打开/编辑/保存/删除。 设置/ var / www进行共享,然后将“网络驱动器”映射到Windows。

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

我也建议调查像Mercurial这样的东西。 在服务器上创建一个存储库,并通过TortiseHG之类的东西与Windows同步。 我认为这就像rsync,但你会有版本,备份,分发能力等(SVN,Mercurial,Git等所有选项)

您可以使用sshfs。 https://help.ubuntu.com/community/SSHFS

你喜欢这样的事吗?

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