11.1 LAMP架构的介绍
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。
Linux
Linux 是免费开源软件,这意味着源代码可用的操作系统。
Apache
Apache 是使用中最受欢迎的一个开放源码的WEB服务器软件。
MySQL
MySQL 是多线程、多用户的SQL数据库管理系统。
MySQL 已由Oracle公司自 2010 年 1 月 27 日通过SUN购买。SUN 最初于 2008 年 2 月 26 日收购 MySQL。
PHP,Perl 或 Python
PHP 是一种编程语言最初设计生产动态网站。PHP 是主要用于服务器端的应用程序软件。Perl 和 Python 类似。
11.2 MySQL、MariaDB介绍
11.3/11.4/11.5 MySQL安装
一、安装MYSQL
1、下载MySQL的安装文件
安装MySQL需要下面两个文件:
MySQL-server-4.0.16-0.i386.rpm
MySQL-client-4.0.16-0.i386.rpm
下载地址为:http://www.mysql.com/downloads/mysql-4.0.html, 打开此网页,下拉网页找到“Linux x86 RPM downloads”项,找到“Server”和“Client programs”项,下载需要的上述两个rpm文件。
2、安装MySQL
rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是 –ivh ,其中i表示将安装指定的rmp软件包,V表示安装时的详细信息,h表示在安装期间出现“#”符号来显示目前的安装过程。这个符号将持续到安装完成后才停止。
1)安装服务器端
在有两个rmp文件的目录下运行如下命令:
如出现如上信息,服务端安装完毕。测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
上面显示可以看出MySQL服务已经启动。
2)安装客户端
运行如下命令:
显示安装完毕。
用下面的命令连接mysql,测试是否成功。
二、登陆MySQL
登录MySQL的命令是mysql, mysql 的使用语法如下:
username 与 password 分别是 MySQL 的用户名与密码,mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是root,由于初始没有密码,第一次进时只需键入mysql即可。
出现了“mysql>”提示符,恭喜你,安装成功!
增加了密码后的登录格式如下:
mysql -u root -p
Enter password: (输入密码)
其中-u后跟的是用户名,-p要求输入密码,回车后在输入密码处输入密码。
注意:这个mysql文件在/usr/bin目录下,与后面讲的启动文件/etc/init.d/mysql不是一个文件。
三、MySQL的几个重要目录
MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。
下面就介绍一下这几个目录。
1、数据库目录
/var/lib/mysql/
2、配置文件
/usr/share/mysql(mysql.server命令及配置文件)
3、相关命令
/usr/bin(mysqladmin mysqldump等命令)
4、启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)
四、修改登录密码
MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。
1、命令
格式:mysqladmin -u用户名 -p旧密码 password 新密码
2、例子
例1:给root加个密码123456。
键入以下命令 :
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
3、测试是否修改成功
1)不用密码登录
2)用修改后的密码登录
成功!
这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。
五、启动与停止
1、启动
MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。
2、停止
3、自动启动
1)察看mysql是否在自动启动列表中
2)把MySQL添加到你系统的启动服务组里面去
3)把MySQL从启动服务组里面删除。
六、更改MySQL目录
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:
1、home目录下建立data目录
2、把MySQL服务进程停掉:
3、把/var/lib/mysql整个目录移到/home/data
这样就把MySQL的数据文件移动到了/home/data/mysql下
4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
6、修改MySQL启动脚本/etc/rc.d/init.d/mysql
最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
7、重新启动MySQL服务
或用reboot命令重启Linux
如果工作正常移动就成功了,否则对照前面的7步再检查一下。
七、MySQL的常用操作
注意:MySQL中每个命令后都要以分号;结尾。
1、显示数据库
2 rows in set (0.04 sec)
Mysql刚安装完有两个数据库:mysql和test。mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。
2、显示数据库中的表
3、显示数据表的结构:
4、显示表中的记录:
例如:显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。
5、建库:
例如:创建一个名字位aaa的库
6、建表:
use 库名;
create table 表名 (字段设定列表);
例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
可以用describe命令察看刚建立的表结构。
7、增加记录
例如:增加几条相关纪录。
可用select命令来验证结果。
8、修改纪录
例如:将张三的出生年月改为1971-01-10
9、删除纪录
例如:删除张三的纪录。
10、删库和删表
八、增加MySQL用户
格式:
例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:
例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。
例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能通过MYSQL主机来操作aaa库。
用新增的用户如果登录不了MySQL,在登录时用如下命令:
九、备份与恢复
1、备份
例如:将上例创建的aaa库备份到文件back_aaa中
2、恢复
11.6 MariaDB安装
1.下载mariaDB
2.解压
3.将目录重命名
4.创建mysql用户
5.创建存放数据库的目录
6.初始化
7.配置文件
Mariadb的配置文件也在/user/local/mariadb/support-files/目录下,和mysql有一定区别,这个目录下有好几个配置模板
my-huge.cnf;my-large.cnf;my-medium.cnf;my-small.cnf这些配置文件的区别就在于缓存数字的大小不一样,这些值是根据内存的大小指定合适的缓存,这样会让mysql达到一个更高效的性能。我们做实验内存是1G 拷贝my-small.cnf就可以,如果你的内存有几十G,可以拷贝my-huge.cnf,再根据实际情况适当调整这些参数。
(1)拷贝配置文件
(2)修改配置文件
注:如果不添加数据库的存储目录,仅仅在在系统中存在其他数据库时(如MySQL),则mariadb数据库会使用之前数据库中的配置文件里面的数据库的存储目录
8.拷贝启动脚本
(1)修改启动脚本
(2)启动脚本
这里要注意:之前安装过mysql,所以在安装mariadb的时候,要先关闭mysqld服务,在启动脚本中指定了配置文件路径conf,并将添加到启动脚本中,如果之前没有装过mysql,可以直接将配置文件拷贝到/etc/my.cnf,启动脚本中也不用指定配置文件路径。
11.7/11.8/11.9 Apache安装
1.下载apache和apr、apr-util
2.解压
3.安装apr
4.安装apr-util
5.安装apache
(1)初始化
这里出现一个错误:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
可以用yum list来查找缺少那个包
(2)然后重新编译参数
(3)编译make&&安装make install
[root@linux-5 httpd-2.4.33]# make
此时编译出现一个错误
经查询相关资料后,将apr-util重新初始化并编译一次即可解决。
再次重新编译并安装apache
查看apache都加载了那些模块
[root@linux-5 apache2.4]# /usr/local/apache2.4/bin/apachectl -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::fdb8:14ca:d41b:3dc8. Set the 'ServerName' directive globally to suppress this message
Loaded Modules: //这里不用管它
core_module (static) //static 表示静态模块
so_module (static)
http_module (static)
mpm_event_module (static)
authn_file_module (shared) //shared表示动态共享模块
authn_core_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_user_module (shared)
authz_core_module (shared)
access_compat_module (shared)
auth_basic_module (shared)
reqtimeout_module (shared)
filter_module (shared)
mime_module (shared)
log_config_module (shared)
env_module (shared)
headers_module (shared)
setenvif_module (shared)
version_module (shared)
unixd_module (shared)
status_module (shared)
autoindex_module (shared)
dir_module (shared)
alias_module (shared)
动态和静态模块的区别:静态模块(static)直接和主程序(/usr/local/apache2.4/bin/httpd)绑定在一起,动态模块(shared)都是一个个独立存在的文件(moudles目录下面的.so文件)这些动态模块不会全部加载,如果想用哪个动态模块,直接在配置文件里面配置即可。
11.10/11.11/11.12 安装PHP5 11.7安装php7
• PHP官网www.php.net
• 当前主流版本为5.6/7.1
下载PHP5.6安装包
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
解压安装包
tar jxvf php-5.6.32.tar.bz2
初始化
cd /usr/local/src/php-5.6.32/
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
//--prefix=/usr/local/php 指定安装目录//--with-apxs2=/usr/local/apache2.4/bin/apxs 自动在httpd上配置PHP模块//--with-config-file-path=/usr/local/php/etc 指定PHP配置文件所在路径(PHP配置文件后缀为.ini)// --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-
mysqli=/usr/local/mysql/bin/mysql_config 三种连接MySQL的驱动
在初始化时出现一个错误
通过报错信息判断是缺少libxml2-devel(库)类型的安装包,也可通过命令做进一步确认(安装PHP时一般都会缺少各种各样的库文件)
yum list |grep xml2
第二个错误
第三个错误(yum安装的包应为小写)
第四个错误
[root@linux-5 php-5.6.32]# yum install -y libjpeg-turbo-devel.x86_64
第五个错误
第六个错误
第七个错误(这是基于epel扩展源的包,需要先安装epel扩展源)
看到此标识,说明已经初始化成功(以防万一可用echo $?进行检查)
将PHP配置文件模板拷贝至初始化规定的配置文件路径下
cp php.ini-production(development)/usr/local/php/etc/php.ini
//production为生产环境,development为测试开发环境
第一次安装PHP时所需要的包汇总
libxml2-developenssl-develbzip2-devellibjpeg-turbo-devel.x86_64libpng-devel.x86_64freetype-devel.x86_64libmcrypt-devel.x86_64(需要先安装epel扩展源)
编译&&安装PHP5
make
make install
在LAMP架构中,Apache所需要PHP中的模块文件是/usr/local/apache2.4/modules/libphp5.so,PHP的作用是将php5_module模块安装在Apache上帮助Apache进行一些通信,因此LAMP中的PHP无需启动也可正常工作
[root@linux-5 php-5.6.32]# /usr/local/apache2.4/bin/httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::531b:14ea:3a75:f113. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_event_module (static)
authn_file_module (shared)
authn_core_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
alias_module (shared)
php5_module (shared)
Apache的配置文件/usr/local/apache2.4/conf/httpd.conf
配置文件可随用随取,被注释掉的模块都不会显示,也不会加载该模块。
11.13 安装PHP7
下载PHP7.1安装包
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
解压安装包
tar jxvf php-7.1.6.tar.bz2
初始化
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
编译&&安装PHP7
make
make install
注:一个机器中可以同时安装两个PHP,但是要配置好Apache调用哪一个PHP,避免混乱,可去Apache的配置文件/usr/local/apache2.4/conf/httpd.conf中进行修改
11.14/11.15 Apache和PHP结合
修改Apache(httpd)主配置文件
定义ServerName以消除Apache启动时所产生的警告
未修改前
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::531b:14ea:3a75:f113. Set the 'ServerName' directive globally to suppress this message
httpd (pid 5756) already running
定义ServerName
完成修改后
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl restart[root@linux-5 ~]#
打开服务器的80端口
[root@linux-5 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
测试连接Apache服务器
修改配置文件以防止打开虚拟主机配置文件时拒绝访问(访问时提示403)
<Directory />
AllowOverride none
Require all granted //将denied改为granted
</Directory>
...
DocumentRoot "/usr/local/apache2.4/htdocs"
<Directory "/usr/local/apache2.4/htdocs">
...
Require all granted //将denied改为granted
</Directory>
检查配置文件语法
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
重新加载配置文件
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl graceful
修改配置文件以用于解析PHP文件
增加PHP的索引页
增加索引页可以直接输入域名或IP,后自动跳转至索引页,无需单独输入
编写PHP测试脚本
[root@linux-5 ~]# vim /usr/local/apache2.4/htdocs/test.php
<?php
phpinfo();
?>
//该脚本用于打印PHP版本信息
注:增加PHP文件无需重启服务
测试PHP解析效果
上图为成功解析PHP脚本文件的效果,如果不支持解析,则会产生如下结果
Tips:使用ctrl+r可以快速查找并使用历史命令
扩展
mysql5.5源码编译安装 http://www.aminglinux.com/bbs/thread-1059-1-1.html
mysql5.7二进制包安装(变化较大) http://www.apelearn.com/bbs/thread-10105-1-1.html
apache dso https://yq.aliyun.com/articles/6298
apache apxs https://wizardforcel.gitbooks.io/apache-doc/content/51.html