编译安装PHP-7.3.0

1. 下载程序

下载php 7.3.0

cd /usr/local/src
wget http://cn2.php.net/distributions/php-7.3.0.tar.bz2
tar -zxf php-7.3.0.tar.bz2

下载mysql 5.6,编译过程需要这个包里的一些文件

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
tar -zxf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql5.6

2. 配置选项(编译安装三步之一,生成makefile)

cd /usr/local/src/php-7.3.0
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql5.6 --with-mysqli=/usr/local/mysql5.6/bin/mysql_config --with-pdo-mysql=/usr/local/mysql5.6 --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl

可以看到第二行,第三行都用到/usr/local/mysql5.6这个路径

编译过程可能会出错,显示缺失一些包,用yum安装,其中包括

gcc; libxml2-devel; openssl-devel; libcurl-devel; libpng-devel; freetype-devel

安装时多数选择devel包

3.编译(代码转成二进制,编译安装三步之一,make)

make

4.安装(把文件复制到相应目录,编译安装三步之一,make install)

这里指的目录是2. 配置选项中第一行指定的目录

make install

5. 配置文件和启动

  • php服务的配置文件模板生成实际使用的配置文件

cd /usr/local/php-fpm/etc
cp php-fpm.conf.default php-fpm.conf

文件里语句只是include了另外一个配置文件(pool文件);
如果是旧版php,如php5.6,没有单独的pool文件,pool的设置都放置在php-fpm.conf里;

