LNMP环境源码搭建
以前LNMP环境是由运维搭建,自己搭建的时候查找了很多资料,这是我见过的最棒的资料,将过程记录下来分享给大家
为啥使用LNMP而不是LAMP下面来谈谈Nginx的技能
Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当的稳定。Nginx相当的稳定、功能丰富、安装配置简单、低系统资源……
Linux采用的是centOs,软件包统一放在/usr/local/src目录下,至于为啥放在这儿是一种约定俗成的东西,如果centOs源比较老,可以换成163的源。
更换到163源 cd/etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo
安装一下工具 更新yum
yum clean all
yum makecache
yum update
yum -y install vim
更多的yum命令使用 man yum
采用yum包安装一些依赖关系的包
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make cmake libtool* git tree
下载LNMP需要的编译应用和包
下载的文件都放在/usr/local/src目录下,使用wget下载,如果没有wget使用yum包安装 yum -y install wget,下面罗列软件包地址,可以依照地址修改文件名下载最新版本。exp:如果想下载mhash最新包,在浏览器搜索http://jaist.dl.sourceforge.net/project/mhash/mhash/
找到相应的软件包,替换名字就可以了。
切换到/usr/local/src目录 cd /usr/local/src wget相应的软件包
所需要的软件包:
mhash-0.9.9.9
http://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
mcrypt-2.6.8
http://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
ncurses
http://down1.chinaunix.net/distfiles/ncurses-5.9.tar.gz
pcre-8.31.tar.bz2
http://exim.mirror.fr/pcre/pcre-8.31.tar.bz2
zlib-1.2.8.tar.gz
http://iweb.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
freetype-2.3.5.tar.bz2
http://down1.chinaunix.net/distfiles/freetype-2.3.5.tar.bz2
openssl-1.0.1c.tar.gz
http://down1.chinaunix.net/distfiles/openssl-1.0.1c.tar.gz
php-5.5.29.tar.bz2
http://cn2.php.net/distributions/php-5.5.29.tar.bz2
安装libiconv
cd /usr/local/src
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local
make && make install
在我make && make install的时候出现错误了error: ‘gets’ undeclared here (not in a function)。如果你不要遇到遇到,如果遇到请做如下修改:(国外的这文章记录了http://www.itkb.ro/kb/linux/patch-libiconv-pentru-glibc-216)
cd libiconv-1.14/srclib
编辑stdio.in.h文件,搜索这句话
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
把这句注释()添加换成如下几句
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
然后重新编译安装
cd ..
make && make install
下载并安装libmcrypt
cd /usr/local/src
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install
cd libltdl/
./configure --enable-ltdl-install
make
make install
安装mbash
cd /usr/local/src
tar -jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make
make install
下载并安装mcript
cd /usr/local/src
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
注意一下这步运行下,不然下面可能报错
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
./configure
make
make install
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
安装mysql(mysql5.6.13)
先检查一下mysql是否已经存在了,如果存在就删除mysql
rpm -qa | grep mysql
我的显示如下(如果没有任何显示就表示没有mysql呢)
mysql-libs-5.1.73-3.el6_5.i686
如果存在就卸载mysql
rpm -e mysql-libs-5.1.73-3.el6_5.i686 --nodeps
此时再运行
rpm -qa | grep mysql
发现没有任何显示
添加一个mysql用户(nologin用户并且没有家目录)
useradd -M -s /sbin/nologin mysql
初次编译mysql的时候时间比较长,请耐心等待吧
cd /usr/local/src
tar -zxf mysql-5.6.13.tar.gz
cd mysql-5.6.13
注意下面是cmake .注意点
cmake .
make && make install
复制mysql配置文件
cp support-files/my-default.cnf /etc/my.cnf
创建系统数据库表
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
更改权限
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql:mysql data
把mysql添加到系统服务中去
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
启动mysql启动的时候,一直不动的话按下enter.,就行了
/usr/local/mysql/bin/mysqld_safe --user=mysql &
查看mysql是否启动
netstat -tunpl | grep 3306
或者pstree,看到有mysqld进程也行
修改mysql密码
/usr/local/mysql/bin/mysqladmin -u root password "xxxxx"
进入mysql中删除空密码和匿名用户
/usr/local/mysql/bin/mysql -u root -p
select host,user,password from mysql.user;
delete from mysql.user where password="" or user="";
flush privileges;
也可以在mysql修改用户密码(只是说明一下)
set password form 'root'@'localhost' = password('123456');
关闭mysql的时候可以使用
/usr/local/mysql/bin/mysqladmin -u root -p shutdown
把mysql添加到开机启动
vim /etc/rc.local
在最后再加一行
/usr/local/mysql/bin/mysqld_safe --user=mysql &
最后做一个软链接方便使用mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/
nginx安装
nginx安装前编译安装pcre zlib openssl[openssl安装用./config]
pcre安装
cd /usr/local/src
tar -jxf pcre-8.31.tar.bz2
cd pcre-8.31
./configure
make && make install
zlib安装
cd /usr/local/src
tar -zxf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install
openssl安装
cd /usr/local/src
tar -zxf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config
make && make install
安装Nginx
cd /usr/local/src
useradd -M -s /sbin/nologin nginx
解压Nginx
tar -zxf nginx-2.0.1.tar.gz
cd tengine-2.0.1
注意的是with-pcre这些都指向/usr/local/src这种目录 (with-pcre指向安装目录,如果在安装的时候 --prefx=''更改了新的安装目录,在编译的时候要指向相应的安装目录)
./configure --with-pcre=/usr/local/src/pcre-8.31 --with-http_ssl_module --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c
make && make install
做软链接方便nginx启动
ln -s /usr/local/nginx/sbin/nginx /usr/bin/
修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
把#user nobody 改成 user nginx;
测试一下nginx配置文件
nginx -t
启动nginx
nginx
说一下nginx启动的一些事情
一般来说在nginx的配置文件修改后进行如下操作,nginx -t检测一下配置文件是否正确,如果正确的话
再使用nginx -s reload 使nginx平滑启动
把nginx添加到开机启动
vim /etc/rc.local
在最后新加一行
/usr/local/nginx/sbin/nginx
查看nginx是否启动
netstat -tunpl | grep 80
pstree 看下有没有nginx就行了
安装php
cd /usr/local/src
useradd -M -s /sbin/nologin php
tar -jxf php-5.5.12.tar.bz2
cd php-5.5.12
./configure --enable-opcache --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring=all --with-pdo-mysql --enable-sockets --enable-mbstring --enable-fpm --with-curl --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-gd --with-mcrypt --with-libxml-dir=/usr --enable-xml --with-openssl --with-iconv=/usr/local/iconv
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-development /usr/local/php/etc/php.ini
配置php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
将
`user = nobody
group = nobody`
改为
`user = php
group = php`
启动php-fpm
/usr/local/php/sbin/php-fpm
把php-fpm添加到开机启动
vim /etc/rc.local
最后一行加上
/usr/local/php/sbin/php-fpm
修改nginx配置文件使之支持php
vim /usr/local/nginx/conf/nginx.conf
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
修改为
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
也顺便把gzip给开启下吧
gzip on前面的#去掉
修改完配置之后nginx -s reload
ok,现在来测试一下环境
cd /usr/local/nginx
cd html
vim test.php
写上
<?php
phpinfo();
然后访问一下localhost/test.php,正常的话,就一切正常了
如果出问题的话,请看nginx有没有启动,php-fpm有没有启动
注明几个问题如果修改php配置文件的时候,需要重启php-fpm就可以了
先关闭php-fpm
pkill php-fpm
然后运行
/usr/local/php/sbin/php-fpm
就可以了可以看到php-fpm就启动了pstree可以看到这个进程
pstree
为了更方便的使用php和php-fpm,我做了两个链链接
ln -s /usr/local/php/sbin/php-fpm /usr/bin/
ln -s /usr/local/php/bin/php /usr/bin/
nmp安装就彻底完成了,有什么问题可以联系我QQ1017109588 [这里没没讲到如何优化一些配置的问题,以后可以会写文章分析]
在些也特别说明一下nginx如何支持path_info这种形式。配置文件中可以这样写。当然可能对你不需要
location ~ ^(.+\.php)(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
LNMP环境搭建完成 你还可以装一些扩展 例如memcache redisd等
总结
总结:编译安装的过程中 操作系统环境不同 软件包依赖 可能会出现一些报错
遇到报错不要慌张 可以去Google一下 大部分的问题都可以解决
喝水不忘挖井人,感谢原文作者分享,原文请链接
https://wujunze.com/lnmp_compile_install.jsp转载请保留原文链接
参考
LNMP环境源码搭建的更多相关文章
- LNMP架构源码搭建(centos7)
第一步:安装nginx 1.上传或下载nginx,并解压 yum -y install lrzsz rz .tar.gz 2.搭建nginx安装环境 yum -y install gcc-c++ zl ...
- Lnmp环境源码包编辑安装
最近做了一个小工具可以方便的部署LNMP环境,有兴趣的同学可以尝试下: 这是一个集成的shell脚本,脚本将会自动安装好LNMP环境相关软件: 使用步骤 1.下载脚本源码到本地 git clone h ...
- centos下配置LNMP环境(源码安装)
准备工作,安装依赖库 yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg lib ...
- CentOS 7 源码搭建LNMP环境
搭建 LNMP 环境 源码包版本 : CentOS Linux 7 nginx-1.15.1.tar.gz mysql-boost-5.7.21.tar.gz php-7.2.7.tar.gz ...
- 源码搭建LNMP
源码安装LNMP 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 前言:非常简单的一个平台LNMP,在生产实际环 ...
- ARL(资产侦察灯塔系统)-源码搭建
freebuf能力中心开源了一套资产扫描系统(https://github.com/TophantTechnology/ARL),提供docker版,但并无源码搭建的文档(无完整文档).于是在星光哥及 ...
- LNMP架构——源码编译安装
LNMP架构--源码编译安装 1.编译安装nginx服务 2.编译安装mysql服务 3.编译安装php解析环境 1.编译安装nginx服务: systemctl stop firewalld sys ...
- centos6.5环境源码编译安装mysql5.6.34
centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...
- 利用shell脚本去备份幸运28源码搭建下载所指定的数据库
#! /bin/bash幸运28源码搭建下载Q[115288oo99]logintool=/home/yx/server/mysql/mysql/bin/mysqldumptool=/home/yx/ ...
随机推荐
- 12块钱搭建一个ss(包括一个免费服务器)
AWS搭建ss(shadow socks) 如果你符合以下条件,那么继续看还是有点帮助的: 想搞个服务器(包括windows Linux)(免费) 想科学上网(也免费) 之前也从网上搜过本文内容,但手 ...
- GreenOpenPaint简介
一.项目概述 类似Windows系统下面的画图程序,但是已经从底层全部重新实现,改造成为"图像处理"类程序的基本运行框架. 由于是demo界面,较为简陋,但是因为框架已经搭建完善, ...
- github+hexo搭建自己的博客网站(七)注意事项(避免read.me,CNAME文件的覆盖,手动改github page的域名)
详细的可以查看hexo博客的演示:https://saucxs.github.io/ 绑定域名可以查看:http://www.chengxinsong.cn 可以查看在github上生成的静态文件(如 ...
- JavaScript在应用中的技巧(二)
==,===运算符和强制转换 先看个表达式: "1.0e0" == { valueOf: function() { return true; } }; 是的,这个结果可能有点出乎意 ...
- 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
- 使用imageLoader加载图片资源
- pip install python 如何快速安装模块
之前python安装模块要在网络上下载,从python2.7.9之后,以及python3,python就自带pip 这个命令,能够快速的安装模块 1, 首先打开python的主文件夹 2.在主文件夹 ...
- 文件系统的几种类型:ext3, swap, RAID, LVM
分类: 架构设计与优化 1. ext3 在异常断电或系统崩溃(不洁关机, unclean system shutdown ).每个已挂载ext2文件系统计算机必须使用e2fsck程序来检查其一致性 ...
- Java 多线程(三) 线程的生命周期及优先级
线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: 当用new操作符创建一个新的线程对象时,该线程处 ...
- mysql的压缩特性-需求
需求:最近有个插入量比较大的应用需要上,每天的插入量在1亿左右,同时会有较少的查询,表的单行长度在0.5k,就数据而言每天有近50G数据,由于每天写一张新表,保留30天的数据,一个月下来也要1.5T, ...