阿里云 Linux(centos7.2) 中 lamp/lnmp 源码编译安装与配置 (荐)

理论

什么是LAMP    

  • LAMP = Linux + Apache + MySQL +PHP
为什么使用LAMP

  • 涵盖了整个web的开发流程
  • 流行、免费、开源、轻量(新版的Apache只有7M)
Linux

  • 开源的类Unix操作系统,可以免费使用和自由传播
  • Centos、Ubuntu、Redhat、红旗都是其他发行版本
Linux与Windows

  • Linux与Windows有质的不同
  • 用户假设(面向的群体,Linux的用户明白自己做什么 想要什么 并会为此行为负责,Windows则恰恰相反,通俗来说就是高端与小白用户)、软件哲学
  • Linux的优势是完全免费、稳定高效(windows不能长时间不关机使用、软件卸载不干净等...)
PHP

  • 不概述
MySQL

  • 开源、免费、高性能的关系型数据库
Apache

  • apache是web服务器软件
  • 运行大致流程:首先客户端通过浏览器访问一个IP 》 这个IP上肯定启动了服务器软件,且(apache)监听了某一个端口 》数据顺着端口进入了apache 》 apache拿到数据通过http/https协议等进行解析 整理数据,转发给PHP进行业务的处理 》 PHP业务处理完成之后再返回给apache 》 apache最后再返回给客户端 》客户端从浏览器展示给了用户
Nginx

  • Nginx与Apache一样,都是web服务器软件
  • 目前最受欢迎的服务器软件
  • nginx与apache相比:Nginx拥有更好的前景、配置轻松、性能优越(对于性能的优越下面大致阐述)
         性能优越:Apache采用的是select轮训机制,所谓的轮训打个比方说就是它可能监听了1000个链接,其中不论哪一个链接发生了变化或者新的动态,它会采用for循环一样的东西,进行循环来看,并且这个循环是个死循环。但是对于Nginx来说,它采用的是epoll,epoll是一个非常高效的事件监听机制,它不会主动的轮训,而是采用了监听 哪一个链接发生了变化,然后第一时间感知 然后将链接进行处理


编译安装 及 如何进行编译安装(主要有两种方式)

  • 编译安装是在Linux中安装软件的主要方式之一 (将下载的软件源代码进行编译 安装。方式二 源安装 (centos中使用的yum、debian系列中的apt-get等)
  • 一、编译前的准备工作   ./configure
  • 二、编译:make    (将源码编译成二进制文件)
  • 三、安装:make install 


实战

本节是阐述在云服务器安装la/nmp环境 并没有从底层搭建开始,如果是虚拟机用户 后期会出相应教程

安装PHP


  • 第一步:访问 php 官网 ,并且点击导航栏下载(download),在众多PHP版本中选择版本(我选择了 php-7.1.16)
  • 第二步:点击 php-7.1.16 找到镜像下载站点(我选择了香港 'hk1.php.net'),右键 复制该下载链接
  • 第三步:在远程命令窗口中输入以下命令 (其中http://hk1.php.net/get/php-7.1.16.tar.gz/from/this/mirror就是我们官网复制的链接
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# wget http://jp2.php.net/get/php-7.2.5.tar.gz/from/this/mirror   
  2.   
  3. 以上命令行如果 显示未找到 wget 命令,说明没有这个小工具,需要安装,输入命令 sudo yum install wget 安装  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# tar -zxvf mirror  
第四步:输入命令,解压下载完成的tar包
  • 第五步:这一步只是一个小常识 单纯的安装PHP是不能与Nginx一起工作的,它只能与Apache一起工作,如果想安装Nginx来作为web server的话,需要安装一个软件 叫做phpfpm,phpfpm是以补丁的形势存在的,点击这里是对phpfpm安装的简介,其中有一句“编译 PHP 时需要 --enable-fpm 配置选项来激活 FPM 支持。”
  • 第六步:因为是编译安装 所以我们要下载编译的软件工具 gcc 和其他一些组件,输入以下命令安装

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# sudo yum install gcc gcc++ libxml2-devel  
用了root权限安装 (sudo)
  • 第七步:cd /php-7.1.16 后 使用 ./configure 进行编译安装的第一步 (安装成功会在最后看到 Thank you for using PHP. )
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# cd php-7.2.5/  
  2.   
  3. [root@iZ2zeeq04koeqssc98d0okZ php-7.2.5]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm  
命令解释 :./configure 安装前的配置   --prefix= 安装的目录    --enable-fpm 编译 PHP 时需要 --enable-fpm 配置选项来激活 FPM 支持。
注意:输入以上命令之后先不要着急去/usr/local/下找php7这个目录, 会不显示出来,要留在 php-7.1.16目录中

  • 第八步:在php-7.1.16目录中输入命令
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ php-7.2.5]# make  

由于此刻编译时间较久 先大致叙述一下什么是 phpfpm

        phpfpm是fast CGI的管理器,只能适用于PHP。


什么是fastCGI 与 CGI?

        fast CGI是与语言无关的CGI开放扩展,主要将CGI进程保持在内存当中,借此获得较高的性能,fastCGI每次都会执行着,不会每一次都去fork一个子进程。相对于CGI来说,每次fork一个子进程是CGI固定的模式。

        CGI的全称是 公共网关接口 它是一个协议,约定web server与动态程序之间的数据传输


白话翻译什么是fastCGI与CGI

    fastCGI:CGI在处理请求的时候会fork一个子进程,处理完成之后会释放,下一次请求的时候再fork再释放,这种方式比较没有效率。因此fastCGI诞生了,fastCGI是程序主动启用一个进程,这个进程下有多个子进程并且这些子进程都会常驻在内存当中,就避免了fork 与 释放。当然了,fastCGI在忙的时候也会启用新的进程来帮忙,在闲暇时又会将闲暇的进程结束保证了资源不被浪费。

    CGI:是保证web server传输过来的数据是标准格式方便CGI程序的编写者(打个比方 在Nginx下访问 index.php,这时Nginx会启动CGI来处理,而我们的PHP解释器它就是一个CGI程序)


什么是phpfpm?

        phpfpm就是实现了fastCGI这个协议的程序,是第三方的,后来被PHP官方购买了。所以现在我们就可以在官网下载并使用了。

  • 第九步:编译完成后最后显示make test 表示编译成功,继续执行以下命令
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ php-7.2.5]# sudo make install  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ php-7.2.5]# cp -f php.ini-production /usr/local/php/etc/php.ini               

  • 第十步:执行安装之后我们可以创建一个测试用例 执行以下测试文件 看看是否安装成功了。

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ php-7.2.5]# cd /  
  2. [root@iZ2zeeq04koeqssc98d0okZ /]# vim index.php  
   

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# /usr/local/php/bin/php index.php  

        以上 如果执行结果是PHPINFO的信息 说明PHP安装成功!

        -- complate!



安装Nginx

  • 第一步:与上面的安装大致一样,点击进入Nginx官网 并选择'stable version'(稳定版本),这里我下载了稳定版本的nginx-1.14.0 ,右键复制该链接,然后wget下载 命令如下,下载完成之后并解压
[php]  view plain  copy
  1.   
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# cd /  
  2. [root@iZ2zeeq04koeqssc98d0okZ /]# wget http://nginx.org/download/nginx-1.14.0.tar.gz  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# tar -axvf nginx-1.14.0.tar.gz  

# 此时我们可以运用以下命令来查看以下nginx的大小

 ls -alh | grep nginx

# 我们可以看到nginx的大小只有 rw-r--r--   1 root  root  993K 4月  17 23:35 nginx-1.14.0.tar.gz       993K
# 可见nginx做的优秀
  • 第二步:进入解压完成的nginx并配置编译

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ / ]# cd nginx-1.14.0  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ / ]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz  
  2. [root@iZ2zeeq04koeqssc98d0okZ / ]# tar -zxvf pcre-8.38.tar.gz  
  3. [root@iZ2zeeq04koeqssc98d0okZ / ]# cd pcre-8.38  
  4. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# ./configure --prefix=/usr/local/pcre-8.38  
  5. 注:如果出现configure: error: You need a C++ compiler for C++ support. 错误 请安装gcc  
  6.   
  7.                     yum -y install gcc-c++  
  8.   
  9.   
  10.   
  11. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# make  
[php]  view plain  copy
  1.   
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# sudo make install  
[php]  view plain  copy
  1.   
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# cd ../nginx-1.14.0   
  2. [root@iZ2zeeq04koeqssc98d0okZ nginx-1.14.0 ]# ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.38/  
路径释义  --prefix=/usr/local/nginx 安装目录    --with-pcre=../pcre-8.38/ 依赖正则 URL重写的功能
  • 第三步:编译、安装

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ nginx-1.14.0]# make  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ nginx-1.14.0]# make install  
  • 第四步:编译安装成功之后,进入nginx的安装目录 启动nginx(由于之前启动了apache,所以要kill之后再启动nginx)
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# cd /usr/local/nginx/sbin  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# ps aux|grep httpd  

# 运行如下

root     17172  0.0  0.2  70620  2220 ?        Ss   01:52   0:01 /usr/local/apache/binhttpd -k start

daemon   17173  0.0  0.4 490656  4588 ?        Sl   01:52   0:00 /usr/local/apache/binhttpd -k start

daemon   17174  0.0  0.4 556192  4620 ?        Sl   01:52   0:00 /usr/local/apache/binhttpd -k start

daemon   17175  0.0  0.4 556192  4784 ?        Sl   01:52   0:00 /usr/local/apache/binhttpd -k start

daemon   17275  0.0  0.4 818336  4968 ?        Sl   01:56   0:00 /usr/local/apache/binhttpd -k start

root     32513  0.0  0.0 110228   908 pts/0    R+   23:51   0:00 grep --color=auto httpd


[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ nginx-1.14.0]# kill -9 输入进程编号 杀死对应进程  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# ps aux|grep httpd  

#kill之后的httpd

root     32546  0.0  0.0 110228   908 pts/0    R+   23:54   0:00 grep --color=auto httpd

  • 第五步:启动nginx

sbin]# sudo ./nginx

  • 第六步:浏览器访问公网IP
如果显示

Welcome to nginx!

则安装成功!

  • 第七步:配置一下nginx与php的协同工作

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# cd /usr/local/php/sbin/  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# ll  
  2. 总用量 33604  
  3. -rwxr-xr-x 1 root root 34408552 5月  14 15:15 php-fpm  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# ./php-fpm  
  2. [14-May-2018 19:22:11] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)  
  3. [14-May-2018 19:22:11] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'  
  4. [14-May-2018 19:22:11] ERROR: FPM initialization failed  



运行启动命令后会显示找不到php-fpm的配置文件 所以要运行如下命令

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# cd /usr/local/php/etc/  
  2. [root@iZ2zeeq04koeqssc98d0okZ etc]# ll  
  3. 总用量 88  
  4. -rw-r--r-- 1 root root  1228 5月  14 15:15 pear.conf  
  5. -rw-r--r-- 1 root root  4463 5月  14 15:15 php-fpm.conf.default  
  6. drwxr-xr-x 2 root root  4096 5月  14 15:15 php-fpm.d  
  7. -rw-r--r-- 1 root root 70449 5月  14 15:16 php.ini  
# 重命名 php-fpm.conf.default
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ etc]# sudo mv php-fpm.conf.default php-fpm.conf  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ etc]# ll  
  2. 总用量 88  
  3. -rw-r--r-- 1 root root  1228 5月  14 15:15 pear.conf  
  4. -rw-r--r-- 1 root root  4463 5月  14 15:15 php-fpm.conf  
  5. drwxr-xr-x 2 root root  4096 5月  14 15:15 php-fpm.d  
  6. -rw-r--r-- 1 root root 70449 5月  14 15:16 php.ini  

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ etc]# ../sbin/php-fpm  
  2. [14-May-2018 19:30:52] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.  
  3. [14-May-2018 19:30:52] ERROR: No pool defined. at least one pool section must be specified in config file  
  4. [14-May-2018 19:30:52] ERROR: failed to post process the configuration  
  5. [14-May-2018 19:30:52] ERROR: FPM initialization failede  