[root@tanyvlinux php-fpm.d]# grep ^[^\;] ../php-fpm.conf |grep ^[^$]
[global]
include=/usr/local/php-fpm/etc/php-fpm.d/*.conf
  • php配置文件ini
    php.ini是php运行核心配置文件
    (如禁用phpinfo)

cd /usr/local/src/php-7.3.0
cp php.ini-development /usr/local/php-fpm/etc/php.ini

文件夹里还有一个配置文件php.int-production用于生产环境

  • 将启动脚本放到系统启动项

cd /usr/local/src/php-7.3.0/sapi/fpm
cp /init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

  • pool定义 (php-fpm.conf include的文件)

cd /usr/local/php-fpm/etc/php-fpm.d
cp www.conf.default www.conf

pool文件默认内容如下:
(该文件用于增加pool,修改端口,设置错误日志排查问题,open_basedir等)

[root@tanyvlinux php-fpm.d]# grep ^[^\;] www.conf |grep ^[^$]
[www]
user = php-fpm
group = php-fpm
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
  • 新建帐号

useradd php-fpm

  • 启动服务

service php-fpm start

netstat -antp

侦听9000端口
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      36226/php-fpm: mast

安装mariadb10.2.27后安装php5.6.39错误

make
/usr/local/src/php-5.6.39/ext/mysql/php_mysql.c: 在函数‘php_mysql_do_connect’中:
/usr/local/src/php-5.6.39/ext/mysql/php_mysql.c:725:36: 错误:‘MYSQL_PORT’未声明(在此函数内第一次使用)int hashed_details_length, port = MYSQL_PORT;^
/usr/local/src/php-5.6.39/ext/mysql/php_mysql.c:725:36: 附注:每个未声明的标识符在其出现的函数内只报告一次
make: *** [ext/mysql/php_mysql.lo] 错误 1上面是一个错误,要把MYSQL_PORT全部改成0,可以通过这个错误;
----------------------------------------------------------------------------------
In file included from /usr/local/src/php-5.6.39/ext/mysqli/mysqli.c:34:0:
/usr/local/src/php-5.6.39/ext/mysqli/php_mysqli_structs.h:82:21: fatal error: my_list.h: No such file or directory#include <my_list.h>In file included from /usr/local/src/php-5.6.39/ext/mysqli/mysqli.c:34:0:
/usr/local/src/php-5.6.39/ext/mysqli/php_mysqli_structs.h:83:22: fatal error: m_string.h: No such file or directory#include <m_string.h>In file included from /usr/local/src/php-5.6.39/ext/mysqli/php_mysqli_structs.h:83:0,from /usr/local/src/php-5.6.39/ext/mysqli/mysqli.c:34:
/usr/local/mysql/include/mysql/m_string.h:37:28: fatal error: lex_string.h: No such file or directory#include "lex_string.h"
上面是另外三个错误,没有相关的文件;

https://dev.mysql.com/doc/dev/mysql-server/8.0.11/m__string_8h_source.html
上面链接可以下载这些文件,手动新建文件放进去目录/usr/local/mysql/include/mysql/放完一个,下一个依赖又出问题,所以编译参数需要改成mysql解压包的路径,这样可以解决问题。

安装mariadb10.2.27后安装php7.3.0脚本

#!/bin/bash
# need to download the php file and change the tar phase
# need a mysql5.6 file in /usr/local/cd /usr/local/src#    wget -c http://cn2.php.net/distributions/php-5.6.39.tar.bz2yum install -y bzip2sleep 10
tar -jxvf php-7.3.0.tar.bz2sleep 5mv php-7.3.0 php7.3cd php7.3/yum install -y gcc-plugin-devel.x86_64yum install -y libxml2-develyum install -y openssl-devel.x86_64yum install -y libcurl-develyum install -y libjpeg-turbo-develyum install -y libpng-develyum install -y freetype-develyum install -y epel-releaseyum install -y libmcrypt-devel
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql5.6 --with-mysqli=/usr/local/mysql5.6/bin/mysql_config --with-pdo-mysql=/usr/local/mysql5.6 --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl   makemake installsleep 10cp /usr/local/src/php7.3/php.ini-production /usr/local/php-fpm/etc/php.inicp  /usr/local/src/php7.3/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmchkconfig --add php-fpmchmod 755 /etc/init.d/php-fpmuseradd -s /sbin/nologin php-fpmmv /usr/local/php-fpm/etc/php-fpm.conf.default /usr/local/php-fpm/etc/php-fpm.confmv /usr/local/php-fpm/etc/php-fpm.d/www.conf.default /usr/local/php-fpm/etc/php-fpm.d/www.conf
service php-fpm start
if  [ $? -eq 0 ]; thenecho "php-fpm installed successfully"
elseecho "fault"
fi

安装nginx-1.14.2

一、安装方法一

  1. 下载nginx

cd /usr/local/src

wget http://nginx.org/download/nginx-1.14.2.tar.gz

tar zxvf nginx-1.14.2.tar.gz

cd nginx-1.14.2

  1. 安装,编译内容不多

./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install

  1. 启动

/usr/local/nginx/sbin/nginx

  1. 编译安装后是没有放置虚拟主机配置文件的目录,需要新建目录,如/usr/local/nginx/vhost,在主配置文件里include进去
    include vhost/*.conf;
  2. 还是yum安装比较好吧,不会有什么缺失,完善一点;

二、安装方法二

  1. 删除之前的安装

rm -rf /usr/local/nginx
pkill nginx

  1. 编缉yum仓库

vi /etc/yum.repos.d/nginx.repo
粘贴:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
保存

  1. 安装和启动

/yum install -y nginx

systemctl start nginx

配置文件路径为

/etc/nginx

附加:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
这个是下载安装nginx yum源的命令,跟自建源文件是一样的,之后可以yum安装。

最新测试yum 安装了nginx-1.16,编译安装没有找到conf.d目录(放置虚拟主机配文件的目录)。

连接nginx服务器

nginx服务打开后就可以通过本地网络的另一台主机访问这个服务
在浏览器输入nginx服务器的IP,会看到如下界面:

如果不能显示,原因应该是默认打开了防火墙,可以关闭或打开端口

关闭firewalld服务: systemctl stop firewalld

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

nginx虚拟主机

  • 客户端访问服务端可以解化为以下几步(下表的首行),每一行的设置都互相对应才能成功访问:客户端用浏览器访问域名1,DNS将域名转化为IP,服务器配置这个IP,nginx某个文件配置相应的侦听的域名和端口号;当然这个文件还可以实现很多功能;
  • 这个文件设定了客户端通过一个域名访问服务器数据的全过程,去哪里找数据,哪些能访问,哪些不能访问,哪个用户能访问,哪个用户不能访问,哪些要密码等;
  • 这个文件就叫做虚拟主机的配置文件/etc/nginx/conf.d/*.conf(一台服务器可以模拟出多台以前服务器的功能,以前一台服务器即一台主机对应一个域名);
  • 配置虚拟主机的配置文件,可以实现几个域名访问同一个目录;不同域名访问不同目录;同个域名+不同端口,访问不同目录,等;
  • 事实上是,企业先搞好域名、IP、网站数据,再推广域名,客户再通过域名访问;
客户端访问设置 DNS 服务器IP nginx侦听配置
域名1 指向公网IP1 公网IP1 域名1+默认端口80
域名2 指向公网IP1 公网IP1 域名2+默认端口80
域名1+设定端口 指向公网IP1 公网IP1 域名1+设定端口

实验方法:

  • 客户机修改hosts文件设置一个域名指向一个内网IP(服务器IP);
192.168.87.133   www.tany.com
  • 服务器设置相应的虚拟主机文件;
  • 关闭服务器防火墙;

最基础的虚拟主机配置文件tany.conf

server {listen       80 ;server_name  www.tany.com;location / {root    /data/wwwroot/tany.com/; #网站的根目录,名字对应容易查找,里面新建文本文件index.html;index  index.html index.htm; #进入目录后,会访问的文件名;}}
  • 设置虚拟主机文件后要检查配置和reload nginx
/usr/sbin/nginx -t
/usr/sbin/nginx -s reload
  • 客户机用浏览器访问www.tany.com, 显示/data/wwwroot/tany.com/index.html的内容

默认虚拟主机

  • 域名aaa.com的配置文件aaa.conf在conf.d里的*.conf里面排列第一,那aaa.conf就是默认的配置文件,如访问aaa.com的操作是访问目录aaa,那其他域名如bbb.com指向服务器的IP,而没有这个域名的配置文件时,其操作跟访问aaa.com一样,访问目录aaa。
  • 除了排序另外一个设置默认虚拟主机的方法是加上 default_server
listen       80 default_server;
  • 取消默认虚拟主机
    一般也没有很多域名需要指向默认虚拟主机,可以把这个功能取消,只能有虚拟主机配置文件定义的域名才能正常访问
    listen       80 default_server;server_name  www.aaa.com;deny all;        #将整个配置文件deny, www.aaa.com也是不能访问的;另外配置一个www.tany.com的虚拟主机文件,即打开一个从www.tany.com访问的入口;
  • 泛解析
虚拟主机配置文件server_name 可以是*.aaa.com 也可以是 www.aaa.*
前者可以匹配www.aaa.com blog.aaa.com bbs.aaa.com
后者可以匹配www.aaa.cn www.aaa.com www.aaa.cc
这就是泛解析。

php编译安装, 编译安装nginx, yum安装nginx, nginx虚拟主机,默认虚拟主机相关推荐

  1. centos yum 安装java_Linux Centos 使用 yum 安装java

    Linux CentOS使用yum安装Docker Docker支持以下的CentOS版本: 目前,CentOS仅发行版本中的内核支持Docker. Docker运行在CentOS7上,要求系统为64 ...

  2. nginx yum安装后的文件路径

    1.nginx.conf路径:/etc/nginx/ 2.日志路径:/var/log/nginx 3.安装目录:/etc/nginx/nginx.conf 4.config: /etc/sysconf ...

  3. linux yum 安装node,CentOS7 下 yum安装新版nodejs

    系统的yum源安装nodejs版本太低. 如果你的系统版本比较低,gcc库版本低,编译安装的时候有可能不成功,所以准备工作. sudo yum install gcc-c++ make 下面是yum安 ...

  4. etcd 笔记(02)— etcd 安装(apt 或 yum 安装 、二进制包安装、Docker 安装 etcd、etcd 前端工具etcdkeeper)

    1. 使用 apt 或 yum 安装 etcd 命令如下: sudo apt-get install etcd 或者 sudo yum install etcd 这样安装的缺点是:安装的 etcd 版 ...

  5. linux7 yum安装rabbitmq,CentOS7linux下yum安装RabbitMQ以及使用顶

    CentOS7 linux下yum安装RabbitMQ以及使用,亲测可用!亲测可用!亲测可用! 系统版本:CentOS 7 RabbitMQ-Server:3.5.1 一.安装erlang 1.安装准 ...

  6. linux6 yum安装mysql_linux CentOS6.5 yum安装mysql5.6

    本文为大家分享了linux yum安装mysql5.6简单过程,供大家参考,具体内容如下 1.新开的云服务器,需要检测系统是否自带安装mysql # yum list installed | grep ...

  7. linux 安装rpm no key,yum 安装报 关于Public key for *.rpm is not installed 的解决方法

    yum 安装报 关于Public key for *.rpm is not installed 的解决方法 发布时间:2012-10-24 19:52:13来源:红联作者:静静飞舞 [root@0fl ...

  8. linux yum 安装mysql_Linux下使用yum安装MySQL

    linux下使用yum安装mysql 1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list ...

  9. centos下yum安装mysql5.7_CentOS下yum安装mysql5.7

    文章目录 [隐藏] 1.安装yum库 2.安装mysql 3.启动mysql 4.获取初次安装时root的密码 5.修改root密码 6.允许root远程登录 1.安装yum库 [root@dream ...

最新文章

  1. mysql加锁处理分析_MySQL 加锁处理分析 ---非常牛逼
  2. Length High
  3. 非线性方程求根的牛顿法
  4. 简介——云计算,大数据,人工智能
  5. NIO 之 Channel
  6. 用CSS3来代替JS实现交互
  7. linux 机器格式化_为什么机器人应该为我们格式化代码
  8. 查看文章影响因子的插件_Scholarscope--在新版PubMed中实现基于影响因子的文献筛选...
  9. C#的未来:扩展属性及更多
  10. 微信公号“架构师之路”学习笔记(六)-互联网一致性架构设计(session一致性,主从一致性,双主一致性,缓存一致性,冗余一致性,消息时序一致性,分布式事务一致性,数据扣减一致性等)
  11. 版本控制工具比较-CVS,SVN,GIT
  12. Android 控件 之 Adapter 基础讲解
  13. 常用来进行钢结构节点输出的软件是什么_钢结构深化设计BIM应用方法总结
  14. 卡巴斯基2010激活码
  15. excel宏-自定义筛选查询
  16. Android 和风天气+腾讯地图
  17. CNN with Attention---channal and spatial attention
  18. 直观打印二叉树的图形
  19. socket缓冲区/sk_buffer/滑动窗口关系
  20. 送给女朋友的java程序_情人节写给女朋友Java Swing代码程序

热门文章

  1. c语言将时速转换成配速,平均时速和平均配速的区别
  2. (unix网络编程)即时通讯工具二:服务端与客户端融合
  3. 数据库原理 ODBC概述
  4. Linux下USB驱动框架分析
  5. FXS,FXO,EM区别
  6. 区块链新秀DACC解决内容产业主要矛盾
  7. linux内核期中总结
  8. UDF函数和UDTF函数的图解举例,追加UDAF函数
  9. OpenCV 图像分块 分块图像合并
  10. ARM汇编指令(B/BL/BX)