Apache虚拟主机指南(注:好像是从ubuntu官网wiki摘来的)

http://wiki.ubuntu.org.cn/Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97

启用与停用站点的方法

a2ensite 站点名
a2dissite 站点名

[编辑]基于名字的(通过域名来区分)的虚拟主机

安装好apache以后默认有一个叫default的虚拟主机。新建虚拟主机时可以直接复制默认虚拟主机的配置文件,在其基础上修改新虚拟主机的配置参数。

#copy /etc/apache2/site-available/default /etc/apache2/site-available/sitename

[编辑]测试环境

  • 操作系统:Ubuntu Server 12.04 LTS
  • 测试机地址:10.39.6.59
  • 测试机域名:*.example.com

[编辑]基本配置

我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/[^.#]*(12.04版本里无[^.#]*)

这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:

<VirtualHost *:80>
ServerName www.firehare.com
ServerAdmin admin@mail.firehare.com

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:

  • `NameVirtualHost :80`:表示我们要做的是一个基于名称的虚拟主机,监听的端口为80.
  • `<VirtualHost *:80> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置。注意如果上面的字段指定了端口号,这里也要指定
  • `ServerName www.firehare.com`:设置虚拟主机的域名,www.firehare.com可以是你注册的任何域名
  • `ServerAdmin admin@mail.firehare.com`:设置该虚拟主机网管员的邮件
  • `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径
  • `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息
  • `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息

这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。

[编辑]进一步说明

为了说明清楚 我们再添加一个虚拟主机站点 example.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:

<VirtualHost *:80>
ServerName edunuke.example.com
ServerAdmin edunuke@mail.example.com
DocumentRoot "/var/www/edunuke/"
ErrorLog "/var/log/apache2/edunuke_errors.log"
CustomLog "/var/log/apache2/edunuke_accesses.log" common    
</VirtualHost>

设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:

sudo a2ensite edunuke

这样的话,虚拟主机站点 edunuke.example.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:

sudo /etc/init.d/apache2 restart  这里可以使用reload 重新加载

这样你在浏览器上输入 edunuke.example.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:

sudo a2dissite edunuke
sudo /etc/init.d/apache2 restart

即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。

[编辑]高级配置

上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:

sudo a2enmod rewrite
sudo a2enmod proxy

然后,添加虚拟主机站点 plone.example.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:

<VirtualHost plone.example.com:80>
ServerName plone.example.com
ServerAdmin plone@mail.example.com
ErrorLog "/var/log/apache2/plone_errors.log"
CustomLog "/var/log/apache2/plone_accesses.log" common

RewriteEngine on
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]

<Proxy *>
Order Deny,Allow
Deny from all
Allow from all
</Proxy>

</VirtualHost>

这样就安装好了 plone.example.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.example.com 就可以重定向到 Zope+Plone 站点去了。

[编辑]基于端口的虚拟主机

<VirtualHost *> DocumentRoot /var/www/work/phabricator/webroot RewriteEngine on RewriteRule ^/rsrc/(.*) - [L,QSA] RewriteRule ^/favicon.ico - [L,QSA] RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA] </VirtualHost>

ubuntu 安装LAMP和phpmyadmin(注:转载,可能不好使)

这个是我很早之前看到并使用的方法,现在使用的是lnmp,也是单独安装的,现在这个文章很可能已经不好使了!!!!

为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时,我更偏爱在不受干扰的情况下,在我那台计算机上的开发环境下进行开发。我宁愿所犯的错误大部分是别人看不到的,而不是被互联网上的所有人全看到。为了能有这种私密的开发环境,我安装了一套LAMP系统。顺便说一下,要是你对LAMP不熟悉,,它代表Linux、Apache、MySQL和php(及/或Perl)。 LAMP是互联网上最常见的Web主机托管平台之一,所以它是搭建和测试网站的出色环境之一。

遵照下面这些逐步介绍的指示说明,即可在Ubuntu 12.04(Precise Pangolin)上安装和配置LAMP。这个过程还经过了测试,在Linux Mint 13/14/15Ubuntu 12.10(Quantal Quetzal)和Ubuntu 13.04 Raring Ringtail上屡试不爽。如果你有速度相当快的宽带连接,应该用不了半小时就能搞定。

在Ubuntu上安装LAMP

Ubuntu的开发人员让人们很容易安装和配置LAMP软件包,只要借助一个终端命令。所以,打开终端窗口,让我们开始入手吧。

    1.sudo apt-get install lamp-server^

是的,你没有看错。不要漏了末尾的那个脱字符号(^)。要是少了这个脱字符号,这个命令就无法运行。就是这么神奇!

在Ubuntu上安装LAMP

apt软件包管理器现在会显示需要安装、等待确认的软件包。输入回车键,确认并继续安装。

安装LAMP软件包

下载软件包花了一点时间后,系统会提示你为MySQL的根用户设置密码。

设置MySQL根密码

