源码手工编译LNMP架构(内附源码包)

简介

LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等;Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器;Mysql是一个小型关系型数据库管理系统;PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

特点

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

实验环境

  • 系统环境:centos6.5
  • 宿主机IP地址:192.168.100.20
  • yum挂载目录:/mnt/sr0
  • 相关源码包下载地址:百度云下载??密码:40om

一、Nginx安装

1、准备工作,关闭防火墙及selinux

[[email protected] ~]# chkconfig iptables off #随开机关闭iptables
[[email protected] ~]# vim /etc/sysconfig/selinux

[[email protected] ~]# reboot #重启Linux生效

2、安装相关工具包

[[email protected] ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel

3、创建Nginx进程用户

[[email protected] ~]# useradd -M -s /sbin/nologin nginx

4、配置、编译及编译安装Nginx源码包

[[email protected] ~]# tar xvf nginx-1.6.0.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/nginx-1.6.0/
[[email protected] nginx-1.6.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_stub_status_module

参数解析:

prefix #指定安装位置
user=nginx #指定nginx系统用户
group=nginx #指定组
with-http_stub_status_module #指定统计模块

[[email protected] nginx-1.6.0]# make && make install

5、优化路径

[[email protected] nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

6、启动Nginx服务

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf #修改主配置文件

[[email protected] ~]# nginx -t #测试配置是否有语法错误

[[email protected] ~]# nginx #启动Nginx
[[email protected] ~]# netstat -anpt | grep ":80" #检测服务是否启动
[[email protected] ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid

7、停止Nginx服务

[[email protected] ~]# kill -1 29050 #平滑重启Nginx服务。相当于killall -s HUP nginx;nginx -s reload
[[email protected] ~]# kill -3 29050 #关闭Nginx服务。相当于killall -s QUIT nginx;nginx -s quit
[[email protected] ~]# nginx #重启服务
[[email protected] ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid号

8、编辑Nginx服务脚本

[[email protected] ~]# vim /etc/init.d/nginx

添加以下脚本:

#!/bin/bash
# chkconfig: 35 99 20
# description:Nginx Server Control Script
PROG="/usr/local/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 (start|stop|restart|reload)"
exit 1 #非正常退出
esac
exit 0 #正常退出

[[email protected] ~]# chmod +x /etc/init.d/nginx #赋予权限
[[email protected] ~]# chkconfig --add nginx #添加系统服务

二、Mysql安装

1、卸载PRM方式的mysql-server、mysql

[[email protected] ~]# rpm -qa | grep mysql

2、安装相应工具包

[[email protected] ~]# yum -y install gcc gcc-c++ ncurses-devel bison libaio-devel ncurses-devel cmake

3、创建进程用户mysql

[[email protected] ~]# useradd -s /sbin/nologin mysql

4、解压、配置安装mysql

[[email protected] ~]# tar xzvf mysql-5.5.24.tar.gz
[[email protected] ~]# cd mysql-5.5.24
[[email protected] mysql-5.5.24]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DWITH_SSL=bundled

解析:

DCMAKE_INSTALL_PREFIX:mysql软件安装位置
DDEFAULT_CHARSET:默认字符集
DDEFAULT_COLLATION:默认字符校验
DWITH_EXTRA_CHARSETS:额外的编码,请使用ALL来编译
DWITH_MYISAM_STORAGE_ENGINE:安装 myisam 存储引擎
DWITH_INNOBASE_STORAGE_ENGINE:安装 innodb 存储引擎
DWITH_MEMORY_STORAGE_ENGINE:安装 memory 存储引擎
DWITH_READLINE:支持readline库,支持一行行读取数据
DENABLED_LOCAL_INFILE:启用本地加载数据
DMYSQL_DATADIR:数据目录
DMYSQL_USER:指定mysql的运行用户
DMYSQL_TCP_PORT=3306:mysql的端口号默认是3306

[[email protected] mysql-5.5.24]# make && make install

5、修改mysql安装目录的所有者,所属组

[[email protected] mysql-5.5.24]# chown -R mysql:mysql /usr/local/mysql/

6、创建修改my.cnf配置文件

[[email protected] mysql-5.5.24]# cp support-files/my-medium.cnf /etc/my.cnf

7、添加系统服务

[[email protected] mysql-5.5.24]# vim /etc/profile #修改系统环境变量

最后一行添加:

export PATH=$PATH:/usr/local/mysql/bin/

[[email protected] mysql-5.5.24]# source /etc/profile #重新读取系统环境变量

[[email protected] mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld #添加系统服务
[[email protected] mysql-5.5.24]# chmod +x /etc/init.d/mysqld #添加执行权限
[[email protected] mysql-5.5.24]# chkconfig --add mysqld #将mysqld添加为系统服务

8、初始化数据库

[[email protected] mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

解析:

user:指定数据库管理员,也就是是谁管理数据库
basedir:指定mysql软件安装位置
datadir:指定mysql数据安装位置

[[email protected] mysql-5.5.24]# vim /etc/init.d/mysqld

找到basedir、datadir进行赋值

basedir=/usr/local/mysql #约46行数据库安装目录
datadir=/home/mysql #约47行数据存放目录

9、重新启动数据库

[[email protected] mysql-5.5.24]# service mysqld start
[[email protected] mysql-5.5.24]# netstat -anpt | grep 3306 #查看端口

10、访问mysql

[[email protected] ~]# mysqladmin -u root password ‘123‘#设置新密码
[[email protected] ~]# mysql -uroot -p123 #登录mysql

三、安装PHP

1、安装GD库关联程序

[[email protected] ~]# yum install \
libjpeg-devel \
libpng-devel \
freetype-devel \
zlib-devel \
gettext-devel \
libXpm-devel \
libxml2-devel \
fontconfig-devel \
openssl-devel \
openssl-devel \
bzip2-devel \
libxml2 \
libxml2-devel

2、解压、配置安装gd(用来处理和生成图片)

[[email protected] ~]# tar xzvf gd-2.0.35.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/gd/2.0.35/
[[email protected] 2.0.35]# ./configure --prefix=/usr/local/gd
[[email protected] 2.0.35]# make && make install

3、解压配置安装php

[[email protected] ~]# tar xjvf php-5.4.5.tar.bz2 -C /usr/src
[[email protected] ~]# cd /usr/src/php-5.4.5/
[[email protected] php-5.4.5]# ./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--with-jpeg-dir \
--with-openssl \
--disable-ipv6 \
--enable-fpm
[[email protected] php-5.4.5]# make && make install

4、创建PHP配置文件

[[email protected] php-5.4.5]# cp php.ini-development /usr/local/php5/php.ini

5、优化路径

[[email protected] php-5.4.5]# ln -s /usr/local/php5/bin/ /usr/local/bin/
[[email protected] php-5.4.5]# ln -s /usr/local/php5/sbin/
/usr/local/sbin/

6、为PHP安装加速器

[[email protected] ~]# tar xvfz ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
[[email protected] ~]# cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/
[[email protected] php-5.3.x]# cp ZendGuardLoader.so /usr/local/php5/lib/php/ #复制ZendGuardLoader模块至php目录下

7、配置PHP识别加速器

[[email protected] ~]# vim /usr/local/php5/php.ini

末行添加:

[Zend Guard Loader]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

8、开启nginx的PHP支持

[[email protected] ~]# cd /usr/local/php5/etc/
[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
[[email protected] etc]# useradd -M -s /sbin/nologin php
[[email protected] etc]# vim php-fpm.conf #模块化进程管理工具

修改以下参数:

pid = run/php-fpm.pid#在25行去掉注释,确定pid文件的位置
user = php #在140行指定用户
group = php #
pm.max_children = 50 #在217行,最多扩延进程数量,先改为50,一个水桶,它代表桶的容积
pm.start_servers = 20 #222行,开启的进程数,改成20,启动时,开启的进程数
pm.min_spare_servers = 5 #227行,最少空闲进程数是5,低于这个数,每秒钟会产生一个新的进程
pm.max_spare_servers = 20 #232行,最多允许的空间进程数,客户不连接PHP,最多允许的空间进程数

9、启动php-fpm

[[email protected] ~]# /usr/local/sbin/php-fpm
[[email protected] ~]# netstat -lntup | grep 9000

10、编辑nginx主配置文件

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

将PHP网页请求,转给FPM模块处理:

location ~ .php$ {
root /var/www/html/btcom; # PHP站点目录
fastcgi_pass 127.0.0.1:9000; # php-fpm监听地址
fastcgi_index index.php; # 识别的首页文件
include fastcgi.conf; # 包含fastcgi.conf样本配置
}

[[email protected] ~]# mkdir -p /var/www/html/btcom #创建站点目录
[[email protected] ~]# service nginx restart #重启服务

四、测试

1、测试php网页能否正常显示

[[email protected] ~]# vim /var/www/html/btcom/index.php

添加以下内容:

<?php
phpinfo();
?>

2、测试PHP网页能访问MySQL服务器

[[email protected] ~]# vim /var/www/html/btcom/index.php

添加以下内容:

<?php
$link=mysql_connect(‘localhost‘,‘root‘,‘123‘);
if($link) echo "Welcome to Mysql";
mysql_close();
?>

原文地址:http://blog.51cto.com/11905606/2162635

时间: 2024-12-24 19:45:47

源码手工编译LNMP架构(内附源码包)的相关文章

源码手工编译LAMP架构搭建Discuz论坛(内附源码包)

简介 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注.从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决

Apache手工编译安装(内附软件包)

Apache http server 是开源软件的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,apache服务器可以运行在Linux UNIX Windows等多种操作系统平台. Apache的主要特点 开放源代码 跨平台应用 支持各种Web编程语言 模块化设计 运行非常稳定 良好的安全性 环境部署 redhat6.5系统 ip地址:192.168.100.101 相关软件包:百度云 1.查看系统是否安装httpd服务,如有卸载. # rpm -q httpd httpd-2.2.15

手工编译lnmp环境

同步时间:ntpdate 202.120.2.101(上海交大ntp服务器) 使用ntsysv --level 2345,关闭非必要程序自动运行. 修改/etc/sysconfig/i18n文件内容为:LANG="zh_CN:gb2312" 源码放在/usr/local //创建用户及站点目录并更改权限 groupadd www useradd -r -g www -s /sbin/nologin www groupadd mysql useradd -r -g  mysql mysq

JDK源码重新编译——支持eclipse调试JDK源码--转载

最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar. 下面这六步是编译jdk的具体步骤: Step 1:  Locate the JDK source First navigate to the JDK install directory, and locate the src.zip file. This file contains the JDK sources – and is absolutely

CetOS7.4手工编译安装mysql-5.7.17(内附源码包)

简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品.MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的关系数据库管理系统应用软件.MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小.速度快.总体拥有成

Nginx + Tomcat 负载均衡群集 【内附源码包】

前言: 1·在之前都学习 Linux 的一些服务和搭建,都很熟悉 !这篇文章主要讲Nginx.Tomcat与 Nginx + Tomcat 负载均衡群集.2·在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级的 HTTP 服务器软件--Nginx,它是由俄罗斯 Lgor Sysoev(伊戈尔·赛索耶夫)开发. Nginx 的优点: 1·稳定性2·系统资源消耗低3·高并发链接的处理能力 (30000~50000 个并发请求),核心优点!4·反向代理服务器5·安装

HTML5+CSS3+Jquery实现纯手工的垂直时光轴【附源码】

前言 由于工作中需要,系统中需要记录不同时间发生的事件,为了提升用户体验,决定用时光轴来实现.[据说这个东西挺火的,QQ空间和FB都在用...] 这个时光轴是在 三生石上 这位博主的时光轴基础上修改的,可以称之为增强版吧! 兼容性 Firefox.chrome.360急速.360安全浏览器.IE8,其他的没测试,不过IE上的兼容有些问题. 效果预览 操作演示 实现过程 我是做后端的,所以,页面设计的并不是很好看来着.大家可以自己修改页面. 1.布局 页面布局不多说了,就是纯DIV+CSS实现的,

Nginx+tomcat实现反向代理(内附源码包)

需求描述 通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构.Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存.CPU等系统资源消耗非常低.目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力. 工作原理 反向代理是指以代理服务器来接受I

Python开源软件大全(内附源码)

写个web服务,可以用python:写个服务器脚本,可以用python:写个桌面客户端,可以用python:做机器学习数据挖掘,也可以用python--用处这么多,你是不是也想看看Python开源软件大全都有哪些内容? 1.CheungSSH 它是一款中国人自主研发的Linux运维自动化管理服务器软件,简单,不需要特定的语法,不需要学习,即使不懂得Linux的人也能操作.功能完备,命令执行.文件传输.批量部署程序.服务器资产信息收集.计划任务.开放的API等主要功能.最主要的是,使用免费. 下载