源码编译搭建LNMP环境的步骤很详细

LNMP源码编译

LNMP=Linux Nginx Mysql PHP
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度BWS、新浪、网易、腾讯等

Nginx官方网站
Nginx:http://nginx.org/
RamBler:http://www.rambler.ru/
源码编译搭建LNMP环境的步骤很详细_第1张图片
Rambler是俄罗斯的门户网站,也是俄罗斯的三大门户之一,在这里你可以了解俄罗斯社会的方方面面。严格意义来讲,Rambler应该是俄罗斯的行业分类网站,每天大约有800万人利用该网站查询相关信息,是俄罗斯当之无愧的第二大本土搜索引擎。

了解Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。(可以这样理解:淘宝拿到了Nginx源代码之后,进行了功能的填充,优化等等,然后提交给Nginx官方,但是由于Nginx官方相应慢或者不响应,加上语言沟通的不顺畅,于是淘宝公司就自己打包,在遵循GPL的原则上进行二次开发,于是就出了现在的Tengine这个版本)。
官网网站:http://tengine.taobao.org/

Nginx的工作原理
Nginx 本身只支持静态页面的处理,当客户端访问php页面的时候,nginx会将php转到php-fpm也处理,
php-fpm服务会把php页面解析成html文件给nginx处理,nginx返回给客户端处理

这里需要结合Apache的工作,对PHP文件处理过程的区别
1:Nginx是通过php-fpm这个服务来处理php文件
2:Apache是通过libphp5.so这个模块来处理php文件

Apache:
源码编译搭建LNMP环境的步骤很详细_第2张图片
Nginx:
源码编译搭建LNMP环境的步骤很详细_第3张图片
Apache的libphp5.so随着apache服务器一起运行,而Nginx和php-fpm是各自独立运行,所以在服务的运行过程中,Nginx和php-fpm都需要分别启动!
修改Nginx配置文件,启动nginx服务,修改php配置文件,启动php-fpm服务

LNMP软件所需要的软件包

MySQL=http://dev.mysql.com/downloads/mysql/ mysql主程序包
PHP=http://php.net/downloads.php php主程序包
Nginx=http://nginx.org/en/download.html Nginx主程序包
libmcrypt=http://mcrypt.hellug.gr/index.html libmcrypt加密算法扩展库,支持3DES等加密
或者:http://mcrypt.sourceforge.net/ MCrypt/Libmcrypt development site (secure access)
pcre=http://pcre.org/ pcre是php的依赖包

在Nginx官网网站上
源码编译搭建LNMP环境的步骤很详细_第4张图片
Mainline version 主线版本
Stable version 稳定版本
Legacy versions 老版本,历史版本
旧版本下载:http://mirrors.sohu.com/nginx/

编译安装Nginx

安装包下载,开源的软件包,选择稳定版本既可

[root@localhost ~]# wget  http://nginx.org/download/nginx-1.16.1.tar.gz
[root@localhost ~]# wget https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.gz

解决依赖
在编译之前,把开发包组安装

[root@localhost ~]# yum -y groupinstall "Development Tools" "Development Libraries" 
[root@localhost ~]# yum -y install pcre-devel openssl-devel zlib-devel libxslt-devel gd-devel perl-ExtUtils-Embed  perl-devel GeoIP-devel GeoIP-data gperftools-devel gcc gcc-c++ autoconf automake zlib  openssl  pcre* pcre-devel

用yum安装的pcre是系统依赖的pcre
Zlib:Nginx提供gzip模块,需要zlib的支持
Openssl:Nginx提供SSL的功能

解压安装包

[root@localhost ~]# tar -xf pcre-8.37.tar.gz -C /usr/local/src/

//解压此安装包即可,不需要安装,Nginx需要指定pcre的源码不是安装后的路径,此包的功能是支持地址重写rewrite功能 pcre的依赖可以yum安装pcre和pcre-devel解决!

