【LAMP】搭建LAMP系统及相关配置
阅读数:
不得不说云服务做的越来越好以后,搭建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 | Finished Dependency Resolution |
是说有个包需要历来更新,我们不要理会,直接用下面的命令跳过:
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 |
|
输入地址试试:http://serverip/test.php
可以显示说明已经配置成功了!
如果失败,查看下是不是80端口被占用
1 | netstat -apn |grep 80 |
到这里,基本上一个完整的过程就到此为止了!!有问题欢迎留言一起讨论~
最后附上参考连接: