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 代理服务器.在高连接并发的情况下, ...
随机推荐
- chrome 关闭安全模式
chrome.exe --disable-web-security --user-data-dir
- org.apache.ibatis.exceptions.TooManyResultsException的异常排查过程
在查阅测试环境业务日志中的ERROR级别的日志时,发现了有一个Mybatis相关的异常错误org.apache.ibatis.exceptions.TooManyResultsException: E ...
- 35. Search Insert Position(二分查找)
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- win7 +v Ubuntu 16.04 grub rescue 模式下修复 grub
前几天整理了下电脑的分区,合并并删除一些分区,结果导致 grub 被破坏了,Ubuntu进不去了,启动后直接进入了 rescure 模式.后来又折腾了下,终于修复好了,现总结一下. 先说一下我的系统环 ...
- python pytz 结合时区的日期操作
有一个安排在2012 年12 月21 日早上9:30 的电话会议,地点在芝加哥.而朋友在印度的班加罗尔,那么他应该在当地时间几点参加这个会议呢? 对几乎所有涉及到时区的问题,你都应该使用pytz 模块 ...
- python tesseract-ocr 安装包下载地址
https://github.com/UB-Mannheim/tesseract/wiki 如图:可以选合适的版本进行下载
- nginx重启 failed (98: Address already in use)
启动nginx服务,无法正常启动,一查log日志,发现如题错误信息. 问题描述:地址已被使用.可能nginx服务卡死了,导致端口占用,出现此错误. 查看端口 netstat -ntpl 杀掉进程 ...
- Python 3 并发编程多进程之进程池与回调函数
Python 3 进程池与回调函数 一.进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.多进程是实现并发的手段之一,需要注意 ...
- Xcode7.2与iOS9之坑 (持续更新)
GitHub地址 前几天升级OS X EI Capitan 10.11.1, 以及Xcode7.1,正好赶上公司新产品上线,要做iOS9的适配,遇到各种坑,各种查资料,随之记录总结一下遇到的坑. 先说 ...
- linux kernel 提示VFS: Cannot open root device "mmcblk0p1" or unknown-block(179,1): error -19等信息后发生panic
一.背景 文件系统安装在sd卡的第一个分区中,使用的是ext4文件系统,linux内核版本为4.14 二.思考 在内核启动之前,uboot给内核传递了参数root=/dev/mmcblk0p1,但是为 ...