[root@localhost ~]# tar -xf nginx-1.16.1.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/nginx-1.16.1/
[root@localhost nginx-1.16.1]# ./configure \
--prefix=/usr/local/nginx \
--with-pcre=/usr/local/src/pcre-8.37 \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_auth_request_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module=dynamic \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-pcre \
--with-pcre-jit \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-google_perftools_module \
--with-debug 
********************************************参数解释*********************************************************************
通用配置选项
–prefix=PATH	                    Nginx安装的根路径,其它安装选项不明确指定安装路径,默认安装在此路径下
–sbin-path=PATH	                    指定Nginx二进制文件的路径,如果没有指定,默认使用–prefix选项指定的路径
–modules-path=PATH	                指定模块文件放置的路径
–conf-path=PATH	                    命令行未明确指定配置文件时,使用的配置文件所在路径
–error-log-path=PATH	            指定错误日志的路径
–pid-path=PATH	                    指定写入nginx master进程pid的文件,通常在/var/run/下
–lock-path=PATH	                    共享存储器互斥锁文件的路径
–user=USER	                        运行worker进程的用户
–group=GROUP	                    运行worker进程的组
–with-file-aio	                    为Linux 2.6.22+ 系统启用异步I/O
–with-debug	                        这个选项用于启用调试日志,在生产环境的系统中不推荐使用该选项

配置优化选项

–with-cc-opt=OPTIONS	            设置将被添加到CFLAGS变量的附加参数
–with-ld-opt=OPTIONS	            设置将在链接期间使用的额外参数

HTTP配置选项

–http-log-path=PATH	                 http访问日志的默认路径
–http-client-body-temp-path=PATH	 设置临时存储http客户端请求报文的目录路径
–http-proxy-temp-path=PATH	         设置使用代理后存放临时文件的路径
–http-fastcgi-temp-path=PATH	     设置fastcgi后存放临时文件的路径
–http-uwsgi-temp-path=PATH	         设置uwsgi后存放临时文件的路径
–http-scgi-temp-path=PATH	         设置scgi后存放临时文件的路径


HTTP模块配置选项

–with-http_auth_request_module	    启用构建ngx_http_auth_request_module模块,该模块基于子请求的结果实现客户端授权。默认情况下不生成此模块。
–with-http_ssl_module	            使用https协议进行通信,对通信的流量进行加密,需要依赖OpenSSL库。
–with-http_v2_module	            构建一个支持http协议2.0版本的模块,该模块默认是不生成的。
–with-http_realip_module	        Nginx在七层负载均衡器或者其它设备之后时,启用此模块,可以获取调度器转发的请求报文首部中真实客户端的IP。
–with-http_addition_module	        这是一个作为输出过滤器的模块,能够在一个请求经过location前或后时在该location自身添加内容。
–with-http_xslt_module=dynamic	    该模块用于处理XML响应转换,基于一个或多个XSLT格式,需要依赖libxml2和libxslt库。
–with-http_image_filter_module=dynamic	该模块作为图像过滤器使用,在将图像发送给客户之前进行处理,需要依赖libgd库。
–with-http_geoip_module=dynamic	    使用该模块能,可以设置各种变量在配置文件中的区段使用,能够基于客户端的ip地址查找代理位置,需要依赖MaxMindGeoIP库和相应的预编译数据库文件。
–with-http_sub_module	            该模块实现替代过滤,在响应中用一个字符串替代另一个字符串,Note:使用该模块隐式禁用标头缓存。
–with-http_dav_module	            启用这个模块将激活使用WebDAV的配置指令,Note:建议该模块只有在需要时才进行启用,如果配置不正确可能会带来安全隐患。
–with-http_flv_module	            如果需要提供Flash流媒体视频文件,需要启用该模块提供伪流媒体。
–with-http_mp4_module	            该模块支持H.264/AA文件伪流媒体
–with-http_gunzip_module	        对于不支持gzip编码的客户,该模块用于为客户解压缩预压缩内容。
–with-http_gzip_static_module	    当被调用的资源是没有.gz结尾格式的文件时,如果想支持发送预压缩版本的静态文件,可以使用该模块。
–with-http_random_index_module	    启用这个模块可以提供从一个目录中随机选择文件的索引文件。
–with-http_secure_link_module	    该模块提供了一种机制,会将一个散列值链接到一个URL中,只有使用正确的密码才能计算出链接。
–with-http_degradation_module	    可以构建ngx_http_degradation_module模块,默认情况下,此模块是不构建的。
–with-http_slice_module	            构建将请求拆分为子请求的ngx_http_slice_module模块,每个子请求可以返回一定范围的响应,该模块为大的响应提供了更有效的缓存,默认情况下,此模块是不构建的。
–with-http_stub_status_module	    启用这个模块后会收集Nginx自身的状态信息
–with-http_perl_module=dynamic	    构建嵌入式Perl模块,该模块默认不生成。

