提示:服务器指南

要查找与您的特定版本相关的Ubuntu服务器指南,请访问:https://help.ubuntu.com/,选择您的Ubuntu版本,然后单击Ubuntu服务器指南。有关Ubuntu Server的最新LTS版本(14.04.1 LTS),请访问https://help.ubuntu.com/14.04/serverguide/index.html

父页面:编程应用程序

这是为了帮助人们设置和安装(L(左)菊粉-A类帕奇-M(M)ySQL(ySQL)-P(P)Ubuntu中的HP)服务器,包括Apache 2、PHP 5和MySQL 4.1或5.0。

在Ubuntu 10.04及更高版本中安装默认LAMP堆栈

首先刷新包索引。。。

$sudo apt-get更新

…然后安装灯组:

$sudo apt-get安装lamp-server^

注意末尾的插入符号(^)。

重新开始:如何移除LAMP堆栈

要拆下LAMP堆栈,请拆下以下包装:

  • 注意:这假设您没有其他程序需要这些包中的任何一个。您可能希望首先模拟此删除,并且只删除不会导致删除所需内容的包。

apache2 apache2-mpm-prefork apache2-utils apache2.2通用libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libnet-daemon-perl库plrpc-perl libpq5 mysql-client-5.5 mysql-common-mysql-server mysql-server-5.5 php5-common php5-mysql

要同时删除debconf数据,请在删除时使用清除选项。要删除可能对apache进行的任何配置,请在删除包后手动删除/etc/apache2目录。

您可能还想清除这些软件包:

mysql客户端核心-5.5 mysql服务器核心-5.5

安装Apache 2

要只安装apache2 Web服务器,请使用任何方法要安装:

电容器2

它需要重新启动才能工作:

$sudo/etc/init.d/apache2重启

$sudo服务apache2重启

检查Apache 2安装

使用web浏览器,转到URIhttp协议://localhost:如果您读到“It works!”(文件/var/www/index.html的内容),这证明Apache可以工作。

Apache疑难解答

如果出现此错误:

apache2:无法确定服务器的完全限定域名,对使用127.0.0.1服务器名称

Ubuntu 13.10版+

使用命令行中的“sudo nano”或桌面上的“gksudo gedit”等文本编辑器创建新文件,

$sudo nano/etc/apache2/conf-available/fqdn.conf

$gksu“gedit/etc/apache2/conf-available/fqdn.conf”

然后添加

服务器名称本地主机

保存到该文件,并通过运行以下命令启用新的配置文件。

sudo a2enconf fqdn

这一切都可以通过以下命令在单个命令中完成:

$echo“ServerName localhost”|sudo tee/etc/apache2/conf-available/fqdn.conf&&sudo a2enconf fqdn

Ubuntu 13.04及以下版本

在Apache的旧版本中,配置文件位于不同的目录中。使用命令行中的“sudo nano”或桌面上的“gksudo gedit”等文本编辑器创建新文件,

$sudo nano/etc/apache2/conf.d/fqdn

$gksu“gedit/etc/apache2/conf.d/fqdn”

然后添加

服务器名称本地主机

到文件并保存。这一切都可以通过以下命令在单个命令中完成:

$echo“ServerName localhost”|sudo tee/etc/apache2/conf.d/fqdn

虚拟主机

Apache2具有站点的概念,站点是Apache2将读取的独立配置文件。这些在中提供/etc/apache2/站点可用。默认情况下,有一个站点可用,称为000-默认。这是您浏览到时将看到的内容http://localhost(本地主机)网址:http://127.0.0.1。您可以使用许多不同的站点配置,并且只激活您需要的配置。

例如,我们希望默认站点为/主页/用户/公共html/。要做到这一点,我们必须创建一个新站点,然后在Apache2中启用它。

要创建新站点,请执行以下操作:

  • 复制默认网站作为起点。sudo cp/etc/apache2/sites-available/000-default.conf/etc/pache2/sites-available/mysite.conf

  • 在命令行上的文本编辑器“sudo nano”或“gksudo gedit”中编辑新配置文件,例如:gksudo gedit/etc/apache2/sites-available/mysite.conf

  • 更改网站根目录指向新位置。例如,/主页/用户/公共html/

  • 在文件:/etc/apache2/apache2.conf中,将号码簿指令,替换<目录/var/www/><目录/home/user/public_html/>

  • 您还可以为每个站点设置单独的日志。为此,请更改错误日志自定义日志指令。这是可选的,但如果您有多个站点,则很方便

  • 保存文件

现在,我们必须停用旧网站,并激活我们的新网站。Ubuntu提供了两个小实用程序来解决这个问题:a2ensite(帕奇2个能够的网站)和一个持不同政见者(帕奇2个dis能够的网站).

$sudo a2dissite 000-默认&&sudo a 2ensite mysite

最后,我们重新启动Apache2:

$sudo/etc/init.d/apache2重启

如果您尚未创建/主页/用户/公共html/,您将收到一条警告消息

若要测试新网站,请在中创建一个文件/主页/用户/公共html/:

$echo'<b>你好!它正在工作</b> '>/home/user/public_html/index.html

最后,浏览至http://localhost(本地主机)/

安装PHP 5

仅安装PHP5。使用任何方法安装软件包

libapache2-mod-php5

通过执行以下操作启用此模块

$sudo a2enmod php5(美元)

它创建一个指向/etc/apache2/mods-available/php5的符号链接/etc/aapache2/mods-enabled/php5。

除非您使用仅以“<?”开头而不是“<?PHP”开头的弃用PHP代码(这非常不可取),否则请以root身份打开文件/etc/php5/apache2/PHP.ini,查找行“短开标记=On”,将其更改为“short_open_tag=Off”(不包括引号),并添加一行注释(以分号开头),说明更改的原因、作者和日期。这样,如果以后希望将某些XML或XHTML文件用作PHP,则“<?PHP将忽略xml“标记,而不会将其视为PHP代码错误。

再次启动Apache 2:

$sudo服务apache2重启

检查PHP 5安装

在/var/www中,创建一个名为“test.php”的文本文件,授予世界(或至少Ubuntu用户“apache”)读取该文件的权限,在其中写入唯一一行:“<?php phpinfo();?>”(不带引号),然后使用web浏览器转到URI“http://localhost/test.php“:如果您能看到PHP5配置的描述,它证明PHP5可以与Apache一起工作。

PHP 5疑难解答

您的浏览器是否询问您是否要下载php文件而不是显示它?如果Apache在您重新启动后没有真正解析php,请安装libapache2-mod-php5。它是在安装时安装的第5页包,但可能被需要运行不同版本php的包无意中删除。

如果苏多a2enmod php5返回“$此模块不存在!”,您应该清除(而不仅仅是删除)利比亚2月2日至5日打包并重新安装。

再次测试站点之前,请确保清除浏览器的缓存。在Firefox 4中执行此操作:编辑首选项…隐私历史记录:清除最近的历史记录详细信息:在“要清除的时间范围”中选择“所有内容”,只选中“缓存”,然后单击“立即清除”。

记住,要调用Apache,web浏览器中的URI必须以“网址://“。如果它以”文件://“,则浏览器直接读取文件,不使用Apache,因此您可以获得(X)HTML和CSS,但没有PHP。如果您没有配置任何主机别名或虚拟主机,则本地URI以”http://localhost(本地主机)", "http://127.0.0.1“或网址://“然后是您的IP号码。

如果问题仍然存在,请检查PHP文件授权(至少Ubuntu用户“apache”可以读取),并检查PHP代码是否正确。例如,复制PHP文件,将整个PHP文件内容替换为“<?PHP phpinfo();?>”(不带引号):如果在web浏览器中获得PHP测试页面,那么问题出在PHP代码中,而不是Apache或PHP配置中,也不是文件权限中。如果这不起作用,则是文件授权、Apache或PHP配置、缓存未清空或Apache未运行或未重新启动的问题。使用web浏览器中该测试文件的显示来查看影响PHP行为的文件列表。

php.ini开发与生产

标准安装后,php配置文件/etc/php5/apache2/php.ini等设置为“生产设置”,这意味着除其他外,不会显示错误消息。因此,如果您在php源文件中出现语法错误,apache服务器将返回HTTP 500错误,而不是显示php语法错误调试消息。

如果要调试脚本,最好使用“开发”设置。开发和生产设置ini都位于/usr/share/php5中/

/usr/share/php5/php.ini-开发/usr/share/php5/php.ini生产

这样你就可以比较它们,看看它们之间的确切区别。

要激活“开发”设置,只需备份原始php.ini

sudo mv/etc/php5/apache2/php.ini/etc/phb5/apache2/php.ini.bak

并创建指向所需设置的符号链接:

sudocp-s/usr/share/php5/php.ini-development/etc/php5/apache2/php.ini

或者您当然也可以编辑/etc/php5/apache2/php.ini等如果你愿意,直接靠你自己。

用户目录中的PHP

根据这个博客,更新版本的Ubuntu do默认情况下为用户目录启用PHP(您的公共html文件夹)。有关如何将其改回的说明,请参阅博客。

使用PHP 5安装MYSQL

使用任何方法安装

mysql服务器libapache2 mod auth mysql php5 mysql

安装PHP后

您可能需要增加PHP对脚本施加的内存限制。编辑/etc/php5/apache2/php.ini文件并增加内存限制价值。

安装MySQL后

设置mysql绑定地址

访问数据库之前来自其他您必须更改其绑定地址。请注意,这可能是一个安全问题,因为您的数据库可以由您自己的计算机以外的其他计算机访问。如果需要mysql的应用程序正在同一台机器上运行,请跳过此步骤。

类型:

$sudo nano/etc/mysql/my.cnf

并更改线条:

bind-address=本地主机

到您自己的内部ip地址,例如192.168.1.20

绑定地址=192.168.1.20

如果你的ip地址是动态的,你也可以注释掉bind-address行,它将默认为你当前的ip。

如果您尝试在不更改绑定地址的情况下进行连接,则会收到“Can not connect to mysql error 10061”(无法连接到mysql错误10061)。

设置mysql root密码

在通过控制台访问数据库之前,您需要键入:

$mysql-u根

在mysql控制台中键入:

$mysql>SET PASSWORD FOR'root'@'localhost'=密码('yourpassword');

成功的mysql命令将显示:

查询正常,0行受影响(0.00秒)

Mysql命令可以跨越多行。不要忘记以分号结束mysql命令。

注:如果您已经为mysql根目录设置了密码,则需要使用:

$mysql-u根-p

(您忘记mysql-root密码了吗?请参阅MySQL密码重置.)

创建mysql数据库

$mysql>CREATE DATABASE数据库1;

创建mysql用户

要创建一个具有所有权限的新用户(仅用于故障排除),请在mysql提示符下键入:

$mysql>使用授权选项将*.*上的所有特权授予由“yourpassword”标识的“yourusername”@“localhost”;

要创建权限较少的新用户(应适用于大多数web应用程序),该用户只能使用名为“database1”的数据库,请在mysql提示符下键入:

$mysql>数据库上的GRANT SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER、CREATE TEMPORARY TABLES、LOCK TABLES 1.*到'yourusername'@'localhost'由'yourpassword'标识;

您的用户名您的密码可以是你喜欢的任何东西。数据库1是用户可以访问的数据库的名称。本地服务器是访问数据库的位置。您可以将其更改为“%”(或主机名或ip地址),以允许从每个位置(或仅从特定位置)连接到数据库。注意,这可能是一个安全问题,只能用于测试目的!

要退出mysql提示符,请键入:

$mysql>\q

由于现在设置了mysql root密码,如果您需要再次使用mysql(作为mysql根),您需要使用:

$mysql-u根-p

然后在提示下输入密码。

备份设置

请说一下mysql存储数据库信息的目录以及如何配置备份

或者

