Contents
  1. 1. Linux
  2. 2. MySQL
    1. 2.1. yum安装mysql
    2. 2.2. 启动mysql服务
    3. 2.3. 连接数据库
      1. 2.3.1. 为root用户创建密码
      2. 2.3.2. 新建用户可以远程访问
      3. 2.3.3. 修改字符集
        1. 2.3.3.1. 查找文件
        2. 2.3.3.2. 修改文件
        3. 2.3.3.3. 修改innodb buffer 大小
        4. 2.3.3.4. 配置event执行
        5. 2.3.3.5. 重启mysql服务
        6. 2.3.3.6. 查看修改结果
  3. 3. 安装Apache
    1. 3.1. 修改apache配置
    2. 3.2. 启动apache服务
  4. 4. 安装php
    1. 4.1. 安装
    2. 4.2. 测试

不得不说云服务做的越来越好以后,搭建LAMP(Linux+Apache+MySQL+PHP)环境变得越来越方便了。这篇博文就记录一下在阿里云的主机上搭建LAMP环境的全过程,当然,整个过程也是参考了很多前人的经验,在文章最后我会全部贴出来以示感谢。
先列出来各个版本:

  • Linux
    直接在阿里云上买的主机,用的CentOS 6.5版本,而且已经帮我们装好了yum,我们后面的安装都通过yum很方便的安装

  • MySQL
    阿里云其实已经自动帮我们装好了MySQl,版本号是5.1.73; 不过我们也可以自己安装。

  • PHP
    版本号:5.3.3

好了,接下来我们看一下整个安装过程吧!

Linux

如果我们的Linux环境是自己安装的就很简单了,直接跳过这个章节进行之后MySQL的安装就好了。那如果大家和我一样,也是在阿里云或者其他云服务商那里购买的主机(大概1年前国内云服务商在推广自己的业务是,优惠力度很大,笔者之前就享受了1年的免费主机+数据库,但是如今已经过去了补贴期了,所以不用费劲去寻找很大的优惠政策了),就继续往下看。话说阿里云上面一个很基础(流量一个月固定1M带宽就够一些小型的服务使用了,这里的M指的是Byte,而不是我们通常说的Bit)的主机,一个月只要不到200块钱,算是很便宜的,甚至有的地区优惠力度非常大,1年可能也不到1k就能买到。
在购买主机的时候,需要设置一个root的密码,我们在我们自己的电脑上,通过命令行可以直接ssh到主机上。

1
ssh root@xxx.xxx.xxx.xxx

然后输入你之前设置的密码,就可以远程连接到我们购买的主机上面了。

之后你可以新建用户,查看安装的程序等动作了。

MySQL

其实主流的Linux系统版本都已经集成了MySQL数据库,我们可以通过下面的命令查看我们的操作系统是否已经安装了MySQL。

1
rpm -qa | grep mysql

下图可以看到我的操作系统上已经安装了这些和MySQL相关的程序。

当然,如果你想自己重新安装mysql,可以执行下面的命令:
进行普通删除:

1
rpm -e mysql

或者进行强力删除,因为可能有其他依赖的文件。

1
rpm -e --nodeps mysql

yum安装mysql

我们通过yum可以非常方便的在linux系统中安装应用。
首先我们查看下yum都有哪些mysql可供下载

1
yum list | grep mysql

可以看到yum服务器上mysql数据库的可供下载的版本信息

然后我们可以通过
yum install mysql mysql-server mysql-devel命令一次性将mysql, mysql-server和 mysql-devel都安装好(注意:安装mysql时我们并不是安装了mysql客户端就相当于安装好了mysql数据库了,我们还需要安装mysql-server服务端才行)

中途可能会出现下面问题

