CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)


Posted in PHP onSeptember 01, 2016

一、安装前的准备工作

1、yum update #更新系统

2、yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2 libxml2-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel #安装php、MySQL、Nngix所依赖的包

3、下载以下包 #我把所有源文件都下载在root目录,读者可自行修改源文件存放目录

3.1 libmcrypt-2.5.8.tar.gz

3.2 mcrypt-2.6.8.tar.gz

3.3 mhash-0.9.9.9.tar.gz

3.4 zlib-1.2.8.tar.gz

解压并安装如:

#tar -zvxf libmcrypt-2.5.8.tar.gz
#cd libmcrypt-2.5.8
#./configure
#make && make insatll

4、在安装软件时如果提示有什么依赖包没有安装的可以再执行yum install * -y (*表示相关包)

二、编译安装Nginx

1、去官网http://nginx.org/en/download.html下载最nginx-1.10.1.tar.gz的稳定版本

2、编译步骤如下

1、通过winSCP上传nginx-1.10.1.tar.gz到/root目录下

1.1 groupadd -r nginx #新建nginx组

1.2 useradd -r -g nginx -s /bin/false nginx #新建无登录权限的nginx用户

1.3 id nginx #查看nginx组及用户

2、tar -zvxf nginx-1.10.1.tar.gz

3、cd nginx-1.10.1

4、可通过./configure --help查看编译配置参数,也可参考http://nginx.org/en/docs/configure.html,下列参数要写在一行中

./configure
--prefix=/usr/local/nginx
--modules-path=/usr/local/nginx/modules
--with-http_ssl_module
--pid-path=/usr/local/nginx/nginx.pid
--user=nginx
--group=nginx

5、make && make install #编译并安装

6、启动nginx

6.1 cd /usr/local/nginx

6.2 sbin/nginx #启动,可使用sbin/nginx -?查看nginx相关操作命令

7、在/usr/lib/systemd/system目录下新建nginx.service文件,这样就可以通过systemctl stop|start|reload nginx.service来操作nginx,也可参考https://www.nginx.com/resources/wiki/start/topics/examples/systemd/,内容如下:

 [Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

三、编译安装MySQL

1、去官网http://dev.mysql.com/Downloads/MySQL-5.7/mysql-boost-5.7.14.tar.gz下载带boost的5.7.14版本

2、编译步骤如下

1、用winSCP上传mysql-boost-5.7.14.tar.gz到/root目录下

2、groupadd mysql

3、useradd -r -g mysql -s /bin/false mysql

4、用cmake编译mysql, 相关参数可以参考https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html,下列参数要写在一行

cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
-DSYSCONFDIR=/usr/local/mysql/etc
-DSYSTEMD_PID_DIR=/usr/local/mysql
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 
-DMYSQL_DATADIR=/usr/local/mysql/data 
-DWITH_BOOST=boost
-DWITH_SYSTEMD=1

 5、make && make install

6、配置mysql并初始化数据库

6.1 cd /usr/local/mysql #进入编译目录

6.2 chown -R mysql . #修改目录所有者

6.3 chgrp -R mysql . #修改目录组

6.4 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #配置mysqld服务

6.5 cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/my.cnf #配置my.cnf

6.5.1 复制以下内容到my.cnf文件中的[mysqld]下

 

user = mysql
 basedir = /usr/local/mysql
 datadir = /usr/local/mysql/data
 port = 3306
 server_id = /usr/local/mysql/mysqld.pid
 socket = /usr/local/mysql/mysql.sock

6.5 chkconfig mysqld on #设置mysqld开机自启

6.6 bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data #初始化数据库

6.7 bin/mysqld --user=mysql & #启动mysql, 如果报Please read "Security" section of the manual to find out how to run mysqld as root!,就在my.cnf中加入user=root, 表示以root用户启动

7、修改root用户登录密码并允许root用户远程登录

7.1 mysql -u root --skip-password

7.2 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

7.3 允许root用户远程登录

7.3.1 use mysql;

7.3.2 update user set host='%' where user='root' and host='localhost'; #允许

(update user set host='localhost' where user='root'; #禁用)

7.3.3 flush privileges;

7.3.4 service mysqld restart

8、解决service mysqld start|stop报MySQL server PID file could not be found!或者Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe), 其实可通过阅读此文件解决相关错误

8.1 chmod 777 /usr/local/mysql #因我设置mysqld.pid文件保存在/usr/local/mysql目录,所以保证其有可写权限

8.2 通过winSCP修改/etc/init.d/mysqld文件

8.2.1 basedir=/usr/local/mysql #手动指定

8.2.2 datadir=/usr/local/mysql/data #手动指定

8.2.3 mysqld_pid_file_path=/usr/local/mysql/mysqld.pid #手动指定

8.2.4 把此文件中所有未注释的含有mysqld_safe的字符替换成mysqld

四、编译安装php

1、去官网http://php.net/downloads.php下载php7.0.10版本

2、编译步骤如下

1、用winSCP上传php-7.0.10.tar.gz到/root目录下

2、tar -zvxf php-7.0.10.tar.gz #解压

3、配置编译php参数, 可使用./configure --help命令查看所有编译配置项目, 下列参数要写在一行中

 ./configure 
--prefix=/usr/local/php
--exec-prefix=/usr/local/php
--datadir=/usr/local/php
--with-config-file-path=/usr/local/php/etc
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-fpm-user=nginx
--with-fpm-group=nginx
--with-gd
--with-iconv
--enable-mbstring
--enable-fpm
--enable-mysqlnd

4、make && make install #编译并安装

5、cd /usr/local/php #进入编译目录

6、修改相关配置文件

6.1 cp /usr/local/php/etc/php.ini.default /usr/local/php/etc/php.ini #php.ini中相关配置依项目需要自行修改,配置nginx支持php参考http://php.net/manual/zh/install.unix.nginx.php

6.2 cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #去掉[global]项下pid前的;

6.3 cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf #大致在23、24行修改user和group如:user = nginx,group = nginx

7、chmod 777 /usr/local/php/var/run #默认PID文件是写在/usr/local/php/var/run这个目录中,所以修改目录权限

8、sbin/php-fpm #启动php, 可通过sbin/php-fpm -h 查看相关操作命令列表

9、在/usr/lib/systemd/system目录下新建php-fpm.service文件,这样就可以通过systemctl stop|start|reload php-fpm.service来操作php-fpm,内容如下:

 [Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
Before=nginx.service
[Service]
Type=forking
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=/bin/kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`
ExecReload=/bin/kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
PrivateTmp=true
[Install]
WantedBy=multi-user.target

五、至此在我的VirturBox中CentOS7.2下成功搭建了LNMP环境

CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)

以上所述是小编给大家介绍的CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
pw的一个放后门的方法分析
Oct 08 PHP
php读取mysql的简单实例
Jan 15 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
项目中应用Redis+Php的场景
May 22 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
laravel 获取当前url的别名方法
Oct 11 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 #PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 #PHP
深入浅析Yii admin的权限控制
Aug 31 #PHP
php解决和避免form表单重复提交的几种方法
Aug 31 #PHP
PHP Callable强制指定回调类型的方法
Aug 30 #PHP
thinkphp配置文件路径的实现方法
Aug 30 #PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 #PHP
You might like
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
python 实现按对象传值
2019/12/26 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
高中毕业生个人自我鉴定
2013/11/24 职场文书
户籍证明格式
2014/09/15 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python