什么是LAMP:
LAMP = Linux Apache Mysql/MariaDB PHP/Perl/Python,这些软件都是开源免费的软件,几个程序各自独立的,经常为了达到我们需要的效果协同工作,组成了我们常见的LAMP架构平台!
Nginx 和Apache 都能处理静态和动态页面,Nginx支持高并发,处理静态性能是Apache 5—6倍,Apache对PHP的运行比较稳定。
常见的网页类型:htm、html、shtml、stm.php、asp、aspx、shtm、jsp等等Apache本身只处理 html 静态页面,处理动态页面需要使用 libphp5.so 这个模块去工作,编译PHP也其实是将一个至关重要的模块打入到apache内部,然后Apache收到PHP请求,将请求交给这个模块处理。
LAMP部署使用到的相关网站:
Apache:http://httpd.apache.org/ httpd主程序包
MySQL:http://dev.mysql.com/downloads/mysql/ Mysql主程序包
PHP:http://php.net/downloads.php/ PHP主程序包
apr :http://apr.apache.org/ apr是httpd的依赖包
apr-util :http://apr.apache.org/ apr-util是httpd的第二个依赖包
pcre : http://pcre.org/ httpd的第三个依赖包
apr 和 apr-util 这个两个软件是对后端服务软件进行优化的。
apr-util 只是在 apr 的基础上提供了更多的数据结构个操作系统封装接口而已。
PCRE(Perl Compatible Regular Expression 中文含义:Perl 语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和 PHP 脚本语言、R脚本语言,此外,正如其名字所能看到的,PCRE也是Perl语言的缺省正则库。
对应我们源码编译的版本:
编译安装LAMP所需要及其所使用的源码版本:
httpd version:httpd-2.4.16
apr version :apr-1.5.2
pcre version :pcre-8.37
apr-util version :apr-util-1.5.4
mysql version : mysql-5.6.26
php version : php-5.6.13
1、LAMP源码编译的基础环境
[root@Lamp ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@Lamp ~]# uname -a
Linux Lamp 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
2、确保系统的干净,不要和现在源码编译安装的软件冲突。
不要在一个系统上同时存在 RPM-Apache 和 源码-Apache
建议在编译之前,把开发组包安装:
[root@Lamp ~]# yum groupinstall -y "Development Tools" "Development Libraries"
[root@Lamp ~]# yum install -y gcc gcc-c++ openssl-devel
上传软件包:
[root@Lamp ~]# yum insatll -y lrzsz
[root@Lamp ~]# cd /opt/
[root@Lamp opt]# rz
[root@Lamp opt]# ll
total 52588
-rw-r--r-- 1 root root 53846945 Jun 1 23:44 lamp源码编译软件包.7z
[root@Lamp opt]#
安装7z解压工具,并且解压软件包:
安装7z解压工具,参考文章:
https://blog.csdn.net/u011138447/article/details/52066610
解压软件包:
[root@Lamp opt]# 7za e lamp源码编译软件包.7z -o/opt/
解压后:
3、安装Apache
提前将Apache的依赖 apr 和 apr-util 安装:
[root@Lamp opt]# tar xf apr-1.5.2.tar.gz -C /usr/local/src/ #将apr解压到/usr/local/src/下面
[root@Lamp opt]# tar xf apr-util-1.5.4.tar.bz2 -C /usr/local/src/ #将apr-util解压到/usr/local/src/下面
编译安装apr:
[root@Lamp src]# cd apr-1.5.2/
[root@Lamp apr-1.5.2]# ./configure --prefix=/usr/local/apr
[root@Lamp apr-1.5.2]# echo $? #检验预编译是否成功
[root@Lamp apr-1.5.2]# make -j8 && make install -j8 #预编译成功之后,make编译以及make install 安装可以一起进行。
编译安装apr-util:
[root@Lamp apr-1.5.2]# cd ../apr-util-1.5.4/
[root@Lamp apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ #apr-util的安装是基于apr的,所以要是用--with-apr参数告诉apr-util,apr在那个目录下面。
[root@Lamp apr-util-1.5.4]# echo $?
[root@Lamp apr-util-1.5.4]# make -j8 && make install -j8
编译安装pcre:
[root@Lamp opt]# tar xf pcre-8.37.tar.bz2 -C /usr/local/src/
[root@Lamp opt]# cd /usr/local/src/pcre-8.37/
[root@Lamp pcre-8.37]# ./configure --prefix=/usr/local/pcre
[root@Lamp pcre-8.37]# echo $?
[root@Lamp pcre-8.37]# make -j8 && make install -j8
编译安装http:
[root@Lamp opt]# tar xf httpd-2.4.16.tar.bz2 -C /usr/local/src/
[root@Lamp opt]# cd /usr/local/src/
[root@Lamp src]# cd httpd-2.4.16/
[root@Lamp httpd-2.4.16]# ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-rewrit --enable-ssl --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/ --enable-modiles=most --enable-mpms-shared=all --with-mpm=event #所使用到的参数,具体使用--help去查看。
[root@Lamp httpd-2.4.16]# echo $?
[root@Lamp httpd-2.4.16]# make -j8 && make install -j8
将apache启动脚本放到/etc/init.d/下面。并且赋予可执行权限:
[root@Lamp httpd-2.4.16]# cp -a /usr/local/apache2.4/bin/apachectl /etc/init.d/
[root@Lamp httpd-2.4.16]# chmod +x /etc/init.d/apachectl
修改启动脚本如下:
[root@Lamp httpd-2.4.16]# vim /etc/init.d/apachectl
添加标红行:
[root@Lamp httpd-2.4.16]# vim /usr/local/apache2.4/conf/httpd.conf
将域名修改成地址,Apache启动就不会很慢。基础问题,不在赘述为什么
启动Apache:
[root@Lamp httpd-2.4.16]# /etc/init.d/apachectl start
设置Apache开机自启动:
[root@Lamp httpd-2.4.16]# chkconfig apachectl on
默认Apache启动用户是daemon的系统用户,不太安全,需要进行修改:
新增系统用户名为apache,并且设置为apache的启动用户:
[root@Lamp httpd-2.4.16]# useradd -M -s /sbin/nologin apache #-M表示不创建用户家目录
修改用户:
重启Apache之后,查看用户:修改成不知名用户,保证安全;
最后给用户授权:修改属组属主
[root@Lamp httpd-2.4.16]# chown -R apache:apache /usr/local/apache2.4
4、安装Mysql
编译安装Mysql:
[root@Lamp httpd-2.4.16]# cd /opt/
[root@Lamp opt]# tar xf mysql-5.6.26.tar.gz -C /usr/local/src/
Mysql 从5.5版本一会后,使用了cmake的编译方式安装,所以需要安装cmake,而cmake又依赖于ncurses-devel的工具
解决依赖:
[root@Lamp opt]# yum install -y cmake ncurses-devel
编译安装Mysql一定要指明用户的,需要创建新用户:
[root@Lamp opt]# cd /usr/local/src/mysql-5.6.26/
[root@Lamp mysql-5.6.26]# useradd -M -s /sbin/nologin mysql
使用cmake进行编译:
[root@Lamp mysql-5.6.26]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装路径
> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #定义mysql.sock套接字文件放在哪里!
> -DDEFAULT_CHARSET=utf8 \ #默认的字符集uft8
> -DDEFAULT_COLLATION=utf8_general_ci \ #默认的字符集校验
> -DWITH_EXTRA_CHARSETS=all \ #支持所有的其他字符集
> -DWITH_MYISAM_STORAGE_ENGINE=1\ #支持MYISAM引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1\ #支持INNOBASE引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1\ #支持MEMORY引擎
> -DWITH_READLINE=1\ #支持READLINE库
> -DENABLED_LOCAL_INFILE=1\ #允许本地导入,启用加载本地数据
> -DMYSQL_DATADIR=/usr/local/mysql/data \ #数据文件存放的位置
> -DMYSQL-USER=mysql #使用的用户是谁
这些编译参数的帮助寻找方法:
http://www.mysql.com > Documentation > 选择对应的版本(5.6) > HTML Online > View > installation & Upgrades > Installing MySQL from Source > MySQL Source > Configuration Options > http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
进行编译安装:
[root@Lamp mysql-5.6.26]# make -j8 && make install -j8
安装过程一般需要10—15分钟,过程如下:
默认属主属组都是root,需要修改成mysql:
[root@Lamp mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/
[root@Lamp mysql-5.6.26]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #cp启动脚本到init.d下面
[root@Lamp mysql-5.6.26]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf #移动mysql的配置文件,覆盖掉my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@Lamp mysql-5.6.26]#
修改启动脚本:写明mysql安装的路径,以及数据存放的路径;
[root@Lamp mysql-5.6.26]# vim /etc/init.d/mysqld
给启动脚本添加可执行权限:
[root@Lamp mysql-5.6.26]# chmod +x /etc/init.d/mysqld
设置开机运行mysql的启动脚本:
[root@Lamp mysql-5.6.26]# chkconfig mysqld on
初始化Mysql数据库:
指明默认的配置文件、安装目录、数据存储的目录、以及用户
[root@Lamp ~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --use=mysql
查看mysql中的数据库:
做个软连接,让系统可以调用mysql:
[root@Lamp ~]# ln -s /usr/local/mysql/bin/* /bin/
启动mysql:
[root@Lamp ~]# /etc/init.d/mysqld start
mysql初始化安全设置:
在之前的文章中有所描述,在此博文中将不做赘述;
[root@Lamp ~]# mysql_secure_installation
进行了密码设置之后,直接mysql并不能进入到数据库中,需要 mysql -uroot -p062937 才可以进入。
5、安装PHP
安装PHP的依赖——libxml2-devel lib是功能库,xml是一种语言,大多数用来写模板的,支持PHP的。一般在扩展源里面都是有的;
[root@Lamp opt]# yum install -y libxml2-devel
解压PHP:
[root@Lamp opt]# tar xf php-5.6.13.tar.bz2 -C /usr/local/src/
编译安装:
[root@Lamp src]# cd php-5.6.13/
[root@Lamp php-5.6.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php
[root@Lamp php-5.6.13]# echo $?
[root@Lamp php-5.6.13]# make -j8 && make install -j8
如下图:
php.ini-development 测试环境PHP配置文件
php.ini-production 生产环境PHP配置文件
将php.ini-production放置到安装路径,并修改名称为php.ini作为PHP的配置文件如下:
[root@Lamp php-5.6.13]# cp php.ini-production /usr/local/php/php.ini
查看apache控制php所使用的模块文件:
在PHP中添加时区:
[root@Lamp php-5.6.13]# vim /usr/local/php/php.ini
查看apache源码安装,默认页面的目录内容:
修改apache配置文件:
[root@Lamp htdocs]# vim /usr/local/apache2.4/conf/httpd.conf
修改内容如下:
增加index.php的文件:
[root@Lamp htdocs]# pwd
/usr/local/apache2.4/htdocs
[root@Lamp htdocs]# vim index.php
index.php内容如下:
<?php
phpinfo();
?>
重启apache:
[root@Lamp htdocs]# /etc/init.d/apachectl restart
关闭firewalld iptables Selinux,并用curl进行测试:
发现curl访问不到,查到最后是权限问题,如下:
需要修改index.php文件属主属组为apache用户,并重启Apache:
使用浏览器访问,可以看到PHP测试页面:
此时PHP只是一个测试页面,可以使用wordpress进行测试,如下:
上传wordpress:
由于是以 .zip 结尾,所以需要安装unzip:
[root@Lamp opt]# yum install -y unzip
解压wordpress:
[root@Lamp opt]# unzip wordpress-4.8.zip
将解压的wordpress文件,全部cp到Apache中的htdocs目录下,并重启Apache:
[root@Lamp opt]# ll
total 115732
-rw-r--r-- 1 root root 1031613 May 30 2016 apr-1.5.2.tar.gz
-rw-r--r-- 1 root root 694427 May 30 2016 apr-util-1.5.4.tar.bz2
-rw-r--r-- 1 root root 5101005 May 30 2016 httpd-2.4.16.tar.bz2
drwx------ 2 root root 6 Jul 7 2016 lamp源码编译软件包
-rw-r--r-- 1 root root 53846945 Jun 1 23:44 lamp源码编译软件包.7z
-rw-r--r-- 1 root root 33278710 May 30 2016 mysql-5.6.26.tar.gz
-rw-r--r-- 1 root root 1557603 May 30 2016 pcre-8.37.tar.bz2
-rw-r--r-- 1 root root 14077633 May 30 2016 php-5.6.13.tar.bz2
drwxr-xr-x 5 root root 4096 Jun 8 2017 wordpress
-rw-r--r-- 1 root root 8901913 Jun 1 23:44 wordpress-4.8.zip
[root@Lamp opt]# cp -a wordpress/* /usr/local/apache2.4/htdocs/
[root@Lamp opt]# /etc/init.d/apachectl restart
[root@Lamp opt]#
使用本地浏览器去访问业务:
定义数据库的名称、用户名、密码都为zhanggeng:
需要提前在mysql中进行创建
在Mysql中创建databases:内容如下,之前博文中有相关内容,不在赘述;
[root@Lamp ~]# mysql -uroot -p062937
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.6.26 Source distribution
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zhanggeng;
Query OK, 1 row affected (0.01 sec)
mysql> grant all on zhanggeng.* to 'zhanggeng'@'localhost' identified by 'zhanggeng';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
创建好之后,在浏览器中的wordpress就可以进行下一步了;
点击Run the install 进行安装:
安装之后,进行Username 和 Password 的注册,以及site标题的设定,如下:
之后会注册成功,如下:
输入用户名和密码进入:
成功进入到博客页面,Site名称 执笔、画江山,进入之后可以进行更多的设置: