Answers:
每种设置都不同。对我来说,我在一个服务器上有很多用户,每个服务器都托管网站,对您来说,您可能不需要在系统上创建多个用户。但是,如果您在此服务器上管理多个网站,则此设置将帮助您以比标准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数据用户(我鄙视的用户)拥有任何所有权的需求。
首先,确保您已在服务器上安装了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服务器以外的任何其他东西,您将需要执行进一步的操作(或者只是一起放弃安全性)。
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文件夹并将文件放置在此处。
我使用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
。
这里发生的是您已经创建了两个虚拟站点。一个是www.mysite.com,另一个是webdav.mysite.com。重要的是,已在webdav.mysite.com上禁用了PHP。
现在,您可以在Ubuntu,Windows和MacOS上通过http访问您的站点。这三个都内置了webdav支持。以下是在Ubuntu中添加webdav网络位置的说明。
mkdir -p /srv/mysite/www; chown -R www-data.www-data /srv/mysite
。
您是否在为您的网站使用任何框架?Drupal,Wordpress等?例如,Drupal具有通过浏览器交互上传的工具。
你看过桑巴舞了吗?您可以设置Samba共享(网络上有大量的资源可供使用),只需使用Windows资源管理器即可打开/编辑/保存/删除。设置要共享的/ var / www,然后将“网络驱动器”映射到Windows。
这是工作环境还是家庭环境?听起来像家,但是如果您处于工作环境中,则可以将Samba与Active Directory搭配使用类似打开的工具。我有一个服务器/网站设置,以便IT商店中的用户可以通过其AD凭据登录到服务器的任一端(Linux或网站)。
我还建议您研究类似Mercurial的产品。在服务器上创建一个存储库,并通过TortiseHG之类的工具与Windows同步。我认为它就像rsync,但是您将拥有版本控制,备份,分发等功能(SVN,Mercurial,Git等所有选项)
您可以使用sshfs。https://help.ubuntu.com/community/SSHFS