设为首页 收藏本站
查看: 384|回复: 0

[经验分享] centos 7 编译安装php+nginx+mysql

[复制链接]

尚未签到

发表于 2018-4-27 07:52:14 | 显示全部楼层 |阅读模式
  lnmp
  一、安装mariadb(mysql)服务   yum install mariadb mariadb-server mariadb-devel
  自从mysql被oracle公司收购后,mysql就有闭源收费的风险,所以,就有了社区版改装的mysql分支mariadb来规避这个风险。centos7开始,yum源的mysql全部都替换成mariadb的了。所以,mariadb是mysql的一个分支。不过貌似听说,google有一部分数据库也都已经迁移到mariadb了,真是要鄙视一下oracle公司,oracle数据库都这么赚了,还打着mysql的主意…
  二、源码编译安装php5.6
  1.下载php5.6        wget http://cn2.php.net/distributions/php-5.6.5.tar.gz         纠结的是,刚安装好的centos 7连wget都木有,所以yum -y install wget然后再下载,,,
  2.解压   tar -xvzf php-5.6.5.tar.gz            进入  cd php-5.6.5
  3.运行./configure脚本,启用需要的扩展模块,并指定php的安装目录  ./configure –enable-fpm –enable-mbstring –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd
  这一步很是关键的,我忘记指定–prefix,它默认也是给我安装在/usr/local/php,不过还是指定一下比较妥当。还有,在这里的时候只记得安装mbstring和fpm扩展,忘记curl和intl(有一个东东是用yii2框架做的,需要介个东东)了,不过忘了也木有关系,到时候在编译扩展,动态安装进去。不过为了能顺利一口气等下输出phpinfo页面,能让nginx支持php,一定要把–enable-fpm加上去,fpm是php的一个脚本管理器,貌似说php5.3版本以前,fpm只是一个补丁patch,要去patch这个目录找他,php5.3后呢,据说是转正了,php里面已经集成了,不是第三方包了。只要跟上–enable-fpm安装完后就可以跑鸟…php链接mysql呢,这个东东也是必须要哒,–with-mysql是指定mysql的头文件,可以whereis mysql然后指定mysql的安装目录,不过php5.5后,直接用php提供的mysql驱动mysqlnd就口以了,据说这个驱动比mysql写的那个性能要好。。。巴拉巴拉。。。没有超大流量的站点,我是没能体会到……………….

  php5.6 ./configure
  配置完后,如果没有错误的话,就话看到成功的信息了。如果提示缺什么扩展就装上xxx-devel开发包,再运行./configure

  ./configure结果
  然后就是编译make了,我的服务器是3.5G内存的,双核cpu来着,花了貌似十多分钟编译吧
  编译完成后,就是make install安装滴啦…
  make install结果

  make install
  运行php -v就口以看到php的版本信息啦,php 5.6最新版就安装上啦。
  ok,到这里差不多的啦,但是还有php的配置文件php.ini呢,复制一份安装目录下的php.ini-development这个配置文件模板到php的目录。yum安装的php,php会去/etc/php.ini下找自己的配置文件。源码安装的配置文件放哪里的呢。。。写一个phpinfo()的页面,然后打开这个页面,google chrome下ctrl + f查找一下php.ini就会看到php是去哪里找的php.ini,然后就cp这个php.ini-development到这个目录下,并改名成php.ini就口以了。当然,貌似php.ini一般是在/etc/php.ini或者/usr/local/lib/php.ini中,不对的话,查找一下是最靠谱的解决办法。
  为了要让nginx支持php,需要fastcgi处理有关php的页面,而php就需要php-fpm这个组件来支持,这个跟appache支持php是两个不同的原理。上面安装的时候已经./configure –enable-fpm啦,所以fpm已经开启了。当然,我们还需要配置一下php-fpm,在安装php的时候,已经为我们生成了一个配置模板了,在/usr/local/etc/php-fpm.conf.default了,只要复制这个模板并改名为php-fpm.conf就口以了,进去把daemonize改成yes,以后台服务的运行方式启动。然后捏,whereis php-fpm,这个是个可执行文件,直接执行php-fpm就可以运行了,然后netstat -an| grep php-fpm,看到,果然9000号端口在监听啦

  php-fpm listening
  三、源码编译安装nginx1.7.9
  1.下载nginx最新版 wget http://nginx.org/download/nginx-1.7.9.tar.gz
  2.解压&&进入 tar -xvzf nginx-1.7.9.tar.gz
  cd nginx-1.7.9
  3.运行./configure脚本,指定安装目录       ./configure –sbin-path=/usr/local/nginx –conf-path=/usr/local/nginx/nginx.conf –pid-path=/usr/local/nginx/nginx.pid –with–http_ssl_module

  nginx ./configure

  nginx ./configure结果
  然后就设置完了,,,如果报错的话,一般就是找不到依赖,缺什么就yum -y install xxx-devel,安装完后就口以了。第一次的时候,提示我缺少pcre,介个东东是正则,rewrite这样的模块是需要他来支持的,当然可以在configure加个选项–without不安装系统推荐安装的模块就可以跳过这个错误继续安装了。但是,nginx官方默认安装的模块还是都给装上,少了这个正则,等下nginx就没法匹配.php结尾的文件,再交给php-fpm来处理了。
  然后,就是编译make了。。。纠结的是,nginx在make后,自动就给装上啦,不需要make install啦

  nginx
  nginx成功安装啦
  现在,就是要让nginx匹配,匹配到.php结尾的文件,就通过fastcgi传给php-fpm来解析,解析完后再给nginx传给浏览器显示,刚才./configure时已经指定了nginx配置文件地址
  修改配置:vim /usr/local/nginx/nginx.conf
  大概在64行左右,模板已经有支持php-fpm的配置了,去掉#注释,然后重启一下nginx就可以了。
  再回到/usr/local/nginx/html目录,编写一个phpinfo()的页面,然后在浏览器中访问这个页面,就能看到php和nginx的信息了:http://wfee.feehi.com/phpinfo.php

  phpinfo
  往下翻,看到php还有很多常用的扩展都没有装上的呢,比如curl intl openssl等等其他扩展。这是因为在php ./configure的时候,没有enable的原因。这些库有需要的时候,可以再去源码目录的extentison中编译安装,动态添加进去。
  还有一个问题就是,装完后

  php-mysql
  mysql_connet等系列函数用不了,这种warning信息,证明mysql驱动是装上了的。因为他毕竟不是报的undefined function mysql_connet…,这种情况是因为php找不到mysql.sock的连接。启动mariadb(mysql)进入,输入status,记住unix socket的路径

  mysql.sock
  然后把他配置到php.ini里面:
  vim /usr/local/lib/php.ini找到mysql.default_socket,加上刚才的sock文件位置

  mysql.default_socket
  然后看看phpinfo页面,mysql扩展中mysql.default_socket就有值了。最一开始是没有的,配置了之后才有的,当然如果是yum安装的话,不用去配置,php也是找的到这个mysql.sock的。当然mysqli和pdo-mysql都要这样配一下

  phpinfo mysql
  然后,就能正常输出了

  mysql连接成功
  因为不是yum安装的,nginx还没有成为系统服务,在/etc/rd.d/init.d下新建一个nginxd的脚本,方便开机自启以及使用service nginxd start/stop/restart来管理nginx

  service nginxd start
  ok,终于完成了lnmp环境的搭建!nginx也支持php了。nginx和php都是源码方式安装的,mariadb是用yum源安装的。好好体会一下nginx的魅力以及最新版php带来的新功能,准备用这个服务器做个备份的,有想过主从服务器,分布式部署,负载均衡,可惜这两台云服务器不在一个内网。。。慢慢思考吧。加油。希望我的博客能帮助和我一样遇到问题的盆友们,啦啦啦啦啦啦啦

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-452472-1-1.html 上篇帖子: CentOS 6.5 x64 Redis 安装 下篇帖子: CentOS 6 配置公共key认证服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表