1、MySQL安装
mysql编译安装时间比较久,所以在此采用二进制包进行安装。
查看系统软件版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
下载X86_64位的glibc类型的mysql数据库软件
[root@localhost ~]# wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-5.6/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz解压到/usr/local下面并重命名为mysql-5.6
[root@localhost ~]# tar xf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz [root@localhost ~]# mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql-5.6如果想下载其他版本的mysql数据库文件可以访问
https://mirrors.huaweicloud.com/mysql/Downloads/
创建mysql用户、数据目录并授权
[root@localhost ~]# useradd -s /sbin/nologin mysql [root@localhost ~]# mkdir -p /data/mysql_data [root@localhost ~]# chown -R mysql. /data/mysql_data/初始化操作
[root@localhost ~]# cd /usr/local/mysql-5.6/ [root@localhost mysql-5.6]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_data
--user:定义用户
--datadir:定义数据目录
1、报错FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解决办法:
[root@localhost mysql-5.6]# yum install 'perl(Data::Dumper)' perl perl-devel -y没有出现错误才初始化成功
配置mysql数据库
[root@localhost mysql-5.6]# cp support-files/my-default.cnf /etc/my.cnf [root@localhost mysql-5.6]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql-5.6]# chmod a+x /etc/init.d/mysqld修改启动脚本为如下
[root@localhost mysql-5.6]# vim /etc/init.d/mysqld basedir=/usr/local/mysql-5.6 datadir=/data/mysql_data启动服务
[root@localhost mysql-5.6]# /etc/init.d/mysqld start Starting MySQL.Logging to '/data/mysql_data/localhost.localdomain.err'. SUCCESS!查看服务是否成功启动
[root@localhost mysql-5.6]# netstat -ntlp|grep mysqld tcp6 0 0 :::3306 :::* LISTEN 27463/mysqld
[root@localhost mysql-5.6]# ps -ef|grep mysql root 27351 1 0 15:14 pts/0 00:00:00 /bin/sh /usr/local/mysql-5.6/bin/mysqld_safe --datadir=/data/mysql_data --pid-file=/data/mysql_data/localhost.localdomain.pid mysql 27463 27351 2 15:14 pts/0 00:00:00 /usr/local/mysql-5.6/bin/mysqld --basedir=/usr/local/mysql-5.6 --datadir=/data/mysql_data --plugin-dir=/usr/local/mysql-5.6/lib/plugin --user=mysql --log-error=localhost.localdomain.err --pid-file=/data/mysql_data/localhost.localdomain.pid root 28011 1877 0 15:14 pts/0 00:00:00 grep --color=auto mysql2、apache编译安装
源码包下载
[root@localhost ~]# wget https://mirrors.huaweicloud.com/apache/httpd/httpd-2.4.46.tar.gz
依赖环境包安装
[root@localhost httpd-2.4.46]# yum install apr apr-devel apr-util apr-util-devel gcc gcc-c++ pcre pcre-devel -y解压并编译安装
[root@localhost ~]# tar xf httpd-2.4.46.tar.gz [root@localhost ~]# cd httpd-2.4.46 [root@localhost httpd-2.4.46]# ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --with-pcre
-prefix 指定安装到哪里,-enable-so表示启用DSO,-enable-deflate=shared表示动态共享的方式编译deflate模块,后面的参数同理。既然可以动态共享当然也可以用静态的方式编译deflate模块。那什么是动态共享,什么是静态?apache 编译安装完成后会生成一个核心的二进制可执行文件叫做htpd,这个文件作为核心文件,提供服务时就是它在处理用户的请求,但是有一些功能,比如这里提到的expires 就是配置静态文件(图片)过期时间的,也就是说图片可以在用户浏览器的临时缓存目录中缓存多久。这些功能是作为httpd的一个扩展模块来工作的,那么这种扩展模块有两种存在的方式,一种是直接在编译的时候和htpd文件拧到一起,组成一个体积大的文件,这种叫做静态。而另外一种方式是,扩展模块作为一个独立的文件存在,只有在使用这个模块时再去调用它,这种叫做动态共享。两种方式中,动态的好处是,核心文件httpd比较小,模块随时用随时加载,耗费内存相对较少。
而静态的优势是,在服务启动时,会把所有模块加载,用到时很快就执行,效率较高。我还是比较倾向用动态。
报错信息:
1、报错checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
解决办法
[root@localhost httpd-2.4.46]# yum install zlib-devel -y没有报错后执行如下命令编译并安装
[root@localhost httpd-2.4.46]# make && make install服务启动
[root@localhost httpd-2.4.46]# /usr/local/apache2/bin/apachectl start查看服务是否启动
3、PHP安装
为什么要把php放到最后来安装,是有原因的,因为我们在编译php的时候,有指定mysql以及apache的路径,如果不先安装好mysql和apache就没有办法安装php。
源码包下载
[root@localhost ~]# wget http://ftp.ntu.edu.tw/php/distributions/php-5.6.9.tar.gz
安装依赖包
yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libjpeg libjpeg-devel libpng libpng-devel
yum install epel-release -y yum install libmcrypt libmcrypt-devel -y
解压编译并安装
[root@localhost ~]# tar xf php-5.6.9.tar.gz [root@localhost ~]# cd php-5.6.9 [root@localhost php-5.6.9]# ./configure \ > -prefix=/usr/local/php \ > -with-apxs2=/usr/local/apache2/bin/apxs \ > -with-config-file-path=/usr/local/php/etc \ > -with-mysql=/usr/local/mysql-5.6 \ > -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 \ > -disable-ipv6 \ > --with-mysql-sock=/tmp/mysql.sock \ > --with-mysqli=/usr/local/mysql-5.6/bin/mysql_config
编译并安装
[root@localhost php-5.6.9]# make && make install
复制配置文件到相应目录
[root@localhost php-5.6.9]# cp php.ini-production /usr/local/php/etc/php.ini
修改apache的配置文件找到
[root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf 找到 392 AddType application/x-gzip .gz .tgz 在下面添加 AddType application/x-httpd-php .php 找到 254 <IfModule dir_module> 255 DirectoryIndex index.html 256 </IfModule> 改为 254 <IfModule dir_module> 255 DirectoryIndex index.html index.htm index.php 256 </IfModule> 找到 197 #ServerName www.example.com:80 改为 197 ServerName localhost:80 找到LoadModule最下面添加如下参数,否则在访问php文件的时候会变为下载 156 LoadModule php5_module modules/libphp5.so 找到 235 Options Indexes FollowSymLinks 改为如下,意思是不显示目录结构 235 Options FollowSymLinks
测试配置文件是否有误并重启apache服务
[root@localhost ~]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@localhost ~]# /usr/local/apache2/bin/apachectl restart
创建php测试文件并测试
[root@localhost ~]# vim /usr/local/apache2/htdocs/phpinfo.php <?php phpinfo(); ?>
防火墙配置
[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp [root@localhost ~]# firewall-cmd --reload
浏览器测试访问情况,出现如下界面才表示apache可以解析php语言了
至此,LAMP搭建成功