设置mysql根密码和创建数据库的方法不止一种。例如mysqladmin(mysqladmin)可用于:

$mysqladmin-u root-p密码yourpassword

$mysqladmin-u root-p创建数据库1

mysqladmin(mysqladmin)是默认LAMP安装提供的命令行工具。

Phpmyadmin和mysql-workbench

所有mysql任务,包括设置root密码和创建数据库,都可以通过图形界面使用phpmyadmin公司mysql-工作台.

要安装其中一个或两个,首先启用universe存储库

使用任何方法安装

php管理程序

Phpmyadmin和mysql-workbench故障排除

如果出现blowfish_secret错误: 在文件/etc/phpmyadmin/blowfish_secret.inc.php中选择并设置加密短语,然后将该行(而不是php标记)复制到文件/etc/phpmyadmin/config.inc.php中,否则将收到错误消息。

如果您在访问时出现404错误http://localhost/phpmyadmin网址: 您需要配置apache2.conf以使用Phpmyadmin。

$gksudo gedit/etc/apache2/apache2.conf

在文件底部包含以下行,保存并退出。

$包括/etc/phpmyadmin/apache.conf

替代方法:从源安装phpMyAdmin

请参阅数据库管理有关如何从源安装phpmyadmin的说明的页面:

Mysql-工作台

Mysql-workbench在本地桌面上运行。使用任何方法安装

mysql-工作台

有关更多信息

2.9.3. 保护初始MySQL帐户来自MySQL参考手册值得一读。

编辑Apache配置

您可能希望当前用户成为PHP页面管理员。为此,请编辑Apache配置文件:

$gksudo“gedit/etc/apache2/envvars”

搜索以“APACHE_RUN_USER”和“APACCHE_RUN_GROUP”开头的字符串,并将名称更改为当前使用的用户名和组名。然后需要重新启动Apache。(请看下一章关于apache命令的内容)

与用户网站(通过localhost/~username访问)相关的配置选项位于/etc/apache2/mods-available/userdir.conf中,并使用a2enmod和a2dismod命令进行管理。

安装suPHP

suPHP是一种使用所有者的权限执行PHP脚本的工具。它由一个Apache模块(mod_suphp)和一个setuid根二进制文件(suphp)组成,Apache模型调用该文件来更改执行PHP解释器的进程的uid。

注意:suPHP加强了安全性,并有助于避免在开发环境下多个用户编辑站点文件时出现文件权限问题,但它也需要更多的内存和CPU使用,这可能会在某些情况下降低服务器性能。

仅安装suPHP。使用任何方法安装软件包

libapache2-mod-suphp

通过执行以下操作启用此模块

sudo a2enmod suphp公司

然后在命令行中使用“sudo nano”或桌面上的“gksudo gedit”等文本编辑器来编辑此文件

sudo nano/etc/apache2/mods可用/php5.conf

gksu“gedit/etc/apache2/mods-available/php5.conf”

在内容顶部创建一个新的空行,然后添加

<目录/usr/share>

在内容的底部做一个新的空行,然后添加

</目录>

保存更改

出于安全原因,我们需要向suPHP指定允许执行脚本的文档路径,请使用命令行中的“sudo nano”或桌面上的“gksudo gedit”等文本编辑器来编辑此文件

sudo nano/etc/suphp/supp.conf

gksu“gedit/etc/suphp/suphp.conf

找到值“docroot”并指定站点文件的文档路径,例如:

docroot=/var/www/

该值仅将脚本执行限制为“/var/www/”中的文件

docroot=/var/www/:${HOME}/public_html

该值将脚本执行限制为“/var/www/:${home}/public_html”中每个配置用户的自定义主文件夹中的文件

对于本教程,我们将使用此值

docroot=/home/user/public_html/

这与本文档之前设置的Apache目录指令相同

保存更改

要重新启动Apache,请键入终端

sudo/etc/init.d/apache2重启

现在让我们创建一个测试脚本,看看suPHP在您的终端类型中是否正常工作

echo“<?php echo'whoim='.exec('/usr/bin/whoami');?>”|tee/home/user/public_html/whomi.php