# 以上报错php-fpm.conf at line 125.


[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ etc]# sudo vim /usr/local/php/etc/php-fpm.conf  
[php]  view plain  copy
  1. shift + : 输入 125  
[php]  view plain  copy
  1. # 此时光标定到 include=/usr/local/php7/etc/php-fpm.d/*.conf   
[php]  view plain  copy
  1. 将125行修改为    include=/usr/local/php/etc/php-fpm.d/www.conf  
[php]  view plain  copy
  1.   
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ etc]# cd php-fpm.d/  
  2. [root@iZ2zeeq04koeqssc98d0okZ php-fpm.d]# ll  
  3. 总用量 20  
  4. -rw-r--r-- 1 root root 18869 5月  14 15:15 www.conf.default  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ php-fpm.d]# sudo cp www.conf.default www.conf  
  2. [root@iZ2zeeq04koeqssc98d0okZ php-fpm.d]# ll  
  3. 总用量 40  
  4. -rw-r--r-- 1 root root 18869 5月  14 19:39 www.conf  
  5. -rw-r--r-- 1 root root 18869 5月  14 15:15 www.conf.default  

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# cd /usr/local/php/sbin/  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# ./php-fpm  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# ps -aux | grep php-fpm  
  2. root      9274  0.0  0.4 148420  4596 ?        Ss   11:50   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)  
  3. nobody    9275  0.0  0.5 148484  5548 ?        S    11:50   0:00 php-fpm: pool www  
  4. nobody    9276  0.0  0.5 148484  5656 ?        S    11:50   0:00 php-fpm: pool www  
  5. root      9355  0.0  0.0 112660   976 pts/0    R+   12:04   0:00 grep --color=auto php-fpm  
------- 致辞 php-fpm启动成功 !
解答疑问:为什么要启动php-fpm ?

    首先描述一下php与nginx的工作方式

        当一个请求从浏览器进入以后就会进入到服务端 服务端会进入apache 或者 nginx的web server,在以上步骤 我们的数据进入的是nginx,nginx会对数据进行一个处理, 使用http协议对这些数据进行解析,解析完成以后,如果是以.php结尾的文件,他就会交给php的解释器,那么php的fpm就是解释器,phpfpm监听了9000端口,nginx通过9000端口将数据传给了php-fpm,这样php-fpm就会处理,处理完成之后就会返回给nginx,nginx再返回给浏览器,浏览器呈现给用户。


  • 第八步:配置完php-fpm之后,我们就要配置一下nginx nginx配置目录全部在cd /usr/local/nginx/conf中

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]#  cd /usr/local/nginx/  
  2. [root@iZ2zeeq04koeqssc98d0okZ nginx]# ll  
  3. 总用量 36  
  4. drwx------ 2 nobody root 4096 5月  15 10:06 client_body_temp  
  5. drwxr-xr-x 2 root   root 4096 5月  15 11:59 conf  
  6. drwx------ 2 nobody root 4096 5月  15 10:06 fastcgi_temp  
  7. drwxr-xr-x 2 root   root 4096 5月  15 12:01 html  
  8. drwxr-xr-x 2 root   root 4096 5月  15 10:06 logs  
  9. drwx------ 2 nobody root 4096 5月  15 10:06 proxy_temp  
  10. drwxr-xr-x 2 root   root 4096 5月  15 10:05 sbin  
  11. drwx------ 2 nobody root 4096 5月  15 10:06 scgi_temp  
  12. drwx------ 2 nobody root 4096 5月  15 10:06 uwsgi_temp  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ nginx]# cd conf/  
  2. [root@iZ2zeeq04koeqssc98d0okZ conf]# ll  
  3. 总用量 68  
  4. -rw-r--r-- 1 root root 1077 5月  15 10:05 fastcgi.conf  
  5. -rw-r--r-- 1 root root 1077 5月  15 10:05 fastcgi.conf.default  
  6. -rw-r--r-- 1 root root 1007 5月  15 10:05 fastcgi_params  
  7. -rw-r--r-- 1 root root 1007 5月  15 10:05 fastcgi_params.default  
  8. -rw-r--r-- 1 root root 2837 5月  15 10:05 koi-utf  
  9. -rw-r--r-- 1 root root 2223 5月  15 10:05 koi-win  
  10. -rw-r--r-- 1 root root 5170 5月  15 10:05 mime.types  
  11. -rw-r--r-- 1 root root 5170 5月  15 10:05 mime.types.default  
  12. -rw-r--r-- 1 root root 2978 5月  15 11:59 nginx.conf  
  13. -rw-r--r-- 1 root root 2656 5月  15 10:05 nginx.conf.default  
  14. -rw-r--r-- 1 root root  636 5月  15 10:05 scgi_params  
  15. -rw-r--r-- 1 root root  636 5月  15 10:05 scgi_params.default  
  16. -rw-r--r-- 1 root root  664 5月  15 10:05 uwsgi_params  
  17. -rw-r--r-- 1 root root  664 5月  15 10:05 uwsgi_params.default  
  18. -rw-r--r-- 1 root root 3610 5月  15 10:05 win-utf  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ conf]# sudo vim nginx.conf  

