php编译安装, 编译安装nginx, yum安装nginx, nginx虚拟主机,默认虚拟主机
编译安装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
一、安装方法一
- 下载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
- 安装,编译内容不多
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install
- 启动
/usr/local/nginx/sbin/nginx
- 编译安装后是没有放置虚拟主机配置文件的目录,需要新建目录,如/usr/local/nginx/vhost,在主配置文件里include进去
include vhost/*.conf; - 还是yum安装比较好吧,不会有什么缺失,完善一点;
二、安装方法二
- 删除之前的安装
rm -rf /usr/local/nginx
pkill nginx
- 编缉yum仓库
vi /etc/yum.repos.d/nginx.repo
粘贴:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=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虚拟主机,默认虚拟主机相关推荐
- centos yum 安装java_Linux Centos 使用 yum 安装java
Linux CentOS使用yum安装Docker Docker支持以下的CentOS版本: 目前,CentOS仅发行版本中的内核支持Docker. Docker运行在CentOS7上,要求系统为64 ...
- nginx yum安装后的文件路径
1.nginx.conf路径:/etc/nginx/ 2.日志路径:/var/log/nginx 3.安装目录:/etc/nginx/nginx.conf 4.config: /etc/sysconf ...
- linux yum 安装node,CentOS7 下 yum安装新版nodejs
系统的yum源安装nodejs版本太低. 如果你的系统版本比较低,gcc库版本低,编译安装的时候有可能不成功,所以准备工作. sudo yum install gcc-c++ make 下面是yum安 ...
- etcd 笔记(02)— etcd 安装(apt 或 yum 安装 、二进制包安装、Docker 安装 etcd、etcd 前端工具etcdkeeper)
1. 使用 apt 或 yum 安装 etcd 命令如下: sudo apt-get install etcd 或者 sudo yum install etcd 这样安装的缺点是:安装的 etcd 版 ...
- linux7 yum安装rabbitmq,CentOS7linux下yum安装RabbitMQ以及使用顶
CentOS7 linux下yum安装RabbitMQ以及使用,亲测可用!亲测可用!亲测可用! 系统版本:CentOS 7 RabbitMQ-Server:3.5.1 一.安装erlang 1.安装准 ...
- linux6 yum安装mysql_linux CentOS6.5 yum安装mysql5.6
本文为大家分享了linux yum安装mysql5.6简单过程,供大家参考,具体内容如下 1.新开的云服务器,需要检测系统是否自带安装mysql # yum list installed | grep ...
- 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 ...
- linux yum 安装mysql_Linux下使用yum安装MySQL
linux下使用yum安装mysql 1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list ...
- centos下yum安装mysql5.7_CentOS下yum安装mysql5.7
文章目录 [隐藏] 1.安装yum库 2.安装mysql 3.启动mysql 4.获取初次安装时root的密码 5.修改root密码 6.允许root远程登录 1.安装yum库 [root@dream ...
最新文章
- mysql加锁处理分析_MySQL 加锁处理分析 ---非常牛逼
- Length High
- 非线性方程求根的牛顿法
- 简介——云计算,大数据,人工智能
- NIO 之 Channel
- 用CSS3来代替JS实现交互
- linux 机器格式化_为什么机器人应该为我们格式化代码
- 查看文章影响因子的插件_Scholarscope--在新版PubMed中实现基于影响因子的文献筛选...
- C#的未来:扩展属性及更多
- 微信公号“架构师之路”学习笔记(六)-互联网一致性架构设计(session一致性,主从一致性,双主一致性,缓存一致性,冗余一致性,消息时序一致性,分布式事务一致性,数据扣减一致性等)
- 版本控制工具比较-CVS,SVN,GIT
- Android 控件 之 Adapter 基础讲解
- 常用来进行钢结构节点输出的软件是什么_钢结构深化设计BIM应用方法总结
- 卡巴斯基2010激活码
- excel宏-自定义筛选查询
- Android 和风天气+腾讯地图
- CNN with Attention---channal and spatial attention
- 直观打印二叉树的图形
- socket缓冲区/sk_buffer/滑动窗口关系
- 送给女朋友的java程序_情人节写给女朋友Java Swing代码程序