1
2
3
4
5
6
7
8
9
--> Finished Dependency Resolution
mysql-devel-5.0.95-1.el5_7.1.i386 from updates has depsolving problems
--> Missing Dependency: mysql = 5.0.95-1.el5_7.1 is needed by package mysql-devel-5.0.95-1.el5_7.1.i386 (updates)
Error: Missing Dependency: mysql = 5.0.95-1.el5_7.1 is needed by package mysql-devel-5.0.95-1.el5_7.1.i386 (updates)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

是说有个包需要历来更新,我们不要理会,直接用下面的命令跳过:

1
yum install mysql mysql-server mysql-devel --skip-broken

然后yum会检测版本,然后提示我们进行下载,输入y,回车,就可是下载了,基本上没什么问题。

启动mysql服务

安装完成之后,我们的会多一个mysqld的服务,这个就是我们的数据库的服务,我们通过service mysqld start来启动。
第一次启动,可能需要比较多的加载项,但是之后就很快了,只需要两步就ok。
当然,我们可以设置开机自动启动mysqld服务。

1
chkconfig --list | grep mysqld

可以看到因为我已经设置过了,所以这里很多项都是on,如果第一次使用,这里全部都是off
那么我们可以通过下面的命令把它设置成每次都自动启用mysql:

1
chkconfig mysqld on

再次执行

1
chkconfig --list | grep mysqld

就可以看到和我的一样的启动项配置了。

连接数据库

为root用户创建密码

我们的新安装好的数据库会自动有一个root用户,我们通过下面的命令来为它建立密码:

1
mysqladmin -u root password 'yourpassword'

然后我们就可以通过 mysql -u root -p 命令来登录我们自己的数据库了。

新建用户可以远程访问

那到现在,我们可以通过SSH到主机上,然后用root用户登录到MySQL上了。但是我们一定希望能够通过远程直接连我们的数据库,那么我们就来新建一个用户吧。

我们通过下面的命令来建立用户

1
grant all privileges on *.* to 'yourname'@'%' identified by 'yourpassword';

这样我们就建立了一个和root用户一样权限的但是可以在任意一个ip地址访问我们数据库的‘超级用户’了。关于如何远程接入我们的数据库,我们在后面的博文中再详细介绍。

我们具体来看看这条命令的每个参数的意义。

  • all privileges 就是所有的权限,包括增删查改,建表,连接等等。。。

  • *.*的意思所有库的所有表中,假设我们的指向让改用户掌握某一个库(假设库名为test)下面所有表的权限,那就用

    1
    grant all privileges on test.* to 'yourname'@'%' identified by 'yourpassword';
  • @前面是你想要创建的用户名,@后面是指定可以连接的ip地址。 %表示所有的ip地址都可以,localhost表示只能在本地登录,例如:

    1
    grant all privileges on test.* to 'adminA'@'localhost';

    就为我们穿件了一个用户: adminA,他只能在本机连接数据库。

  • identified by后面加上创建用户的密码

创建好了之后,记得要

1
flush privileges;

去刷新下用户的权限。

特别强调:
假如我们新建了一个用户可以在任意地方访问:

1
grant all privileges on *.* to 'user_a'@'%' identified by 'yourpassword';

当我们在主机(localhost)中键入下面的命令:

1
mysql -u user_a

我们会惊奇的发现,竟然直接连入了数据库,而没有要任何的密码,原因是:

从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,user_a将被视为匿名用户。原因是匿名用户账户的Host列值比’user_a’@’%’账户更具体,这样在user表排序顺序中排在前面。

为了进一步看清楚,我们来看位于mysql库中的user表里面的用户顺序:

可以从表中看到,确实,我们新建的用户因为位于之后,而被local的匿名用户所顶替掉了。当然,我们的权限也只有新建时的那些权限,而不是真正root用户的超级权限。

修改字符集

在和php连接以及网页的显示时,字符集经常是一个另人头疼的事情,而新建好的mysql字符集都是latin1,怎样才能把它改成我们常用的UTF-8呢?

查找文件

我们先通过下面的命令,找到我们要的文件,

1
find / -iname '*.cnf' -print

修改文件

可以看到我们想要的文件 /etc/my.cnf, 然后我们通过vim打开,如果没有的话,直接建一个好了。

然后在[client](没有的话,手动打上去)和[mysqld]下添加default-character-set=utf8

修改innodb buffer 大小

默认的innodb缓冲大小是8M,当你需要处理大批量的数据时,就会发现这个缓冲区不够用了,会出现The total number of locks exceeds the lock table size的错误。所以,我们要在[mysqld]中添加下面的内容,设置缓冲区大小为64M(也可以更大)

1
innodb_buffer_pool_size=64MB`

配置event执行

mysql中的event相当于oracle中的job,用于特定的时间内执行一系列的任务。
如果我们不显示地执行下面的语句,

1
SET GLOBAL event_scheduler = ON

将mysql的事件计划打开,即便我们新建了event,也不会按照我们预想地正常执行。
因为event_scheduler默认是关闭的,所以当mysql重启之后,我们的计划任务就不再按照计划执行了,所以我们在配置文件里面讲它设置为默认开启, 我们在[mysqld]下面添加下面的语句

1
event_scheduler = on

重启mysql服务

1
/etc/rc.d/init.d/mysql restart

或者

1
service mysqld restart

查看修改结果

接入数据库:

1
mysql -u root -p

查看结果

1
show variables like '%character%';

看看是不是就和我的表一样了呢?

到这里,mysql的安装和配置就全部完成了。关于如何在远程用我们新建好的用户连接我在之后会另开一篇博文详细介绍。

安装Apache

apache的安装也非常简单了,直接键入下面的命令

1
yum install httpd httpd-devel

同样yum在检测后会提示我们进行下载,我们直接输入y,然后回车就可以开始下载了。

修改apache配置

我们这里了主要修改下配置,出于安全目的,关闭网站的目录浏览功能。

找到httpd的配置文件目录:/etc/httpd/conf/httpd.conf

编辑下面的条目:



<Directory "/var/www/html">条目中,修改Options Indexs FollowSymLinks

1
Options -Indexs FollowSymLinks

即在Indexs前加上-号。

启动apache服务

用下面的命令来启动apache服务器

1
/etc/init.d/httpd start

mysqld服务类似,httpd就是apache的服务名称,我们同样可以通过

1
chkconfig httpd on

命令来把它设置成开机自启动。

安装php

安装

同样php的安装在yum下也非常简单。

1
yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml

安装完成之后,我们需要重新启动Apache

1
/etc/init.d/httpd start

或者

1
service httpd restart

测试

apache的网站搭建在/var/www/html路径下,我们在其中新建一个test.php文件,然后写入下面的内容:

1
2
3
<?
phpinfo();
?>

输入地址试试:http://serverip/test.php 可以显示说明已经配置成功了!

如果失败,查看下是不是80端口被占用

1
netstat -apn |grep 80

到这里,基本上一个完整的过程就到此为止了!!有问题欢迎留言一起讨论~


最后附上参考连接:

Contents
  1. 1. Linux
  2. 2. MySQL
    1. 2.1. yum安装mysql
    2. 2.2. 启动mysql服务
    3. 2.3. 连接数据库
      1. 2.3.1. 为root用户创建密码
      2. 2.3.2. 新建用户可以远程访问
      3. 2.3.3. 修改字符集
        1. 2.3.3.1. 查找文件
        2. 2.3.3.2. 修改文件
        3. 2.3.3.3. 修改innodb buffer 大小
        4. 2.3.3.4. 配置event执行
        5. 2.3.3.5. 重启mysql服务
        6. 2.3.3.6. 查看修改结果
  3. 3. 安装Apache
    1. 3.1. 修改apache配置
    2. 3.2. 启动apache服务
  4. 4. 安装php
    1. 4.1. 安装
    2. 4.2. 测试