加入以下配置参数

[php]  view plain  copy
  1. location ~ \.php$ {  
  2.   
  3.     fastcgi_pass   127.0.0.1:9000;  
  4.   
  5.     fastcgi_index  /index.php;  
  6.   
  7. #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  8.   
  9.     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
  10.   
  11.     include        fastcgi_params;  
  12.   
  13. }  

之后 保存并退出



重启

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ conf]# cd /usr/local/nginx/sbin/  
  2. [root@iZ2zeeq04koeqssc98d0okZ sbin]# ./nginx -s reload  
  • 第九步:创建文件 公网测试

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ sbin]# cd /usr/local/nginx/html/  
  2. [root@iZ2zeeq04koeqssc98d0okZ html]# touch test.php  

输入以下测试的php代码

[php]  view plain  copy
  1. phpinfo();  

浏览器访问公网 正常显示则安装成功!完毕!

[html]  view plain  copy
  1. 此处的访问URL格式(因为没有配置 所以要输入全访问路径)  
  2. http://你的地址/test.php  










安装Apache

  • 第一步:和安装php与mysql一样 都是访问官网的下载地址 然后wget。apache的正确下载地址在 httpd.apache.org 中

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.33.tar.gz  
  • 第二步:解压 并进入 使用configure
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# tar -zxvf httpd-2.4.33.tar.gz  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# cd httpd-2.4.33  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ httpd-2.4.33]# ./configure --prefix=/usr/local/apache2  

执行完成之后会     

error: APR not found.  Please read the documentation.

提示我们安装 APR

  • 第三步:安装APR依赖  apr 访问地址http://archive.apache.org/dist/apr
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ httpd-2.4.33]# cd /  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# wget http://archive.apache.org/dist/apr/apr-1.6.2.tar.gz  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# wget http://archive.apache.org/dist/apr/apr-util-1.6.0.tar.gz  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# tar -zxvf apr-1.6.2.tar.gz  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# tar -zxvf apr-util-1.6.0.tar.gz  
  • 第四步:下载解压之后 要对这两个文件进行重命名 去掉各自的版本号
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# mv apr-util-1.6.0 apr-util  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# mv apr-1.6.2 apr  

  • 第五步:移动这两个依赖文件到 httpd的一个文件下
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# mv apr apr-util httpd-2.4.33/srclib/    
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ /]# cd httpd-2.4.33/srclib/   
  • 第六步:下载最后一个依赖(一个正则pcre) 然后使用configure进行编译前的安装准备

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ srclib]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ srclib]# cd  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ srclib]# cd pcre-8.38  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# ./configure --prefix=/usr/local/pcre-8.38  

注:如果出现configure: error: You need a C++ compiler for C++ support. 错误 请安装gcc

                    yum -y install gcc-c++


[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# make  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# sudo make install  
  • 第七步:在安装了apache安装所需的 aprapr-util、pcre 三个依赖之后 进入apache目录 进行apache安装
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ pcre-8.38]# cd ../httpd-2.4.33  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ httpd-2.4.33]# ./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre-8.38/bin/pcre-config -with-included-apr  