邮件代理配置选项

–with-mail=dynamic	                动态启用POP3/IMAP4/SMTP代理模块
–with-mail_ssl_module	            构建一个支持SSL/TLS协议的邮件代理服务模块,该模块默认不生成,构建和运行需要依赖OpenSSL库。

反向代理配置选项

–with-stream=dynamic	            动态启用构建stream module模块,作为通用的TCP/UDP代理和负载均衡流模块,该模块默认不构建。
–with-stream_ssl_module	            构建一个支持SSL/TLS协议的stream模块,该模块默认不生成,构建和运行需要依赖OpenSSL库。

其它配置选项

–with-ipv6	                        启用IPv6支持,在1.11.x后的版本编译时,已经不需要该编译选项
–with-pcre	                        强制使用PCRE库
–with-pcre-jit	                    使用即时编译构建PCRE库,支持1.1.12 pcre_jit指令
–with-google_perftools_module	    启用构建ngx_google_perftools_module模块,该模块可使用Google Performance Tools对nginx工作进程进行分析,该模块专供nginx开发人员使用,默认不会生成。

安装

[root@localhost nginx-1.16.1]# make -j `grep processor /proc/cpuinfo | wc -l` && make install

创建用于运行的用户nginx

[root@localhost nginx-1.16.1]# useradd -M -s /sbin/nologin -u 1500  nginx
[root@localhost nginx-1.16.1]#chown -R nginx.nginx /usr/local/nginx/

查看nginx的目录结构

[root@localhost nginx-1.16.1]# ll /usr/local/nginx
总用量 4
drwxr-xr-x. 2 root root 4096 11月  1 18:49 conf    #Nginx相关配置文件
drwxr-xr-x. 2 root root   40 11月  1 18:49 html     #网站根目录
drwxr-xr-x. 2 root root    6 11月  1 18:49 logs     #日志文件
drwxr-xr-x. 2 root root   19 11月  1 18:49 sbin     #Nginx启动脚本

配置Nginx支持php文件

[root@localhost conf]# vim nginx.conf         #nginx主配置文件
user  nginx  nginx;  #程序运行的属主与属组
....
....
......
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index index.php  index.html index.htm;     添加index.php
        }
.....
....
....

        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
以上的注释全部去掉
如下
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;#填写网站根路径
            include        fastcgi_params;
        }

改完保存退出
启动nginx

[root@localhost conf]# /usr/local/nginx/sbin/nginx

配置环境变量

[root@localhost conf]# vim /etc/profile
export PATH=/usr/local/nginx/sbin:$PATH
[root@localhost conf]# source /etc/profile

Nginx维护命令

[root@localhost conf]# nginx -t    #检查配置文件语法是否有错误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# nginx -s reload   #重新加载配置文而建(平滑重启)
[root@localhost conf]# nginx -s stop   #停止Nginx,注意:启动没有任何参数
[root@localhost conf]# echo "/usr/local/nginx/sbin/nginx &" >> /etc/rc.local  #开机启动

平滑重启(保持了C-S链接,不断开,服务器只是重新加载了配置文件,没有开启和关闭的服务器的一个动作)

使用浏览器测试

源码编译搭建LNMP环境的步骤很详细_第5张图片

yum安装mysql

下载并安装mysql 的yum源

[root@localhost ~]#rpm -ivh   https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

先修改需要安装的版本在执行安装命令,默认是最新的版本[0是关闭|1是启用]

[root@localhost ~]#yum -y install mysql-community-server mysql-community-devel mysql-connector-c++-devel``


过滤密码

