LNMP架构下的nginx、mysql、php的源码安装
一、LNMP的介绍
LNMP就是Linux+Nginx+Mysql+Php这种网站服务架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统,常见版本有:centos、ubuntu、debain、fedora、gentoo等。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为开源软件,组合在一起成为免费、高校、扩展性强的网站服务系统。
二、mysql的源码编译及配置
(一) 源码编译
1) 安装源码编译工具cmake(cmake在软件包中有,但版本低于2.8,所以需要自己下载一个2.8以上的rpm包)
---> yum install -y cmake-2.8.12.2-4.e16.x86_64.rpm
2)从官网中下载mysql源码包,并解压
---> tar zxf mysql-boost-5.7.17.tar.gz
---> cd mysql-5.7.17
3)创建预编译环境,添加自己所需要的安装条件
---> cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql # 指定mysql安装路径
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data # 数据存储位置
-DWITH_INNOBASE_STORAGE_ENGINE=1 # 安装inmodb的存储引擎
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock # socket文件存储路径
-DWITH_MYISAM_STORAGE_ENGINE=1 # 安装myisam存储引擎
-DDEFAULT_CHARSET=utf8 # 使用编码格式为utf-8
-DDEFAULT_COLLATION=utf8_general_ci # 校验字符
-DEXTRA_CHARSETS=all # 安装所有扩展字符集
-DWITH_BOOST=boost/boost_1_59_0/ # boost路径
# 该命令会出现如下错误:(一)没有安装c语言编译器和c++编译器
解决方法:--- > yum install gcc gcc-c++ -y
# 安装编译器之后,再次编译,还会出现如下问题:(二)没有ncurses-devel包
解决方法:---> yum install -y ncurses-devel
---> rm -f CMakeCache.txt
# 此时再次进行预编译,我们可以看到已经顺利通过了。 (在此过程中,缺什么依赖包,我们下什么就行。有时也有可能会使用openssl-devel包)
4)编译汇编
---> make && make install # 该过程需要几十分钟
(二)mysql的配置
1)进入mysql安装目录,把默认配置文件放在/etc下
---> rpm -qa | grep mysql # 查看mysql的版本
---> cd /etc
---> mv my.cnf my.cnf.bak # 先将/etc下的mysql配置文件重命名
---> cd support-files
---> cp my-default.cnf /etc/my.cnf # 将配置文件拷贝到/etc(系统默认配置文件目录下 )
2)修改/etc下的配置文件
---> vim /etc/my.cnf # 修改如下内容。
basedir = /usr/local/lnmp/mysql # mysql的安装路径
datadir = /usr/local/lnmp/mysql/data # 数据存放目录
port = 3306 # 端口号
# server_id = .....
socket = /usr/local/lnmp/mysql/data/mysql.sock # socket文件存放目录
3)将编译完成的mysql执行脚本复制到/etc/init.d/目录
---> cp /usr/local/lnmp/mysql/support-files/mysql.server /etc/init.d/mysqld #若mysqld无执行权限,使用:chmod +x /etc/init.d/mysqld
4) 将编译生成的mysql二进制命令放进系统变量中。(方便直接使用mysql使用数据库)
---> vim ~/.bash_profile
---> source ~/.bash_profile # 加载.bash_profile,是配置生效
5) 对mysql服务进行限制
---> groupadd -g 27 mysql # 生成uid和gid均为27的mysql用户
---> useradd -u 27 -g 27 mysql
---> id mysql # 进行用户信息的查看
# 当前目录在/usr/local/lnmp/mysql下
---> chown root.mysql . -R # 为了保证数据的安全性,进行目录执行权限的设定
---> chown mysql.mysql . -R
(三)mysql的安全初始化
1)mysql密码的设置
---> bin/mysqld --initialize --user=mysql # 生称随机密码
---> /etc/init.d/mysqld start # 启动mysql服务
---> mysql_secure_installation # 自己设置密码,首密码为上面的随机密码(两个回车,四个y)
2)设置完成之后,我们试着登陆以下mysql。
---> mysql -p
三、PHP的源码安装
1)首先对php源码包进行解压
---> tar jxf php-5.6.35.tar.bz2
---> cd php-5.6.35
2)预编译及所需环境的安装(后面加了什么参数,就需要安装相应的依赖包)
---> ./configure --prefix=/usr/local/lnmp/php # php安装目录
--with-config-file-path=/usr/local/lnmp/php/etc # 配置文件所在位置
--enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd
--with-pdo-mysql=mysqldnd # 支持与mysql建立连接
--with-openssl # 支持openssl的加密
--with-snmp --with-gd --with-zlib --with-curl
--with-libxml-dir # 支持libxml函数
--with-png-dir --with-jpeg-dir --with-freetype-dir # 支持php处理图片
--with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap
--enable-ftp --enable-sockets --enable-mbstring
--enable-fpm --with-mcrypt --with-mhash # 开启fpm模式(nginx服务使用);mcrypt提供加密算法;mhash使用hash加密
3) 解决依赖性锁需要的包
---> yum install libxml2-devel openssl-devel curl-devel gmp-devel net-snmp-devel gcc -y # 这些包,可以直接安装
# 之后,再次预编译,就可以成功了
4)编译和安装
---> make && make install
5) 创建nginx用户
---> useradd nginx
6) 修改php的配置文件
---> cd /usr/local/lnmp/php/etc # 进入配置文件所在目录
---> cp php-fpm.conf.default php-fpm.conf # 配置文件重命名
---> vim php-fpm.conf # 取消pid的注释,并添加nginx用户
---> cp /root/php-5.6.35/php.ini-production /usr/local/lnmp/php/etc/php.ini
---> vim php.ini # 修改数据的时区。
7)把php执行脚本复制到/etc/init.d/目录下
---> cd /root/php-5.6.35/sapi/fpm
---> cp init.d.php-fpm /etc/init.d/php-fpm
---> chmod +x /etc/init.d/php-fpm
8) 启动php-fpm服务,并查看端口是否开启
---> /etc/init.d/php-fpm start # 启动php服务,默认在9000端口
---> netstat -antlp
四、Nginx的源码编译
1)下载源码包,并解压(带有sticky模块的nginx)
---> tar zxf nginx-1.14.0.tar.gz
---> yum install unzip -y
---> unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
2)去掉nginx的版本号
---> cd /root/nginx-1.14.0
---> vim src/core/nginx.h
3) 注释掉debug(可以减少安装内容)
---> cd /root/nginx-1.14.0
---> vim auto/cc/gcc
4) 预编译
---> ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
5) 依赖包的安装(按照提示,少什么包安装什么包即可)
---> yum install -y pcre-devel -y
6) 编译安装
---> make && make install
7) 配置nginx服务
---> cd /usr/local/lnmp/nginx/conf
---> vim nginx.conf # 修改用户,最大文件数,cpu,发布首页面,php信息
---> sysctl -a | grep file # 查看系统最大文件数
---> vim /etc/security/limits.conf # 修改nginx用户做限制
8)为了方便使用nginx二进制命令,我们可以做一个软连接
---> ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin
9) 编写nginx默认发布文件
---> cd /usr/local/lnmp/nginx/html
---> vim index.php
10)启动nginx服务,并在浏览器中进行测试。
---> nginx # nginx的其他命令: nginx -s reload|stop # 重新加载配置文件|关闭服务;
# 在浏览器中结果如下
到此,所有软件的安装就完成了。接下来,我们就可以进行论坛的部署了。
LNMP架构下的nginx、mysql、php的源码安装的更多相关文章
- linux下MySQL 5.6源码安装
linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...
- nginx使用-1(源码安装nginx)
Nginx概述 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramb ...
- nginx + mysql + php相关源码包及安装
nginx + mysql + php安装 引言 完整的搭建一个nginx+php-fpm+mysql的服务器,一直是我向做的,不过一致没有完成过,这次工作需要,终于安装成功了 我列出了我遇到的一些问 ...
- MySQL入门01-MySQL源码安装
操作系统:CentOS 6.7 MySQL版本:5.6.30 1.前期准备 2.系统配置 3.CMake编译配置 4.make && make install 5.后期配置和测试 Re ...
- CentOS 6.3下MySQL 5.6源码安装
Linux操作系统:CentOS 6.3 1:下载:当前mysql版本到了5.6.10 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downl ...
- Linux MySQL 5.1源码安装
安装必备的软件 yum install ncurses-devel -y yum install pcre pcre-devel -y yum install gcc* -y 解压缩 tar -z ...
- Ubuntu下Ruby的下载和编译源码安装
1.Ruby的下载 Ruby可以在Ruby 官网上下载,如果想获取更多的Ruby版本,可以到淘宝镜像网站下载. 2.Ruby的编译源码安装 解压 首先把下载下来的源码压缩包解压到自己指定的目录 编译安 ...
- mysql 5.7源码安装
http://blog.itpub.net/29733787/viewspace-1590891/
- 关于nginx的源码安装方式
Nginx(engine x)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器, 也是一个 IMAP/POP3/SMTP 代理服务器.在高连接并发的情况下, ...
随机推荐
- 美图秀秀DBA谈MySQL运维及优化
美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...
- atime、mtime、ctime的区别及如何降低atime更新 mount时的option noatime
atime.mtime.ctime的区别及如何降低atime更新 mount时的option noatime http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3 ...
- HTML基础之DOM常用操作
DOM(Document Object Model ),文档对象模型,主要用于对HTML和XML文档的内容进行操作. 一.查找节点 直接获取标签 document.getElementById('i1 ...
- java反射获得泛型参数getGenericSuperclass():获取到父类泛型的类型
public class Person<T> { } import java.lang.reflect.ParameterizedType; import java.lang.reflec ...
- LCS 最长公共子子串
与 最长公共子序列类似 只是最长公共子串必须连续 所以只能走斜线!!!! ''' LCS 最长公共子序列 ''' def LCS_len(x, y): m = len(x) n = len(y) dp ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 Solution
A - Buy and Resell 题意:给出n个交易点,每次能够选择买或者卖,求获得最大利润 思路:维护两个优先队列,一个是卖,一个是替换,当价格差相同时,优先替换,因为次数要最少 #includ ...
- zoj3820 树的直径+二分
这题是个遗憾 !!!!!当时一直不敢相信两个站一定在直径上,赛后想想自己真的是脑袋抽风, 如果其中一个站不在直径上就反向的说明了这条不是直径.可以很明白我们可以肯定的是有一个点一定在直径上假如另外一个 ...
- Object-C开发之instancetype和id关键字
一.什么是instancetypeinstancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象.我们都知道未知类型的的对象可以用 ...
- 20145312《网络对抗》 逆向及Bof基础实践
20145312 <网络对抗> 逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:mai ...
- cocos2d-js入门二 环境搭建二
电脑升级到WIN10后,cocos code IDE安装不成功. 于是搭建新的环境JetBrainsWebStorm+chrome+JetBrains IDE Support,其中JetBrains ...