# 以上步骤可能会报错 错误信息如下

error: Bundled APR-Util requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.


# 解决办法

cd /usr/local/src/

wget http://apache.fayea.com/apr/apr-1.6.3.tar.bz2

wget http://apache.fayea.com/apr/apr-util-1.6.1.tar.bz2

tar -jxvf apr-util-1.6.1.tar.bz2

tar -jxvf apr-1.6.3.tar.bz2

cp -rf apr-1.6.3 /httpd-2.4.33/srclib/apr

cp -rf apr-util-1.6.1 /httpd-2.4.33/srclib/apr-util

# 然后再回到根目录 重复第七步   
  • 第八步:编译 安装

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ httpd-2.4.33]# make  

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ httpd-2.4.33]# sudo make install  
  • 第九步:验证是否安装成功!

[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ httpd-2.4.33]# cd /usr/local/apache/bin/  
[php]  view plain  copy
  1. [root@iZ2zeeq04koeqssc98d0okZ bin]# sudo ./apachectl -k start  

#  此时会有一或两个错误    

# 错误  AH00558:

#  或 错误 AH00559:
#  上面的错误先不用管,那是配置虚拟主机的问题
  • 第十步:依旧验证是否安装成功

 因为是阿里云 所以在安全策略组的配置中已经开启了80端口,所以我们直接在本地浏览器访问云服务器公网的ip

 如果显示 

It works!

表示安装成功 请忽略以下步骤


如果显示拒绝访问或没有开启防火墙的80端口 可以输入以下命令,

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

sudo systemctl restart firewalld.service

再次浏览器访问显示 it works! 正常







安装MySQL

       源码安装MySQL比较费劲,追求效率 点击这里 去yum安装吧,但是还是建议没有试验过的试试源码安装的过程,感受一下。

  • 第一步:和下载PHP步骤一样,打开mysql官网下载 然后在最下面有一个下拉框,下拉选Source Code(源代码)下载
  • 第二步:选择“Generic Linux (Architecture Independent), Compressed TAR Archive” (通用的Linux架构)点击 Download
  • 第三步:此时会有页面表示登录/注册下载,左下角有No thanks... 我们鼠标放在Nothanks上复制这个a标签的链接
  • 第四步:weget下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11.tar.gz
  • 第五步:解压mysql

tar -zxvf mysql-8.0.11.tar.gz 

  • 第六步:安装mysql的依赖工具

sudo yum install cmake gcc-c++ ncurses-devel perl-Data_dumper boost boost-doc boost-devel

  • 第七步:编译

cmake -DCMAKE_INSTALL_PREFIX= /usr/local/mysql  \
-DMYSQL_DATADIR= /usr/local/mysql/data  \
-DSYSCONFDIR= /etc  \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR= /usr/local/mysql/data/mysql .sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=1 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST= /usr/share/doc/boost-doc-1 .41.0/

cmake命令是一个跨平台的安装工具    cmake安装命令的参数较多,如果运行 cmake 版本过低 点击这里 去升级自己cmake的版本
  • 第八步:make
编译过程会比较慢,对于配置较低的服务器,可能会在编译中突然中断并error,百度一下error信息,如果是因为内存过小而中断,建议使用yum安装吧!  如果编译失败 点击这里 去yum源安装mysql (删除以上mysql所操作的所有相关文件、文件夹),成功编译的请忽略这段话,继续以下的步骤
  • 第九步:sudo make install

       --complate! 安装完成之后需要对数据库一个小小的配置  简要步骤如下

1. 配置mysql文件:
    > cd /etc/my.cnf 
    # 加入配置参数

    > character-set-server=utf8 


2.登录mysql

>mysql -u root -p


3.允许远程连接

use mysql;

update user set Host='%', Password=PASSWORD('这里填写你设置的密码') where Host='127.0.0.1';

flush privileges;

exit;


4.最后重启

service mysqld resatrt

测试连接






以上就是 apache nginx mysql php 的编译安装方式

疑惑 [email protected]


你可能感兴趣的:(linux)