LAMP架构

LAMP架构介绍

 

Linux+  Apache(httpd)+ mysql  +   php

操作系统+外网服务软件 + 存储软件 + 脚本语言(由C开发)

PHP网站

三个角色可以装在一台机器,也可以分开,但是httpd要和php在一起(php是以模块的形式和apache结合在一起的,apache通过php和mysql打交道,)

动态请求:用户通过账号和密码登录apache,apache通过php去mysql里比对数据,对上后apache会返回给用户登录状态

静态请求:用户通过apache登录,apache直接去linux某个目录中去拿静态的文件或图片。不与mysql打交道Apache和PHP是一个整体,因为PHP是以一个模块的形式和Apache结合在一起,但是Apache不能直接和MySQL去连接,只能通过PHP这个模块去MySQL中提取数据,拿到数据后,PHP把这个结果交给Apache,Apache再交给用户。

PHP和MySQL交互数据的操作、行为,称为 动态请求。

MySQL_MariaDB介绍

mysql是一个关系型数据库。由mysql ab公司开发。在2008年被sun公司收购。sun公司(java)于2009年被oracle(数据库)公司收购。mysql走上了商业路线。官网:www.mysql.com   在版本5.6开始变化比较大。5.7性能上有很大提升。

mariadb为mysql一个分支。官网为www.mariadb.com,由原作者带领大部分原班人马创立。mariadb5.5对应mysql5.5,mysql5.6对应maiadb10.0。

Community 开源版本

enterprise 企业版

GA 通用版本,再生产环境中使用

DMR  开发里程碑版本(有重大突破的版本)

RC  发行候选版本

Beta  开发测试版本(可能存在bug)

Alpha  内部测试版本

MySQL安装(上)

1.uname -a 查看当前版本信息

[root@sunyujun01 ~]# uname -a
Linux sunyujun01 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@sunyujun01 ~]# 

r.aminglinux

安装:rpm(没有办法自定义安装路径),源码,二进制免编译(可以自定义安装路径)

2.下载mysql包

[root@sunyujun01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

MySQL安装(中)

3.解压mysql的二进制免编译包

[root@sunyujun01 src]# tar -zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 

4.将他移动并改名为

 mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

5.切换到/usr/local/mysql目录下,创建mysql用户

[root@bogon src]# cd /usr/local/mysql/
[root@bogon mysql]# ls
bin      data  include  man         README   share      support-files
COPYING  docs  lib      mysql-test  scripts  sql-bench
[root@bogon mysql]# 

 

[root@bogon mysql]# useradd mysql

6.mysql 数据库的默认储存数据文件的路径在/var/lib/mysql,但是实际中,我们在安装时常常就需要定制安装数据库路径,创建data目录

[root@bogon mysql]# mkdir /data/

7.执行mysql_install_db,指定user、datadir, 生成数据库系统,指定用户为mysql,储存数据库路径放在/data/下

[root@bogon mysql]# ./scripts/mysql_install_db  --user=mysql --datadir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
[root@bogon mysql]# 

8.提示少了perl,用yum命令搜索下

[root@bogon mysql]# yum list |grep perl |grep -i dumper

 

[root@bogon mysql]# yum list |grep perl |grep -i dumper
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
perl-Data-Dumper.x86_64                 2.145-3.el7                    base     
perl-XML-Dumper.noarch                  0.81-17.el7                    base     
[root@bogon mysql]# 

9.安装perl-Data-Dumper

[root@bogon mysql]# yum install -y perl-Data-Dumper

10.再次执行./scripts/mysql_install_db --user=mysql --datadir=/data/mysql,ok

[root@bogon mysql]# echo $?

11.拷贝配置文件,默认/etc/my.cnf文件已经存在,可能是系统安装mariadb的时候安装的拷贝配置文件到/etc/my.cnf

[root@bogon mysql]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? n
[root@bogon mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@bogon mysql]# 

12.编辑配置文件

[root@bogon mysql]# vim /etc/my.cnf 

MySQL安装(下)

1.拷贝启动脚本到/etc/init.d/下,自定义启动脚本

[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@bogon mysql]# 

2.给文件权限chmod  755 编辑mysqld文件

3.开机启动需要加入到系统服务列表里面

[root@bogon mysql]# chkconfig --add mysqld
[root@bogon mysql]# chkconfig --list

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 
      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
      欲查看对特定 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

mysqld          0:关    1:关    2:开    3:开    4:开    5:开    6:关
netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关
[root@bogon mysql]# 

4.可以用 /etc/init.d/mysqld start或者service mysqld start启动服务

5.查看进程和监听的端口

[root@bogon mysql]# ps -ef|grep mysql   
root      74153      1  0 17:38 pts/4    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/bogon.pid
mysql     74288  74153  1 17:38 pts/4    00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/bogon.err --pid-file=/data/mysql/bogon.pid --socket=/tmp/mysql.sock
root      74497  67260  0 17:40 pts/4    00:00:00 grep --color=auto mysql
[root@bogon mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      3936/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1528/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1524/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2836/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      74288/mysqld        
tcp6       0      0 :::22                   :::*                    LISTEN      1528/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1524/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      2836/master         
[root@bogon mysql]# 

6.加入有这种情况,你无法加启动mysql的启动脚本放到/etc/init.d/目录下,可以用下面这种方式启动

[root@bogon mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &

7.关闭mysql

[root@bogon mysql]# killall mysqld
[root@bogon mysql]# 180129 17:53:19 mysqld_safe mysqld from pid file /data/mysql/bogon.pid ended

[1]+  完成                  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql(工作目录:/usr/local/mysql)
(当前工作目录:/data/mysql)
[root@bogon mysql]# 

8.killall mysqld 杀死mysql进程(不要经常用kill这个命令)killall 和 kill 的区别   killall很理性,会在读写完成后在结束进程

[root@bogon mysql]# ps -ef|grep mysql
root      75142  67260  0 17:56 pts/4    00:00:00 grep --color=auto mysql
[root@bogon mysql]# 

9.mysql常见的2中引擎 

  innodb 比较大   和   myisam 比较小

MariaDB安装

 1.包地址

[root@bogon src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

 2.解压包

[root@bogon src]# tar -zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz 

3.将包复制到/usr/local/mariadb

[root@bogon src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
[root@bogon src]# 

4.进入到mariadb下

[root@bogon src]# cd !$
cd /usr/local/mariadb
[root@bogon mariadb]#

5.创建mysql用户和data目录,初始化

[root@bogon mariadb]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb
[root@bogon mariadb]# echo $?
0
[root@bogon mariadb]# 

6.查看是否创建成功data目录

[root@bogon mariadb]# ls /data/mysql/
auto.cnf  bogon.err  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test
[root@bogon mariadb]# ls /data/mariadb/
aria_log.00000001  ib_buffer_pool  ib_logfile0  mysql               test
aria_log_control   ibdata1         ib_logfile1  performance_schema
[root@bogon mariadb]# 

7.拷贝配置文件support-files目录下有多个配置文件各个配置文件对应的缓存数值大小不一样,根据内存大小的不同指定不同的配置,做实验用my-small.cnf就行

[root@bogon mariadb]# ls support-files/
binary-configure        my-large.cnf         mysql-log-rotate  wsrep_notify
magic                   my-medium.cnf        mysql.server
my-huge.cnf             my-small.cnf         policy
my-innodb-heavy-4G.cnf  mysqld_multi.server  wsrep.cnf
[root@bogon mariadb]# 

8.将配置文件拷贝到/usr/local/mariadb/my.cnf

[root@bogon mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf

9.将启动脚本拷贝到/etc/init.d/

[root@bogon mariadb]# cp support-files/mysql.server /etc/init.d/mariadb
[root@bogon mariadb]#

10.修改启动脚本basedir和datadir路径并添加启动命令(如果之前没有安装mysql将my.cnf放到etc下,也不用定义conf变量了)

[root@bogon mariadb]# vim /etc/init.d/mariadb 

  

11.查看是否有mysqld启动

[root@bogon mariadb]# ps -ef|grep mysql
root      13577  67260  0 17:28 pts/4    00:00:00 grep --color=auto mysql
[root@bogon mariadb]# 

12.启动mariadb

[root@bogon mariadb]# /etc/init.d/mariadb start
Starting mariadb (via systemctl):                          [  确定  ]
[root@bogon mariadb]# 

13.启动成功

[root@bogon mariadb]# ps aux|grep mysql
root      19190  0.0  0.1 115372  1744 ?        S    18:13   0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql     19362  0.1  4.9 1127132 49792 ?       Sl   18:13   0:00 /usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mysql --plugin-dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mysql/localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root      20143  0.0  0.0 112660   964 pts/4    S+   18:18   0:00 grep --color=auto mysql
[root@bogon mariadb]# 

14.查看下端口3306

[root@bogon mariadb]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      3936/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1528/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1524/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2836/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      19362/mysqld        
tcp6       0      0 :::22                   :::*                    LISTEN      1528/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1524/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      2836/master         
[root@bogon mariadb]# 

15.有一个问题datadir并不是我们预期的mariadb,这是因为它读取了/etc/my.cnf文件,我们定义的/mariadb下的my.cnf并没有datadir这个参数,它去/etc/my.cnf文件下找去了

16.编辑mariadb的配置文件,添加datadir

[root@bogon mariadb]# vim /usr/local/mariadb/my.cnf 

17.重启mariadb发现datadir目录变成/data/mariadb了

[root@bogon mariadb]# killall mysqld
[root@bogon mariadb]# 
[root@bogon mariadb]# ps aux|grep mysql
root      55359  0.0  0.0 112660   964 pts/4    R+   09:07   0:00 grep --color=auto mysql
[root@bogon mariadb]# /etc/init.d/mariadb start    
Starting mariadb (via systemctl):                          [  确定  ]
[root@bogon mariadb]# ps aux|grep mysql
root      55392  0.0  0.1 115372  1744 ?        S    09:08   0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mariadb --pid-file=/data/mariadb/localhost.localdomain.pid
mysql     55587  5.7  4.9 1127104 49912 ?       Sl   09:08   0:01 /usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mariadb --plugin-dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mariadb/localhost.localdomain.err --pid-file=/data/mariadb/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root      55830  0.0  0.0 112660   964 pts/4    R+   09:08   0:00 grep --color=auto mysql
[root@bogon mariadb]# 

Apache安装

http://blog.csdn.net/u013835877/article/details/39555345

1.下载httpd、apr、apr-util

[root@localhost src]# wget http://mirrors.sohu.com/apache/httpd-2.4.28.tar.gz
[root@localhost src]# wget https://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
[root@localhost src]# wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz

2.依次解压三个包

[root@localhost src]# tar -zxvf apr-util-1.6.1.tar.gz ^C
[root@localhost src]# tar -zxvf apr-1.6.3.tar.gz ^C   
[root@localhost src]# tar -zxvf httpd-2.4.28.tar.gz  

3.先安装apr

[root@localhost src]# cd apr-1.6.3/
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.6.3]# make && make install

4.安装apr-util

[root@localhost apr-1.6.3]# ls /usr/local/apr/
bin  build-1  include  lib
[root@localhost apr-1.6.3]# cd ../apr-util-1.6.1/
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@localhost apr-util-1.6.1]# make && make install

5.安装apache

--prefix:指定安装路径

--with:关联那些包

--enable-so 模块的动态加载

--enable-mods 支持so的模块

[root@localhost httpd-2.4.28]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most  

6.报错了提示没有libpcre not found包,所以需要安装pcre

[root@localhost httpd-2.4.28]# yum list |grep pcre
pcre.x86_64                                 8.32-15.el7                @anaconda
pcre.i686                                   8.32-17.el7                base     
pcre.x86_64                                 8.32-17.el7                base     
pcre-devel.i686                             8.32-17.el7                base     
pcre-devel.x86_64                           8.32-17.el7                base     
pcre-static.i686                            8.32-17.el7                base     
pcre-static.x86_64                          8.32-17.el7                base     
pcre-tools.x86_64                           8.32-17.el7                base     
pcre2.i686                                  10.23-2.el7                base     
pcre2.x86_64                                10.23-2.el7                base     
pcre2-devel.i686                            10.23-2.el7                base     
pcre2-devel.x86_64                          10.23-2.el7                base     
pcre2-static.i686                           10.23-2.el7                base     
pcre2-static.x86_64                         10.23-2.el7                base     
pcre2-tools.x86_64                          10.23-2.el7                base     
pcre2-utf16.i686                            10.23-2.el7                base     
pcre2-utf16.x86_64                          10.23-2.el7                base     
pcre2-utf32.i686                            10.23-2.el7                base     
pcre2-utf32.x86_64                          10.23-2.el7                base     
[root@localhost httpd-2.4.28]# yum install -y pcre-devel

7.再次编译安装./config.....、make && make install

[root@localhost httpd-2.4.28]# cd /usr/local/apache2.4/
[root@localhost apache2.4]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
[root@localhost apache2.4]# 

8.查看apache加载了哪些模块列出编译过的模块。同时能看到哪些模块是static静态编译,哪一些是shared动态加载的。

[root@localhost apache2.4]# bin/apachectl -M

  

[root@localhost apache2.4]# bin/httpd -M

9.启动apache

[root@localhost apache2.4]# bin/apachectl start

  

[root@localhost apache2.4]# ps aux|grep httpd
root      99405  0.0  0.2  70904  2200 ?        Ss   13:18   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon    99406  0.0  0.4 361952  4260 ?        Sl   13:18   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon    99407  0.0  0.4 361952  4260 ?        Sl   13:18   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon    99408  0.0  0.4 361952  4260 ?        Sl   13:18   0:00 /usr/local/apache2.4/bin/httpd -k start
root      99499  0.0  0.0 112680   972 pts/5    R+   13:19   0:00 grep --color=auto http
[root@localhost apache2.4]# 

10.查看端口号

[root@localhost apache2.4]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      3936/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1528/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1524/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2836/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      55587/mysqld        
tcp6       0      0 :::80                   :::*                    LISTEN      99405/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1528/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1524/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      2836/master         
[root@localhost apache2.4]# 

安装PHP5

1.下载php包,查看大小

[root@localhost src]# wget http://mirrors.sohu.com/php/php-5.6.30.tar.gz
[root@localhost src]#du -sh

2.解压压缩包,进入文件夹进行编译

[root@localhost php-5.6.30]# tar -zxvf php-5.6.30.tar.gz 

  

[root@localhost php-5.6.30]# cd php-5.6.30/

查看所有php配置选项 

[root@localhost php-5.6.30]# ./configure --help

--with-apxs2 apache的工具,作用:整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块

--with-config-file-path 指定php的配置文件

[root@localhost php-5.6.30]# ./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

3.如果有报错通过错误提示用yum安装对应的包,然后重新执行./configure.......

[root@localhost php-5.6.30]# yum install -y libxml2-devel
[root@localhost php-5.6.30]# yum install -y openssl-devel
[root@localhost php-5.6.30]# yum install -y bzip2-devel  

4.(1)解决php编译报错configure: error: mcrypt.h not found. Please reinstall libmcrypt.

yum install -y epel-release
yum install -y libmcrypt-devel
两个不能一起安装,因为CentOs7默认的yum源没有 libmcrypt-devel这个包,只能借助epel的yum源,所以先安装epel,再安装
libmcrypt。

[root@localhost php-5.6.30]# yum install epel-release
[root@localhost php-5.6.30]# yum install -y libmcrypt-devel

(2)

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure  –prefix=/usr/local
make
make install

[root@localhost php-5.6.30]# yum install -y libjpeg-devel

  

再去编译安装就可以了。如有其他报错,请根据具体报错解决。

http://www.linuxidc.com/Linux/2014-05/102327.htm

5.配置成功

6.make && make install

7.libphp5.so文件是链接apache和php的

[root@localhost php-5.6.30]# du -sh /usr/local/apache2.4/modules/libphp5.so 
37M     /usr/local/apache2.4/modules/libphp5.so
[root@localhost php-5.6.30]# 

8.查看php所加载的模块

[root@localhost php-5.6.30]# /usr/local/php/bin/php -m
[PHP Modules]
bz2
Core
ctype
date
dom
ereg
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

[root@localhost php-5.6.30]# 

9.php是作为httpd的扩展模块的形式存在,apache想要执行php的脚步需要依赖php  libphp5.so 

[root@localhost php-5.6.30]# ls -l /usr/local/apache2.4/modules/libphp5.so 
-rwxr-xr-x. 1 root root 37752872 2月   1 15:14 /usr/local/apache2.4/modules/libphp5.so
[root@localhost php-5.6.30]# 

  

10.查看apache的配置文件

 

posted @ 2018-01-29 14:38  278108678  阅读(305)  评论(0编辑  收藏  举报