输入你想用于MySQL的密码。此处不能空着。系统会提示你第二次输入,以确认密码。

确认MySQL根密码

确认密码后,apt会继续安装剩余的软件包。

剩余LAMP软件包的安装

你的LAMP安装现已完成。哇,就是这么简单!现在只剩下几个步骤来进行配置,以便你可以轻松使用系统。

测试Apache

打开Web浏览器窗口,输入地址http://localhost/。你应该会看到一个网页显示"It Works!"。

Apache可正常工作

测试php

你已确认了Apache Web服务器可正常工作,于是你应该确保所安装的php正常工作。为此,你需要在/var/www中创建一个名为testing.php的文件。你可以以根用户的身份使用常用的文本编辑器,也可以使用下面这个终端命令:

    1.echo "<?php phpinfo(); ?>" | sudo tee /var/www/testing.php

之后,你需要重新启动Apache Web服务器。

    1.sudo service apache2 restart

回到Web浏览器,输入地址http://localhost/testing.php/,你应该会看到一个网页显示关于所安装的php的信息。

php信息

搞定Apache完全合格域名

你可能已注意到来自Apache的错误信息,该信息与服务器的完全合格域名有关。

    1.apache2: Could not reliably determine the server's fully qualified domain
 2.name, using 127.0.1.1 for ServerName

这不是什么大问题,但要是该问题让你很恼心,你可以用下面这个命令来搞定它。

    1.echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

现在,重新装入Apache Web服务器。

 1.sudo service apache2 reload

你应该再也不会看到这个错误信息了。

配置MySQL

由于本教程旨在搭建一个本地Web开发环境,就需要将MySQL绑定至本地主机IP地址。默认情况下,这个地址在你的系统上应该是127.0.0.1。为了以防万一,你可以使用这些命令来确认该地址。

    1.cat /etc/hosts | grep localhost

你应该会看到类似这样的内容:

 1.127.0.0.1 localhost
 2.::1     ip6-localhost ip6-loopback

现在你应该确认你在MySQL的my.cnf文件中有正确的绑定地址。

    1.cat /etc/mysql/my.cnf | grep bind-address

你应该会看到:
       1.bind-address = 127.0.0.1

要是绑定地址与为你系统上的本地主机所设的那个地址不匹配,需要以根用户的身份编辑/etc/mysql/my.cnf,加以纠正。

安装phpMyAdmin

你不需要安装phpMyAdmin,但除非你是SQL方面的奇才,否则就需要它在MySQL数据库上处理管理任务。

你可以使用这个终端命令来安装phpMyAdmin:

1.sudo apt-get install libapache2-mod-auth-mysql phpmyadmin

系统会提示你确认你想安装软件包。按回车键,继续进行。

安装phpMyAdmin软件包

接下来会提示你选择为phpMyAdmin配置的Web服务器。这很重要!使用键盘上的箭头键,高亮显示apache2,然后使用空格间来选择它。然后按回车键,继续进行。确保点击下面这张图,以便放大浏览,看看我所描述的内容。

为Apache配置phpMyAdmin

下一个屏幕会问你是不是想为phpMyAdmin配置一个名为dbconfig-common的数据库。选择"是的",并按回车键。

为phpMyAdmin配置dbconfig-common

接下来提示你输入之前设置的MySQL根密码,那样就可以创建新数据库了。于是,输入你的MySQL根密码,按回车键。

输入MySQL根密码

下一个提示是为phpMyAdmin创建一个MySQL应用程序密码。如果你想要创建一个随机性密码,可以按回车键。我通常使用用于MySQL根密码的同一个密码。从安全性方面考虑,这么做可能不是最佳方法,但是由于这用于封闭的开发环境,所以风险可能很小。

phpMyAdmin MySQL应用程序密码

最后,系统提示你确认MySQL应用程序密码。输入与前一个步骤中一样的密码,按回车键。

确认MySQL应用程序密码

至此,安装和配置phpMyAdmin的工作已完成。

测试phpMyAdmin

最后一步就是,确保phpMyAdmin在正常运行。打开Web浏览器,输入地址 http://localhost/phpmyadmin/。你应该会看到像这样的页面。

如果打不开,建立一个链接,

Selection_001.bmp

phpMyAdmin登录屏幕

现在你应该能够以用户名root和之前创建的根密码来登录。

phpMyAdmin已登录

恭喜你,现在你已完成了在Ubuntu 12.04上安装和配置LAMP及phpMyAdmin的工作。现在,你可以开始创建本地的网站了。如果你只是在从事一个网站的开发,可以把文件放入到/var/www。请注意:/var/www归用户和用户组root所有,所以你需要以根用户身的份将文件拷贝过去,或者更改该目录的所有权及/或权限,那样就能在那里写文件了。另外,你可以进行一些另外的Apache配置,那样可以将文件保留在主目录下的某个地方。你甚至可以以那种方式搭建多个网站。

