目的就是为了配置:LAMP架构,网上的教程都是单独的并没有合起来,由于配置的环境不一样,所以有很多的问题、走了很多弯路,总结之后我决定写一个总的教程,避免后来者少走弯路。
apache版本 2.4
php版本7.4
mysql版本5.7
因为是三个合起来,所以篇幅还是有一定长度的,不过学习就是要有耐心。
1、 配置apache
apache 包在网上也可以找到很多,我这里也是提供我在网上找的一个大佬分享的资源:
链接:https://pan.baidu.com/s/1qPUO_gwXnJTk8u0xpiouVQ
提取码:ygqa
当然源码安装也是需要环境的,比如gcc gcc-c++ 、、、、、、这个我就不做过多的说明了,然后再安装的过程也不是一帆风顺的,有些包编译和安装是需要通过某个依赖包去解析的,所以你还得一步步去安装依赖包,这个教程并不能解决所有问题,但可以给你一个清晰的步骤,let’s go!
下载好包之后传到我们的系统上,最好是专门创建一个目录放置各种包
[root@wange /]# mkdir soft
[root@wange /]# cd soft
[root@wange soft]# ll
total 12988
-rw-r--r--. 1 root root 1073556 Apr 10 14:52 apr-1.6.5.tar.gz
-rw-r--r--. 1 root root 554301 Apr 10 14:52 apr-util-1.6.1.tar.gz
-rw-r--r--. 1 root root 9177278 Apr 10 14:52 httpd-2.4.37.tar.gz
-rw-r--r--. 1 root root 1167026 Apr 10 14:52 pcre-7.7.tar.gz
-rw-r--r--. 1 root root 1315580 Apr 10 14:52 pcre-8.11.tar.gz
因为是源码安装所以这几个包的安装是顺序的,不然就会报错:
[root@wange soft]# tar -zxvf apr-1.6.5.tar.gz
[root@wange soft]# cd apr-1.6.5/
[root@wange apr-1.6.5]# ./configure --prefix=/usr/local/apr
[root@wange apr-1.6.5]# echo $? //检测上一步的配置有没有错
0
[root@wange apr-1.6.5]# make //编译
[root@wange apr-1.6.5]# echo $?
0
[root@wange apr-1.6.5]# make install
[root@wange apr-1.6.5]# echo $?
0
这样子就成功安装好了第一个步骤。(是一个好的开始)
[root@wange apr-1.6.5]# cd ..
[root@wange soft]# tar -zxvf apr-util-1.6.1.tar.gz
[root@wange apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@wange apr-util-1.6.1]# echo $?
0
[root@wange apr-util-1.6.1]# make
[root@wange apr-util-1.6.1]# echo $?
0
[root@wange apr-util-1.6.1]# make install
[root@wange apr-util-1.6.1]# echo $?
0
第二步完成!
[root@wange soft]# cd ..
[root@wange soft]# tar -zxvf pcre-8.11.tar.gz
[root@wange soft]# cd pcre-8.11/
[root@wange pcre-8.11]# ./configure --prefix=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@wange pcre-8.11]# echo $?
0
[root@wange pcre-8.11]# make
[root@wange pcre-8.11]# echo $?
0
[root@wange pcre-8.11]# make install
[root@wange pcre-8.11]# echo $?
0
第三步完成!
[root@wange soft]# cd ..
[root@wange soft]# tar -zxvf httpd-2.4.37.tar.gz
[root@wange soft]# cd httpd-2.4.37/
[root@wange httpd-2.4.37]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
[root@wange httpd-2.4.37]# echo $?
0
[root@wange httpd-2.4.37]# make //这个make会久一点,不要慌!
[root@wange httpd-2.4.37]# echo $?
0
[root@wange httpd-2.4.37]# make install
[root@wange httpd-2.4.37]# echo $?
0
好的,到这里已经成功了三分之一了,下面来看看结果!
[root@wange httpd-2.4.37]# cd /usr/local/apache/bin/
[root@wange bin]# ./apachectl start //这里会提示你的ServerName没有设置,没事,放心!
[root@wange bin]# ps -ef | grep httpd
root 36944 1 0 15:40 ? 00:00:00 /usr/local/apache/bin/httpd -k start
daemon 36945 36944 0 15:40 ? 00:00:00 /usr/local/apache/bin/httpd -k start
daemon 36946 36944 0 15:40 ? 00:00:00 /usr/local/apache/bin/httpd -k start
daemon 36947 36944 0 15:40 ? 00:00:00 /usr/local/apache/bin/httpd -k start
root 37032 1097 0 15:42 pts/0 00:00:00 grep --color=auto httpd
这样子我们就启动了apache服务了,默认是80端口,有需要也可以设置(因为浏览器默认访问服务器端口就是80)这时就可打开我们的浏览器输入IP访问我们的服务器了,你会看到:
证明你成功的配置好你的apache服务器了,那么段it works又是再哪里设置呢?/usr/local/apache/htdocs 这个目录下的index.html
什么?你无法访问页面(不好意思这个问题我也遇到过),首先前提是前面的配置没有问题:检查Linux防火墙 iptables -F清空然后再次访问。如果这样还不行的话,就换一个浏览器,我测过了Microsoft Edge 是不行的,火狐是可以的,至于为什么我就不知道了,有知道的大佬可以评论告之,谢谢啦。
2、mysql安装
mysql安装就很简单啦,这一段大概15分钟,不要急!
因为官网下载的话就很慢,我们年轻人一定要科学上网,当然可以挂VPN了,但其实老一辈的人已经为我们铺好路子了,我这里推荐一个搜狐的镜像网站http://mirrors.sohu.com,这里有很多资源可以自行取,我们这里安装mysql,弱水三千,只取mysql:
http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
然后开始安装:
[root@wange htdocs]# cd /soft
[root@wange soft]# wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-i686.tar.gz
// 这一段其实要大概20分钟,不过会比官网快,诶,我没骗你啊,我是说安装15分钟,没说下载哈。
[root@wange htdocs]# mv mysql-5.7.23-linux-glibc2.12-i686 /usr/local/mysql
[root@wange soft]# groupadd mysql
[root@wange soft]# useradd -r -g mysql mysql //创建用户和组
[root@wange /]# mkidr -p /data/mysql //创建数据目录
[root@wange /]# chown mysql:mysql -R /data/mysql //赋予用户权限
[root@wange /]# cd /etc/
[root@wange etc]# ll | grep my.cnf
-rw-r--r--. 1 root root 570 Jun 8 2017 my.cnf //要配置这个文件,如果没有就创建
drwxr-xr-x. 2 root root 31 Feb 23 21:47 my.cnf.d
[root@wange etc]# vi my.cnf
再mysqld 下面加入这几个量:
bind-address=0.0.0.0
port=3306 //指定端口
user=mysql //指定用户
basedir=/usr/local/mysql //指定源目录
datadir=/data/mysql //指定数据目录
socket=/tmp/mysql.sock
//建议不要采用默认的配置文件,可以把原来的注释掉
[root@wange etc]# cd /usr/local/mysql/bin/
[root@wange bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/
--datadir=/data/mysql/ --user=mysql --initialize
//初始化mysql,成功了之后/data/mysql就会生成文件了
[root@wange mysql]# ll
total 110632
-rw-r-----. 1 mysql mysql 56 Apr 10 17:49 auto.cnf
-rw-r-----. 1 mysql mysql 417 Apr 10 17:49 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Apr 10 17:49 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Apr 10 17:49 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Apr 10 17:49 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 Apr 10 17:49 mysql
-rw-r-----. 1 mysql mysql 612 Apr 10 17:49 mysql.err
drwxr-x---. 2 mysql mysql 8192 Apr 10 17:49 performance_schema
drwxr-x---. 2 mysql mysql 8192 Apr 10 17:49 sys
[root@wange mysql]# cat mysql.err
2020-04-10T09:49:54.507295Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-04-10T09:49:54.570904Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-04-10T09:49:54.627459Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a16e4aba-7b10-11ea-98a1-000c291a90cf.
2020-04-10T09:49:54.628929Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-04-10T09:49:54.629818Z 1 [Note] A temporary password is generated for root@localhost: JK3s87LYdu-j
//这是mysql的初始密码,复制这个
[root@wange support-files]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //把启动脚本拷到init.d目录下
[root@wange support-files]# service mysql start //启动mysql
Starting MySQL. SUCCESS!
[root@wange support-files]# ps -ef| grep mysql //查看进程
[root@wange support-files]# vi /etc/profile //配置环境变量
在最后加入这一段:
export PATH=$PATH:/usr/local/apache/bin:/usr/local/mysql/bin //这里顺便把apache环境变量加了
[root@wange support-files]# source /etc/profile
[root@wange support-files]# mysql -uroot -p
Enter password: //密码是刚才的初始密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23
Copyright (c) 2000, 2018, 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>
最后设置密码:
mysql> set password = password("123456")
-> ;
mysql> alter user 'root'@'localhost' password expire never;
mysql> flush privileges; //不要忘了刷新权限
这样子就把mysql配置好了,是不是很简单!好吧,因人而异,我刚开始也是琢磨了好久,不过学习的快乐也是在此!
下面是最后一步了,这里建议活动下眼睛休息一两分钟,能看到这里你已经很棒了!!!
3、配置php
去官网下载包:
有的人还会用5.x,不过没有关系配置过程大相径庭,按自己喜好来吧,我这里就配置7.x的吧
https://www.php.net/distributions/php-7.4.4.tar.gz
[root@wange soft]# wget https://www.php.net/distributions/php-7.4.4.tar.gz
[root@wange soft]# tar -zxvf php-7.4.4.tar.gz
[root@wange /]# groupadd php //创建用户和组
[root@wange /]# useradd -g php php
在安装之前要先配置环境:
yum install -y libxml-devel
yum install -y libxml2-dev
yum install libxml2-devel
yum install openssl-devel
yum install sqlite-devel
yum install libcurl-devel
yum install bzip2 bzip2-devel
yum install http://rpms.remirepo.net/enterprise/7/remi/x86_64//oniguruma5-6.9.4-1.el7.remi.x86_64.rpm
yum install http://rpms.remirepo.net/enterprise/7/remi/x86_64//oniguruma5-devel-6.9.4-1.el7.remi.x86_64.rpm
yum -y install libjpeg-devel
然后开始安装准备,为什么要准备?因为真的太多了!
./configure --prefix=/usr/local/php //这个是php的安装路径
–with-apxs2=/usr/local/apache/bin/apxs //这个是apache的apxs路径,要配置apache能解析php要用到
–with-config-file-path=/usr/local/php/etc //这个是php配置文件
–with-mysqli //php7以上将不支持mysql了,所以这里就用mysqli
下面是安装的包,因为通过yum已经安装好了就不用指定路径
–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
下面是一些开关,是关于php的某些功能的(这个我不是很清楚,有知道的到大佬可以评论说一下)
–enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
知道你们懒,这里我给复制了一份:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc --enable-mbstring --with-openssl --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl
接下来就很简单了!
make && make install
echo $?
没问题后继续:
复制启动脚本:
cd /soft/php-7.4.4
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm //给一个可执行权限
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vi php-fpm.conf //去掉 pid = run/php-fpm.pid 前面的分号
cd php-fpm.d
cp www.conf.default www.conf
vi www.conf //修改user和group的用户为当前用户(也可以不改,默认会添加nobody这个用户和用户组)这里修改为设定的组和用户
/etc/init.d/php-fpm start //php-fpm启动命令
/etc/init.d/php-fpm stop //php-fpm停止命令
/etc/init.d/php-fpm restart //php-fpm重启命令
ps -ef | grep php 或者 ps -A | grep -i php //查看是否已经成功启动PHP
到这一步我们的php也配置好了,下面就是让apache支持解析php了
前提是前面的php在编译的时候设置好apxs
cd /usr/local/apache/conf
vi httpd.conf
//要修改四个地方
ServerName www.(本机ip).com:80
<Directory />
AllowOverride none
#Require all denied //把这里注释掉
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php //加上index.php
</IfModule>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php //添加这一段,加载模块用的
cd /usr/local/apache/bin
./httpd -M //加载模块,会看到有php7
到这里我们所有的配置都完成了
重启apache,看看结果
[root@wange modules]# apachectl stop
[root@wange modules]# apachectl start
在/usr/local/apache/htdoc下创建一个php测试文件
vi test.php
输入:
<?php
phpinfo();
?>
现在去网页上看看结果:
ip/test.php 你会看到一个php主页
到这里就全部结束了,感谢你看到这里,希望这篇教程会对你有所帮助,虽然很长很长,但就是想做一份总的教程,分享一下经验。mysql那一部分我可能过于话多了,但是想做的尽量详细点,毕竟莫名其妙就会踩坑。如果有什么不对的欢迎留言。