该命令创建一个快速php测试文件,以显示当前执行脚本的用户

打开浏览器并导航到“localhost/whomi.php”,浏览器很可能会显示“500”服务器错误,这是因为suPHP不允许过多的文件和文件夹权限,也不允许混合文件和文件夹所有权,要在终端中更正此类型

sudo查找/home/user/publichtml/-type f-exec chmod 644{}\;sudo查找/home/user/publichtml/-type d-exec chmod 755{}\;sudo chown用户:group-R/home/user/public_html/

这些命令强制执行安全、正确的文件和文件夹权限,并为所有这些命令设置正确的用户和组所有权

现在打开浏览器并导航到“localhost/whomi.php”,如果一切正常,您应该看到执行脚本的文件所有者的名称,而不是“www-data”,除非您指定了这样做

运行、停止、测试和重新启动Apache

使用以下命令运行Apache:

$sudo/usr/sbin/apache2ctl启动

要阻止它,请使用:

$sudo/usr/sbin/apache2ctl停止

要测试配置更改,请使用:

$sudo/usr/sbin/apache2ctl配置测试

最后,要重新启动它,请运行:

$sudo/usr/sbin/apache2ctl重启

或者,您可以通过安装来使用图形界面拉帕切或者更简单本地主机标识符.

使用Apache

您可以通过键入127.0.0.1或http://localhost(本地主机)(默认情况下,它将在端口80上侦听)。默认情况下,apache服务器页面的目录是/var/www。它需要root访问权限才能将文件放入。一种方法是在终端中以root身份启动文件浏览器:

$gksudo nautilus公司

如果你想让/var/www成为你自己的。(仅用于非生产性web服务器-这不是最安全的方式。)

$sudo chown-R$用户:$USER/var/www

状态

要检查PHP安装的状态,请执行以下操作:

$gksudo“gedit/var/www/testphp.php”

并插入以下行

<?php phpinfo();?>

在web浏览器上查看此页面http://yourserveripaddress/testphp.phphttp://localhost/testphp.php

保护Apache

如果您只想将Apache安装作为开发服务器运行,并想阻止它侦听传入的连接尝试,那么这很容易做到。

$gksudo“gedit/etc/apache2/ports.conf”$密码:

更改ports.conf,使其包含:

听127.0.0.1:80

保存此文件,然后重新启动Apache(请参阅上文)。现在,Apache将只服务于您的主域,http://127.0.0.1http://localhost(本地主机).

密码-保护目录

有两种方法可以对特定目录进行密码保护。推荐的方法包括编辑/etc/apache2/apache2.conf.(为此,您需要root访问权限)。另一种方法是编辑.ht访问要保护的目录中的文件。(为此,您需要访问该目录)。

使用.htaccess密码保护目录

请参见启用使用ApacheHtaccessFiles

警告:至少在某些版本的Ubuntu上,.ht访问默认情况下,文件将不起作用。请参见启用使用ApacheHtaccessFiles以获取有关启用它们的帮助。

缩略图

如果您将web浏览器指向一个目录(而不是特定文件),并且该目录中没有“index.html”文件,Apache将动态生成一个索引文件,列出该目录中的所有文件和文件夹。每个文件夹旁边都有一个文件夹的小图标。

放置特定图像的缩略图(而不是通用的“图像图标”)在每个图像文件(.jpg、.png等)旁边:

…todo:在此处添加如何制作缩略图的说明,可能使用Apache::AutoIndex 0.08阿帕奇::专辑0.95...

已知问题

Skype不兼容

视频电话使用端口80进行传入呼叫,因此可能会阻止Apache。解决方案是更改其中一个应用程序中的端口。通常,端口81是空闲的,工作正常。在中更改端口号视频电话转到菜单“工具”>“选项”,然后单击“高级”选项卡,然后在传入呼叫端口的框中写下您的首选项。

其他Apache选项

更多信息

ApacheMySQLPHP(上次编辑日期:2015-05-01 03:09:35c-73-149-249-203)