14.10升级15.04时,不能扩展到第二显示器的问题解决方法

今天将Ubuntu从9.10升级到10.04后显卡驱动遇到了点小麻烦:不能像以前那样安装Nvidia官方驱动了。据说是因为10.04自带了开源的nouveau驱动所至。因此要手动安装官方驱动先得卸载ubuntu 10.04安装时缺省提供的这个驱动。
折腾一番后安装成功,简单总结一下安装官方驱动的两个方法:手动安装和apt-get安装。
一、手动安装官方驱动和开发库
实践后发现 这篇文章 提供的办法最好:
0. 去Nvidia官方网站下载最新的驱动
这里 选择你的平台对应的驱动。
今天最新的版本是195.36.24

1. 首先将nouveau驱动放入黑名单:

Sh代码
  1. sudo vi /etc/modprobe.d/blacklist.conf

增加一行
blacklist nouveau

2. 卸载官方驱动nouveau

Sh代码
  1. sudo apt-get --purge remove xserver-xorg-video-nouveau

3. 然后重启:

Sh代码
  1. sudo reboot

重启后会发现界面很粗糙

4. 清除nvidia相关的软件(如果有的话)

Sh代码
  1. sudo apt-get --purge remove nvidia-*

5. 退出x界面进入命令行控制台:

Sh代码
  1. sudo init 3
  2. sudo service gdm stop

6. 运行安装

Sh代码
  1. sudo sh NVIDIA-Linux-x86_64-195.36.24-pkg2.run

7. 启动x界面

Sh代码
  1. sudo service gdm start

二、apt-get安装官方驱动库
手动安装这种方式在官方更新库后每次都得手动来一遍,所以最方便的还是apt-get安装

《Ubuntu Gamer》介绍了 apt-get安装最新显卡驱动到办法
对于最新的Nvidia二进制驱动:
1. 添加apt-get源
对于12.10之前的版本

Sh代码
  1. sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

13.04后的版本 

Sh代码  
  1. sudo add-apt-repository ppa:xorg-edgers/ppa  

如果出现错误
Cannot add PPA: 'ppa:xorg-edgers/ppa'.
Please check that the PPA name or format is correct.

这可能是网络(如防火墙)的原因

2. 在线安装驱动

Sh代码
  1. sudo apt-get update
  2. sudo apt-get install nvidia-current nvidia-current-modaliases nvidia-settings

13.10后不再有modaliases了 

Sh代码  
  1. sudo apt-get update  
  2. sudo apt-get install nvidia-current nvidia-settings  

3. 从事GPU开发的可能还需要装上cuda和openCL库的支持:

Sh代码
  1. sudo apt-get install nvidia-current-dev

4. 安装cudatoolkit获取相关开发工具,如nvcc
去官方网站下载安装包,略

其它:对于最新的ATI/AMD二进制驱动的apt-get安装
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install fglrx

http://article.yeeyan.org/view/163202/140715

其它常见错误:
安装重启后空屏(Blank screen),只显示鼠标。
解决办法是,设置grub:

1. 重启时按Shift键进入恢复模式(Recovery Mode),BTW:有的机器可能需要先进入BIOS,然后启动
2. 按E键修改启动参数,将quiet splash改成nomodeset
不过每次重启都要这样修改很麻烦,可以
3. 进入“系统配置”,点击“软件更新”,然后在“附加驱动”中随便选一款NVIDIA驱动,就好了

详见:
http://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it

参考:
http://www.ubuntugeek.com/howto-install-nvidia-drivers-manually-on-ubuntu-10-04-lucid-lynx.html
http://www.wretch.cc/blog/gegemini/8908293

MBR相关

MBR会存入内存地址0x7C00,为什么是这个地址?见为什么主引导记录的内存地址是0x7C00?

MBR(Master Boot Record):第一个开机装置的第一个扇区(Sector)内的主要启动记录区块,内含开机管理程序。

CMOS:记录各项硬件参数且嵌入在主板上面的存储器。

BIOS(Basic Input Output System):一个写入到主板上的一个韧体,(韧体就是写入到硬件上的一个软件程序)。计算机开始时主动执行的第一个程序。

关于linux启动项的问题

早期的认识:

etc/default/grub,把0改成4就可以了,因为win是第五个启动的(从0开始),改成4,就是优先启动windows,同时,修改后还要更新boot/grub.cfg文件,使用命令 sudo update-grub

后来的认识:
ubuntu 今天学习(2015-04-07)到了控制开机顺序的文件是 /boot/grub/grub.cfg,里面包括所有的开机项和顺序,但这个文件开头有这样几句话:
DO NOT EDIT THIS FILE
It is automatically generated by grub-mkconfig using templates
from /etc/grub.d and settings from /etc/default/grub
所以只能修改 /etc/default/grub文件 ,为什么改为第五个,就要看 /boot/grub/grub.cfg 文件里  windows开机项是第几个 "begin" 代码了。