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 代理服务器.在高连接并发的情况下, ...
随机推荐
- 谷歌百度以图搜图 "感知哈希算法" C#简单实现
/// <summary> /// 感知哈希算法 /// </summary> public class ImageComparer { /// <summary> ...
- 4.1 Routing -- Introduction
一.Routing 1. 当用户与应用程序交互时,它会经过很多状态.Ember.js为你提供了有用的工具去管理它的状态和扩展你的app. 2. 要理解为什么这是重要的,假设我们正在编写一个Web应用程 ...
- 01 - spring mvc 概述及配置DispatcherServlet
1.Spring mvc 基于model2实现,整体框架流程如(图片来自百度): ①web容器接收到http请求,若匹配DispatcherServlet的请求映射路径(web.xml),则容器会交给 ...
- SEO笔记:Anatomy of a URL
Dr. Peter J. Meyers 原文链接:https://moz.com/blog/seo-cheat-sheet-anatomy-of-a-url 原文主要通过对比讲解 SEO优化后的URL ...
- 学号20155311 2016-2017-2 《Java程序设计》第5周学习总结
学号20155311 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 由于我的ios系统出了一些问题,所以git idea jdk我都重新在windows系统 ...
- 将flex页面嵌入到jsp页面中
如果我们只需要用到Flex的一部分功能,例如播放器功能,我们可以单独把Flex页面嵌入到Jsp页面中.要想实现此功能,需要下载一个工程,将其覆盖在服务器根目录下即可.你可以在次下载:FlexModul ...
- bzoj2721 / P1445 [Violet]樱花
P1445 [Violet]樱花 显然$x,y>n$ 那么我们可以设$a=n!,y=a+t(t>0)$ 再对原式通分一下$a(a+t)+ax=x(a+t)$ $a^{2}+at+ax=ax ...
- poj3318 Matrix Multiplication
poj3318 Matrix Multiplication 题意:给定$n*n(n<=500)$的矩阵$A,B,C$,如果$A*B==C$,输出“YES”,否则为“NO”:多组数据,$O(n^{ ...
- 编译 Tensorflow 1.10 + CUDA9.2 + MKL【转】
本文转自:https://www.solarck.com/compile-tensorflow-gpu.html 我的电脑系统是基于 Archlinux 的 Manjaro,软件包更新的比较激进,很早 ...
- linux下查看cpu核心数
1.查看物理CPU个数 cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l 2.查看每个物理CPU含有的core个数 cat ...