```bash
[root@localhost yum.repos.d]# grep "password" /var/log/mysqld.log 
2020-05-29T18:29:04.406797Z 1 [Note] A temporary password is generated for root@localhost: IPp?YpEBr9#g

登录

[root@localhost yum.repos.d]# mysql -uroot -p"IPp?YpEBr9#g"

修改密码

mysql> set password for root@localhost=password('Admin123!@#');
Query OK, 0 rows affected, 1 warning (0.00 sec)

刷新

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

编译安装mysql

检查是否有安装mysql数据库

[root@localhost ~]# rpm -qa |grep mysql
[root@localhost ~]# rpm -qa | grep mariadb
[root@localhost ~]# yum -y  remove `rpm -qa | grep mariadb`

解决依赖

[root@localhost ~]# yum install -y  gcc-c++ ncurses-devel perl-Data-Dumperpython-devel openssl openssl-devel
[root@localhost ~]#yum -y install perl perl-devel autoconf
[root@localhost ~]#yum -y install zlib zlib-devel cmake ncurses ncurses-devel bison bison-devel

安装boost
如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81错误
下载boost

[root@localhost ~]#wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
[root@localhost ~]#tar -xf boost_1_59_0.tar.gz  -C /usr/local/
[root@localhost ~]# mv /usr/local/boost_1_59_0/ /usr/local/boost

在预编译安装MySQL时要加上-DWITH_BOOST=/usr/local/boost
下载mysql

[root@localhost ~]#wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28.tar.gz   #5.7.28版本

解压到指定目录

[root@localhost ~]#tar -xf mysql-5.7.28.tar.gz -C /usr/local && cd /usr/local/mysql-5.7.28

创建mysql运行用户

[root@localhost ~]# useradd -M -s /sbin/nologin mysql    
 **预编译**
[root@localhost mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
> -DWITH_BOOST=/usr/local/boost \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS=all \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DWITH_INNODB_MEMCACHED=1 \
> -DWITH_DEBUG=OFF \
> -DWITH_ZLIB=bundled \
> -DENABLED_LOCAL_INFILE=1 \
> -DENABLED_PROFILING=ON \
> -DMYSQL_MAINTAINER_MODE=OFF \
> -DMYSQL_TCP_PORT=3306  \
> -DMYSQL-USER=mysql
*********************************参数解释****************************************************************************
DCMAKE_INSTALL_PREFIX                                      #制定mysql的安装根目录,目录在安装的时候会自动创建,这个值也可以在服务器启动时,用--basedir来设置
DMYSQL_UNIX_ADDR                                           #服务器与本地客户端进行通信的Unix套接字文件,必须是绝对路径,默认位置/tmp/mysql.sock,可以在服务器启动时,用--socket改变
DDEFAULT_CHARSET                        #mysql默认使用的字符集,不指定将默认使用Latin1西欧字符集
DDEFAULT_COLLATION                           #默认字符校对
DWITH_EXTRA_CHARSETS                  #制定mysql拓展字符集,默认值也是all支持所有的字符集
DWITH_MYISAM_STORAGE_ENGINE 
DWITH_INNOBASE_STORAGE_ENGINE
DWITH_MEMORY_STORAGE_ENGINE
#静态编译MYISAM,INNOBASE,MEMORY存储引擎到MYSQL服务 器,这样MYSQL就支持这三种存储引擎
DWITH_READLINE                    #支持readline库
DENABLED_LOCAL_INFILE                    #允许本地倒入数据,启用加载本地数据
DMYSQL_DATADIR                                #mysql数据库存放路径
DMYSQL-USER                                    #运行mysql的用户

这些编译参数的帮助寻找方法:
http://www.mysql.com→→Documentation→→选择对应的版本→→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@localhost mysql-5.7.28]# make -j `grep processor /proc/cpuinfo | wc -l` && make install

配置文件

[root@localhost mysql-5.7.28]# mkdir -p /usr/local/mysql/{data,tmp,run}
[root@localhost mysql-5.7.28]# chown -R mysql.mysql /usr/local/mysql/
[root@localhost ~]#vim /etc/my.cnf
[client]

default-character-set=utf8
socket=/usr/local/mysql/run/mysql.sock


[mysql]
port=3306
socket=/usr/local/mysql/run/mysql.sock

[mysqld]
# skip-name-resolve
# skip-external-locking
max_connections=300
log_timestamps=SYSTEM
# GENERAL #
user=mysql
port=3306
character_set_server=utf8
collation-server=utf8_general_ci
default_storage_engine=InnoDB
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/run/mysqld.pid
socket=/usr/local/mysql/run/mysql.sock
sql_mode='NO_ENGINE_SUBSTITUTION'

修改启动脚本

[root@localhost mysql-5.7.28]#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.7.28]# vim /etc/init.d/mysqld
 //更改启动脚本中指定mysql位置
 basedir=
datadir=
#修改为
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

初始化数据库

[root@localhost mysql-5.7.28]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --initialize-insecure

配置mysql服务

[root@localhost mysql-5.7.28]# chkconfig --add mysqld         #添加到系统服务
[root@localhost mysql-5.7.28]# chkconfig mysqld on             #设置开机自启

启动服务

[root@localhost mysql-5.7.28]# service mysqld start   #启动
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
........... SUCCESS! 
[root@localhost mysql-5.7.28]#service mysqld  restart    #重启
[root@localhost mysql-5.7.28]#service mysqld  stop       #停止

设置环境变量

[root@localhost mysql-5.7.28]# vim /etc/profile
添加下面的内容到最后
export PATH=/usr/local/mysql/bin:$PATH
保存退出
[root@localhost mysql-5.7.28]# source /etc/profile

登录服务,设置密码

[root@localhost mysql-5.7.28]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28 Source distribution

Copyright (c) 2000, 2019, 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> set password for root@localhost =password('Admin123!@#');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

退出用新密码登录

mysql> exit
Bye
[root@localhost mysql-5.7.28]# mysql -uroot -p'Admin123!@#'
mysql: [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 3
Server version: 5.7.28 Source distribution

Copyright (c) 2000, 2019, 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> 

php编译安装

在Nginx中,我们使用的是php-fpm来对php页面解析,PHP-FPM其实是PHP源代码的一个补丁,指在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,再编译安装PHP后才可以使用
从PHP5.3.3开始,PHP中直接整合了PHP-FPM,所以从PHP5.3.3版本以后,不需要下载PHP-FPM补丁包了,下面是PHP-FPM官方发出来的通知:
http://php-fpm.org/download
https://www.php.net/releases/index.php
源码编译搭建LNMP环境的步骤很详细_第6张图片

解决依赖

[root@localhost ~]# yum -y install php-pear

pear按照一定的分类来管理pear应用代码库,你的pear代码可以组织到其中适当的目录中,其他人可以方便的检索并分享到你的成果;pear不仅仅是一个代码仓库,它同时也是一个标准,使用这个标准来书写你的php代码,将会增强你的程序的可读性,复用性,减少出错的几率;Pear通过两个类为你搭建了一个框架,实现了诸如析构函数,错误捕获功能,你通过继承就可以使用这些功能
PHP添加libmcrypt拓展
libmcrypt加密算法扩展库,支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法
官方网站:http://mcrypt.hellug.gr/index.html 或者 http://mcrypt.sourceforge.net/
下载https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/
在页面上点击下图连接,可以下载2.5.8版本
源码编译搭建LNMP环境的步骤很详细_第7张图片

[root@localhost ~]# wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

安装加密算法扩展库

[root@localhost ~]# tar -xf libmcrypt-2.5.8.tar.gz -C /usr/local/src/ && cd /usr/local/src/libmcrypt-2.5.8
[root@localhost libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt && make && make install && cd /root

除开上面的依赖解决之外,还需要安装图片,xml,字体支持基本库,使用yum去安装,安装的时候,这些软件包自
身也有依赖!

[root@localhost ~]# yum -y install libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype freetype-devel libzip libzip-devel

需要添加到库文件路径
由于系统默认规定只在/lib、/lib64、/lib/lib64下面找库文件,所以我们需要手动添加进去。

[root@localhost ~]# vim /etc/ld.so.conf

include ld.so.conf.d/*.conf                          #此行原有
/usr/local/libmcrypt/lib                       #此行添加
/usr/local/mysql/lib                           #此行添加
[root@localhost ~]# ldconfig
[root@localhost ~]# echo 'ldconfig' >> /etc/rc.local

5.3版本
https://www.php.net/distributions/php-5.3.28.tar.gz

[root@localhost ~]# wget https://www.php.net/distributions/php-7.3.4.tar.gz
[root@localhost ~]# tar -xf php-7.3.4.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/php-7.3.4/
[root@localhost php-7.3.4]# ./configure \
--prefix=/usr/local/php \ 
--with-config-file-path=/usr/local/php/etc \
--with-MySQLi=/usr/local/mysql/bin/mysql_config \
--with-mysqli=mysqlnd \
--with-MySQL=/usr/local/mysql \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \ 
--with-jpeg-dir \  
--with-zlib \
--with-libxml-dir=/opt \ 
--without-iconv \
--with-libxml-dir  \     
--with-xmlrpc     \
--with-zlib-dir  \
--with-gd \  
--with-curl \ 
--with-curlwrappers \
--with-ttf   \
--with-xsl     \
--with-gettext  \
--with-pear      \
--with-mime-magic=/usr/share/file/magic.mime  \
--enable-calendar \
-enable-sockets  \
--enable-exif    \
--enable-magic-quotes  \
--enable-gd-native-ttf  \
--enable-xml \
--disable-rpath \
-disable-debug   \ 
--enable-bcmath \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-gd-native-ttf \
--with-gettext \
--with-mcrypt=/opt/libmcrypt \
--enable-safe-mode \ 
--enable-zip \
--with-bz2 \
--enable-ftp \
--enable-fpm    \
--enable-fastCGI  \
--enable-force-CGI-redirect  \
--with-ncurses      \ 
--with-mcrypt=/usr/local/libmcrypt\
--with-mhash     \
--with-gmp       \
--enable-inline-optimization \
--with-openssl    \
--enable-dbase     \
--with-pcre-dir=/usr/local/bin/pcre-config \
--disable-dmalloc \ 
--with-gdbm   \
--enable-sigchild \
--enable-sysvsem \
--enable-sysvshm \
--enable-zend-multibyte \
--enable-mbregex \
--enable-wddx \
--enable-shmop \
--enable-soap \
--enable-pdo \
--with-mysql
[root@localhost php-7.3.4]#make -j `grep processor /proc/cpuinfo | wc -l` && make install
######################################参数解释################################################################

./configure \
--prefix=/usr/local/php \                                       指定 php 安装目录
--with-config-file-path=/usr/local/php/etc \                    指定php.ini位置
#--with-apxs2=/usr/local/apache/bin/apxs                   整合apache
--with-MySQLi=/usr/local/mysql/bin/mysql_config         mysqli文件目录,mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
--with-mysqli=mysqlnd \
--with-MySQL=/usr/local/mysql                             mysql安装目录,对mysql的支持
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \                                     打开对freetype字体库的支持
--with-jpeg-dir \                                         打开对jpeg图片的支持
--with-zlib \
--with-libxml-dir=/usr \
--without-iconv                                           关闭iconv函数,种字符集间的转换
--with-libXML-dir                                         打开libxml2库的支持
--with-xmlrpc                                             打开xml-rpc的c语言
--with-zlib-dir                                           打开zlib库的支持
--with-gd \                                               打开gd库的支持
--with-curl \                                             打开curl浏览工具的支持
--with-curlwrappers                                       运用curl工具打开url流
--with-ttf                                                打开freetype1.*的支持,可以不加了
--with-xsl                                                打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
--with-gettext                                            打开gnu 的gettext 支持,编码库用到
--with-pear                                               打开pear命令的支持,PHP扩展用的
--with-mime-magic=/usr/share/file/magic.mime              魔术头文件位置
--enable-calendar                                         打开日历扩展功能
-enable-sockets                                           打开 sockets 支持
--enable-exif                                             图片的元数据支持
--enable-magic-quotes                                     魔术引用的支持
--enable-gd-native-ttf                                    支持TrueType字符串函数库
--enable-xml \
--disable-rpath \                                         关闭额外的运行库文件
-disable-debug                                            关闭调试模式
--enable-bcmath \                                         打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \                                       多字节,字符串的支持
--enable-mysqlnd \
--enable-gd-native-ttf \
--with-gettext \
--with-mcrypt=/opt/libmcrypt \
--enable-safe-mode \                                      打开安全模式
--enable-zip \                                            打开对zip的支持
--with-bz2 \                                              打开对bz2文件的支持
--enable-ftp \                                            打开ftp的支持




CGI方式安装才用的参数
--enable-fpm                                              打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-fastCGI                                          支持fastcgi方式启动PHP
--enable-force-CGI-redirect                               同上 ,帮助里没有解释
--with-ncurses                                            支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl                                            freeTDS需要用到的,可能是链接mssql 才用到

mhash和mcrypt算法的扩展
--with-mcrypt                                             算法
--with-mhash                                              算法

--with-gmp                                                应该是支持一种规范
--enable-inline-optimization                              优化线程
--with-openssl                                            openssl的支持,加密传输时用到的
--enable-dbase                                            建立DBA 作为共享模块
--with-pcre-dir=/usr/local/bin/pcre-config                perl的正则库案安装位置
--disable-dmalloc
--with-gdbm                                               dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte                                   支持zend的多字节
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap




如果上面在make的时候 提示libzip相关的报错,可以安装下面的方法来解决:
先 执行 make clean
然后 安装压缩支持库

[root@localhost ~]#tar xf libzip-1.1.2.tar.gz -C /usr/local/src/
[root@localhost ~]#cd /usr/local/src/libzip-1.1.2/
[root@localhost libzip-1.1.2]#./configure --prefix=/usr/local/libzip && make && make install

再重新编译:

[root@localhost php-7.3.4]#./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex  --enable-fpm --enable-mbstring --with-gd --enable-mysqlnd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --with-gettext --with-mcrypt=/usr/local/libmcrypt   --with-pcre-dir=/usr/local/src/pcre-8.37/ --with-zlib-dir=/usr/local/libzip

配置php和php-fpm

PHP配置文件:

[root@localhost php-7.3.4]# cp /usr/local/src/php-7.3.4/php.ini-production /usr/local/php/php.ini

PHP-FPM配置文件:

[root@localhost php-7.3.4]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

修改 /usr/local/php/etc/php-fpm.conf 运行用户和组改为nginx
将这个路径下的文件/usr/local/php/etc/php-fpm.d,重命名为php-fpm.conf

[root@localhost php-fpm.d]# vim php-fpm.conf
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx   #修改成nginx
group = nginx  #nginx

PHP-FPM启动脚本

[root@localhost php-7.3.4]# cp /usr/local/src/php-7.3.4/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-7.3.4]# chmod +x /etc/init.d/php-fpm 
[root@localhost php-7.3.4]# chkconfig php-fpm on

启动

[root@localhost php-fpm.d]# /etc/init.d/php-fpm start
Starting php-fpm  done
[root@localhost php-fpm.d]# ps -uax |grep php
root      86264  0.0  0.1 219888  4364 ?        Ss   21:32   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nginx     86265  0.0  0.0 219888  3916 ?        S    21:32   0:00 php-fpm: pool www
nginx     86266  0.0  0.0 219888  3916 ?        S    21:32   0:00 php-fpm: pool www
root      86268  0.0  0.0 112728   972 pts/1    S+   21:32   0:00 grep --color=auto php

测试LNMP的PHP支持

[root@localhost html]# vim index.php 
<?php
	phpinfo();
?>

如果测试访问有问题,检查一下网页的根路径,还有防火墙
源码编译搭建LNMP环境的步骤很详细_第8张图片
源码编译搭建LNMP环境的步骤很详细_第9张图片
源码编译搭建LNMP环境的步骤很详细_第10张图片

安装phpmyadmin

centos7 安装phpmyadmin

1、先安装epel,不然安装pgpmyadmin时会出现找不到包。

yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
2、
yum -y install phpmyadmin
3、修改配置文件

修改前

vim /etc/httpd/conf.d/phpMyAdmin.conf

<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>
Apache 2.4
 <RequireAny>
  # Require ip 127.0.0.1  #注释掉
  # Require ip ::1   #注释掉
  Require all granted   #新添加
 </RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>

Apache 2.2
 Order Deny,Allow
 Deny from All
 Allow from 127.0.0.1
 Allow from ::1
</IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>

修改后

Apache 2.4
 <RequireAny>
  #Require ip 127.0.0.1  #注释掉
  #Require ip ::1   #注释掉
  Require all granted   #新添加
 </RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>

Apache 2.2
 Order Deny,Allow
 Deny from All
 Allow from 127.0.0.1
 Allow from ::1
</IfModule>
</Directory>

修改nginx配置

新增

server
{
listen 888;
server_name phpmyadmin;
index index.html index.htm index.php;
root /usr/share/phpMyAdmin;

    #error_page   404   /404.html;
    include enable-php.conf;

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
     expires      12h;
    }

    location ~ /\.
    {
        deny all;
    }

    access_log  /usr/loacl/logs/access.log;
}

注意两点
一文件的属主,属主要设置成启动nginx的用户,如果是用root,启动这个可以忽略
二.文件权限问题,文件权限755

改完之后重启nginx

你可能感兴趣的:(Linux服务搭建)