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的配置文件