问题描述
我刚刚安装了带有 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
文件夹(我有这个原因,主要是域可以拥有web 文件在公共领域之外)。随意修改这个结构,只要记住在这篇文章中进行这些更改。
其次,我托管了很多 PHP 站点,所以我在配置中使用了 suPHP。默认情况下,标准存档包没有启用正确的编译标志,导致 suPHP 版本的安全性较低。我已经制作了我自己的 suPHP 包,我在我的服务器上使用它,下面的安装说明。 suPHP 允许您定义应该执行的用户 PHP 脚本(其中包括:每个站点的自定义 php.ini 等)。我还为 Apache 启用了 suExec——进一步消除了对 www-data 用户(我鄙视的用户)拥有任何所有权的需要。
首先确保您的服务器上安装了 Apache 和所有其他服务。确保它们至少在工作。之后,我建议安装 suphp-common and the required libapache2-mod-suphp module (更多信息: What are PPAs and how do I use them? )。然后,在安装之后,使用 a2enmod
激活 suPHP 和 suexec
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>
这将为该域、文档根目录以及该域运行的所有其他基本必需品设置日志记录。我将这些文件放在通常命名为 [USER]-[DOMAIN]
的 /etc/apache2/sites-available/
中,并使用 a2ensite
启用/禁用它们,如下所示:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
每次修改配置文件后,Apache 都需要重新加载
sudo /etc/init.d/apache reload
虽然设置所获得的灵活性似乎很多,但在我看来,这远远超过了设置时间。尽管您只需要一个单用户 Web 服务器,但将来如果您想要除单用户 Web 服务器以外的任何东西,您将需要执行进一步的操作(或者只是一起放弃安全性)才能做到这一点。
次佳办法
Sftp 很容易安装。只需安装包 openssh-server
,您将拥有 sftp。如果您可以从 Internet 访问,请确保您的用户有一个正确的密码。 (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 文件夹并将文件放在那里来发布页面。