1.7 最后的微调

我们已经安装了Linux(Ubuntu),Apache,PHP和MySQL。至此,一个基本的LAMP结构已经搭建完成。但是我们还缺少最后关键的几步,将这几个单元有机地整合起来。

1.7.1 对Apache的微调

我们需要对Apache进行的微调是使得它支持URL重写规则。这个是我们日后用Symfony编写应用并分发测试时必须的:

  1. sudo a2enmod rewrite

该命令将使得Apache支持URL重写。

  1. sudo service apache2 restart

该命令将重启Apache服务,我们刚才的改动从此生效。

1.7.2 对PHP的微调

对PHP的微调分为几个方面。一个是对php.ini配置文件的修改,一个是添加一些PHP的挂接模块(特别是MySQL模块)。

一般而言,在安装好Apache之后再安装PHP,则PHP的安装过程中会自动挂接一个libapache2-mod-php5的Apache模块。在重启Apache之后,Apache就开始支持PHP脚本的解析。

如果PHP的安装没有自动挂接该Apache模块,我们可以手动安装:

  1. sudo apt-get install libapache2-mod-php5

然后重启Apache服务使模块生效。

1.7.2.1 修改php.ini

PHP的配置文件有两个,分别处理PHP在命令行中执行和在Apache中作为模块执行时的表现。由于我们是要进行Web开发,所以我们要修改的是所谓Web下的PHP配置文件。该文件位于/etc/php5/apache2,对其修改需要root权限(我们登录时使用的vagrant用户就具有root权限)。

一般而言,我们不用太多地修改这个文件,但是有这么几项还是需要进行改动的:

  1. date.timezone = Asia/Shanghai
  2. ;或者用UTC;或者你喜欢的时区
  3. upload_max_filesize = 100M
  4. ;设置的这么大,是因为有时需要通过上传大图片
  5. post_max_size = 100M
  6. ;这个值和上面这个值的设置最好保持一致

1.7.2.2 PHP模块

PHP模块又称为PHP扩展,是一些可挂载的程序(在Linux系统下是*.so),为PHP语言本身提供更多的功能。有关PHP模块的开发,已经超出了本书的范围。有兴趣的读者可以参阅我写的系列教程:第一部分第二部分第三部分

到底要装哪些模块完全是个人喜好和开发要求决定,没有标准。

作为本书所讨论的Web应用,我选择安装了如下扩展:

1.7. 最后的微调  - 图1

这些扩展的具体介绍可以参见相关文档。

注意:complex.so是我自己开发的一个复数模块,你在别处找不到,只能根据我的教程自己编译。没有这个模块也不会影响我们后面的开发。

这些模块的安装都可以使用类似的方法。比如,我们要安装mcrypt这个扩展,那么我们这么做:

  1. apt-cache search mcrypt | grep php

这个命令会给出如下的信息:

  1. php-crypt-blowfish - Allows for quick two-way blowfish encryption without requiring the MCrypt PHP extension
  2. php5-mcrypt - MCrypt module for php5

其中的php5-mcrypt就是我们要安装的扩展名。然后我们用:

  1. sudo apt-get install php5-mcrypt

命令就可以完成安装和配置了。

模块安装完成后,建议重新启动Apache服务。

1.7.3 对MySQL的微调

对MySQL的微调也分为两部分。一部分是和PHP的挂接,一部分是MySQL本身的微调。

1.7.3.1 和PHP的挂接

我们安装了PHP,也安装了MySQL,但是我们还没有在PHP中挂接MySQL扩展。只有挂接了这个MySQL扩展,我们才能在我们的PHP程序中使用MySQL数据库的功能。

  1. sudo apt-get install php5-mysql

如果觉得有必要,你也可以安装一个phpmyadmin来对MySQL数据库进行管理:

  1. sudo apt-get install phpmyadmin

但是我们也可以远程来管理MySQL数据库。

1.7.3.2 修改my.cnf

MySQL的配置文件是:/etc/mysql/my.cnf

我们需要记住:我们在Windows机器上进行开发,通过Vagrant的文件夹共享将我们的修改直接映射到Vagrant盒子中。相对我们的Windows机器,这个盒子是“远程”的(因为我们的盒子设置中,其IP和我们Windows机器的IP不是一个,更不在一个网段)。

缺省情况下,MySQL只对本级的MySQL请求做出响应,因此无法进行远程管理。使用PHPMyAdmin虽然可以解决这个问题,但是我比较喜欢用本地GUI的程序来管理远程MySQL,所以需要设置MySQL以放开远程管理。

  1. bind-address = 127.0.0.1

修改完毕后,使用如下命令重启MySQL服务:

  1. sudo service mysql restart

在终端登录MySQL,输入如下命令:

  1. grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option

好了。经过这些修改后,我们在Windows机器中也可以用GUI程序来管理在Vagrant运行的MySQL服务器了。我个人使用的是Valentina Studio Pro(我为这个软件写过一篇测评,所以获得了一个免费的专家版授权)。还有很多免费的GUI程序可以下载使用,比如MySQL官方推荐的MySQL Workbench

至此,我们的LAMP服务器设置基本完成——只有最后一步了:我们需要设置一个虚拟服务器来使得我们可以远程访问我们的站点。