centos搭建lnmp

在centos上面搭建当今性能相对较好的一套服务器环境LNMP。即:Linux + Nginx + MySQL + Php 。由于 Nginx 比Apache更轻巧一些,而且在nginx的官方网站上面对于nginx处理的多并发量是100000。所以,在现在网站会面临这种大并发量的时候,使用Nginx 来作为服务器程序确实是一个不错的选择,不过如果使用LAMP环境的话,对于php的执行过程是使用mod-php这样的一个apache 模块,但使用LNMP的话,是使用一个叫做php-fpm
的一个单独的进程来完成处理,而且,Nginx 本身也是一个独立的进程,所以对资源占用就比LAMP环境下多了一个进程。

配置mysql

mysql5.5解压出来你会发现找不到configure文件,我们只能用cmake,默认linux系统是没有cmake,所以会显示找不到cmake command,解决办法:yum install cmake

下载Mysql:wget
http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.14.tar.gz

增加用户组 :/usr/sbin/groupadd
mysql

/usr/sbin/useradd
-g mysql mysql

基本操作:tar
xvf mysql-5.5.14.tar.gz


cd mysql-5.5.14/

安装所需要系统库相关库文件:yum
install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*(当然一些重复的会自动忽略)

执行命令:cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DMYSQL_USER=mysql

参数等说明:

DCMAKE_INSTALL_PREFIX=/usr/local/mysql
#mysql安装的主目录,默认为/usr/local/mysql

DMYSQL_DATADIR=/usr/local/mysql/data
#mysql数据库文件的存放目录,可以自定义

DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
#系统Socket文件(.sock)设置,基于该文件路径进行Socket链接,必须为绝对路径

DSYSCONFDIR=/etc
#mysql配置文件
my.cnf的存放地址,默认为/etc下

DMYSQL_TCP_PORT=3306
#数据库服务器监听端口,默认为3306

DENABLED_LOCAL_INFILE=1
#允许从本地导入数据

DWITH_READLINE=1
#快捷键功能

DWITH_SSL=yes
#支持
SSL

DMYSQL_USER=mysql
#默认为mysql

//下面3个是数据库编码设置

DEXTRA_CHARSETS=all
#安装所有扩展字符集,默认为all

DDEFAULT_CHARSET=utf8
#使用
utf8 字符

DDEFAULT_COLLATION=utf8_general_ci
#校验字符

//下面5个是数据库存储引擎设在

DWITH_MYISAM_STORAGE_ENGINE=1
#安装
myisam 存储引擎

DWITH_INNOBASE_STORAGE_ENGINE=1
#安装
innodb 存储引擎

DWITH_ARCHIVE_STORAGE_ENGINE=1
#安装
archive 存储引擎

DWITH_BLACKHOLE_STORAGE_ENGINE=1
#安装
blackhole 存储引擎

DWITH_PARTITION_STORAGE_ENGINE=1
#安装数据库分区

编译过程中如果会出现以下错误

mysqld.cc: In function ‘void handle_connections_sockets()’:

主要是没有安装libmcrypt相关的包

直接使用yum install libmcrypt* -y安装完成后,在重新编译

在编译出现异常,在重新编译的时候,需要先删除mysql目录下的CMakeCache.txt这个文件,然后再进行编译!!!

执行安装

make

make install

授权chmod
+w /usr/local/mysql

chown
-R mysql:mysql /usr/local/mysql
 
#改变目录拥有者与所属组

ln
-s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16

cd
support-files/

cp my-large.cnf /etc/my.cnf
#选择默认配置文件
适合大型服务器

cp mysql.server /etc/init.d/mysqld  
#复制启动文件

1.
若有需要请先修改 mysql 的配置 my.cnf

vi /etc/my.cnf

在[mysqld]下面添加(安装的mysql在/usr/local/mysql文件夹下)

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

log-error = /usr/local/mysql/mysql_error.log

pid-file = /usr/local/mysql/data/mysql.pid

default-storage-engine=MyISAM

user = mysql

2.
mysql 初始化安装  执行以下命令

/usr/local/mysql/scripts/mysql_install_db
\

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data \

--user=mysql

3. 将 mysql 加入开机启动

chmod +x /etc/init.d/mysqld

vi
/etc/init.d/mysqld (编辑此文件,查找并修改以下变量内容:)

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

继续执行命令:

chkconfig
--add mysqld

chkconfig --level 345 mysqld on

为MySQL配置环境变量,以后使用起来方便

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

4. 启动 mysql

service mysqld start

设置密码

安全模式登录

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

# mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;

mysql> FLUSH PRIVILEGES;

mysql> quit

# /etc/init.d/mysql restart

# mysql -uroot -p

Enter password: <输入新设的密码newpassword>

当然用户别忘了授权不然是登录不了mysql服务器的

rpm 形式安装Mysql

下载所需软件 进行安装

rpm -ivh libaio-0.3.93-4.i386.rpm

rpm -ivh MySQL-server-5.5.14-1.rhel5.i386.rpm

rpm -ivh MySQL-client-5.5.14-1.rhel5.i386.rpm

rpm -ivh MySQL-shared-5.5.14-1.rhel5.i386.rpm

rpm -ivh MySQL-devel-5.5.14-1.rhel5.i386.rpm

启动MySQL服务器

service mysql start

设置密码

省略不说了

linux采用rpm方式重新安装mysql,完成后Mysql启动时候报告错误,找不到pid文件

Starting MySQL..Manager of pid-file quit without updating file.[FAILED]

此时需要采用safe模式启动

/usr/bin/mysqld_safe --user=mysql

特别要注意kill旧Mysql进程:,如果还有错误,参考下列解决办法:

1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限

解决方法 :给予权限,执行 “chown -R mysql:mysql
/var/data” “chmod -R 755 /usr/local/mysql/data”  然后重新启动mysqld!

2.可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !http://blog.rekfan.com/?p=186

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5.skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7.selinux是一个安全系统,如果是centos系统,默认会开启selinux

解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

安装mysql 出现如下类似错误的话

conflicts with file from package mysql-libs-

需要把以前安装的mysql相关的包卸载掉。

说明:使用rpm安装等时候,不能向编译安装一样选择安装路径,现在用命令来查看一下mysql都安装到哪里去了

[[email protected] ~]# find / -name mysql -print

/etc/logrotate.d/mysql

/etc/rc.d/init.d/mysql

/var/lib/mysql

/var/lib/mysql/mysql

/var/lock/subsys/mysql

/usr/lib/mysql

/usr/include/mysql

/usr/share/mysql

/usr/bin/mysql

而 data默认放在:/var/lib/mysql

mysql默认安装在了:/usr/share/mysql中

编译安装nginx

较新的centos默认自带httpd服务,所以在装nginx之前先卸载自带的httpd,确认一下本机是否有安装过服务,使用

yum list |grep httpd 或者是使用:rpm –qa |grep httpd

卸载httpd centos方法如下:

rpm -e httpd-2.2.3

后面的版本号不全也没关系,如果有依赖关系就不能卸载,再加上--nodpes参数即可。不检查依赖强制删除,这个结果就是只删除了httpd,跟他有依赖关系的其它软件是不会删除的,但是这些软件因为系统里没有了httpd也会不能运行,这是所谓的没有删除干净。

yum -y remove httpd这种方式是把与httpd有依赖关系的所有软件一并删除。比如php,mod_ssl等等。这就干净了。

首先上Nginx 的官网http://nginx.org 右侧的download页面下载所需要的Nginx的源码包,注意选择linux下的stable版本,如下图:

执行了./configure之后就会进行一系列的检查,以便于之后的编译过程,过程中可能会报以下错误:

1、./configure: error: the HTTP rewrite module requires the PCRE library

安装pcre-devel解决问题

yum -y install pcre-devel

2、./configure: error: the HTTP cache module requires md5 functionsfrom OpenSSL library.   You can either
disable the module by using--without-http-cache option, or install the OpenSSL library into the system,or build the OpenSSL library statically from the source with nginx by using--with-http_ssl_module --with-openssl=<path> options.
(centos6和nginx暂时不会出现该错误)

解决办法:

yum -y install openssl openssl-devel

3、./configure:
error: the HTTP gzip module requires the zlib library

解决办法:

yum install -y zlib-devel

一步解决办法:yum -y install pcre-devel openssl openssl-devel
zlib-devel

执行make  会生成makefile 用于引导之后的安装过程,操作如下图:可能会报错,那就按照提示安装即可
执行过了 #make install操作就安装完成了,Nginx的默认安装路径是在/usr/local/nginx目录下的接下来我们启动Nginx 服务,进入到/usr/local/nginx/sbin目录,执行./nginx就可以启动Nginx服务了。

当然启动过程中有可能会发生端口冲突错误,

Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

直接办法,关闭端口占用进程(不建议这么做,最好更改端口,或者查出所在程序)sudo fuser -k 80/tcp或者

netstat -tunlp |grep 80

nginx操作常用命令:启动:./nginx 停止:./nginx -s stop 或者 ./nginx -s quit 重启:./nginx -s
reload  或者
service nginx reload 查看版本号:./nginx -v  检查配置文件是否正确:/nginx -t

编译安装php

首先还是同样的上 http://php.net 官网下载php的源码包,然后移动到/usr/local/目录下进行解压,例如解压成php,然后cd进去

先装依赖包(两种方法):

1、yum install
gcc make
gd-devel
libjpeg-devel
libpng-devel
libxml2-devel
bzip2-devel
libcurl-devel
-y

2、 单独下载安装 ,只不过下边configure时要单独指定其位置,如--with-jpeg-dir=/usr/local/jpeg

执行./configure
--prefix=/usr/local/php-5.6
--with-config-file-path=/usr/local/php-5.6/etc
--with-bz2
--with-curl
--enable-ftp
--enable-sockets
--disable-ipv6
--with-gd
--with-jpeg-dir=/usr/local
--with-png-dir=/usr/local
--with-freetype-dir=/usr/local
--enable-gd-native-ttf
--with-iconv-dir=/usr/local
--enable-mbstring
--enable-calendar
--with-gettext
--with-libxml-dir=/usr/local
--with-zlib
--with-pdo-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-mysql=mysqlnd
--enable-dom
--enable-xml
--enable-fpm(php5.3以上是自带fpm补丁包的)

然后继续make和make install

配置php

cp php.ini-production
/usr/local/php-5.6/etc/php.ini

配置php-fpm

cp /usr/local/php-5.6/etc/php-fpm.conf.default
/usr/local/php-5.6/etc/php-fpm.conf

启动php-fpm

/usr/local/php-5.6/sbin/php-fpm

执行以上命令,如果没报错一般情况下表示启动正常,如果不放心,也可以通过端口判断是PHP否启动,执行命令

netstat -lnt | grep 9000

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN

   

关联nginx和php

进入php文件夹下,执行命令cp php.ini-development php.ini,并修改php.ini中的一些参数,修改nginx配置文件如下

# vi /usr/local/nginx/conf/nginx.conf

location / {

root /www;

index index.html index.htm index.php;

}

location ~ \.php$ {

root /www;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;

include fastcgi_params;

}

项目根目录为www,配置文件不用修改什么,只是将一些注释去掉而已,然后编写php测试页面index.php

而nginx最常用的方法是利用 tcp/ip 协议连接 phpfastcgi 接口, 因此要连接php必须先启动fastcgi程序.

启动方法:

/usr/local/bin/php-cgi -b 127.0.0.1:9000 -c /usr/local/php5.6/etc/php.ini &

-b 用于指定监听地址与端口

如果想指定配置文件位置,可以使用-c选项

注意, nginx 服务器负责所有的客户端请求, 包括了静态网页解析 (html), 页面中的其他对象如 ccs文件jpg png文件等传输, 但遇到客户需要请求 php 页面请求或 php 源码解析时, nginx将会把页面传递到fastcgi接口, 由 php-cgi 程序进行解析.

然后执行./nginx,如果成功并且显示以下页面就说明配置成功了

用phpMyAdmin既能够测试MySQL的链接情况也可以相当于装了个Mysql管理工具,测试结果如下说明整个环境你已经配置完成了

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-12 20:34:51

centos搭建lnmp的相关文章

centos搭建LNMP+LAMP环境+(jdk+tomcat+mysql)

第一部分LNMP环境搭建 一.编译安装nginx1.10.3 1.准备 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected] ~]# uname -a Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_6

CentOS 搭建LNMP环境

网站上查了一堆,最后还是决定自己写一份.纸上得来终觉浅,觉知此事需躬行. 废话不表.开始干. 找nginx 对应版本. http://nginx.org/   有主线版本更新 1.9.0  ,就装这个试试 . 1. 创建yum 更新源 为什么要创建更新源呢 yum -y install nginx 查看一下安装路径 修改了主页文件,但是发现访问不了 怎么回事呢? 防火墙. 再访问ok 了.中文设置字符集. 2.安装php扩展. (未完待续...)

CentOS搭建LNMP环境

========== 安装nginx ========== 查看nginx信息:yum info nginx 安装nginx:yum -y install nginx 查看nginx是否存在:which nginx 启动ngnix方式一:/etc/init.d/nginx start 启动nginx方式二:service nginx start 启动服务的过程中可能会报错:Starting nginx: nginx: [emerg] socket() [::]:80 failed (97: Ad

在CentOS 7系统上搭建LNMP

简要介绍: 一般来说,LNMP是Linux+Nginx+MySQL+PHP的简称,是一种用于替代LAMP的解决方案.在本文档中,我使用CentOS 7来搭建LNMP平台,其中,PHP采用FastCGIserver方式部署.此外,还介绍了如何部署Memcached和phpMyadmin. CentOS系统安装时选择的是basic server版本,详细版本号为CentOS 7.0.1406,核心版本号为3.10.0-123.el7.x86_64.系统安装在虚拟机上,IP为172.31.2.3,其可

CentOS 6.9 yum方式搭建LNMP环境,并部署Discuz论坛

一.演示环境: IP 安装的程序包 版本 192.168.1.144 nginx(epel源) 1.10.2 php 5.3.3 php-fpm(FastCGI进程管理器) php-mysql(php连接mysql时需要用到的驱动) 192.168.1.145 MySQL-server-5.6.39-1.el6.x86_64.rpm MySQL-client-5.6.39-1.el6.x86_64.rpm MySQL-devel-5.6.39-1.el6.x86_64.rpm MySQL-sha

搭建LNMP环境(基于最小化安装CentOS 6.5)

本文档主要说明在单台服务器上手动安装LNMP环境的操作步骤,本文档使用的系统版本可能与您的实际使用版本不同,您可以根据实际情况选择相应版本. 一.本文档LNMP环境版本说明: OS:最小化安装CentOS 6.5 Nginx:nginx-1.10.2.tar.gz MySQL:mysql-5.6.24.tar.gz PHP:php-5.6.23.tar.bz2 二.搭建LNMP环境基本步骤 1. 准备编译环境 2. 安装nginx 3. 安装mysql 4. 安装php-fpm 5. 测试访问

CentOS源码安装搭建LNMP全过程(包括nginx,mysql,php,svn)

服务器环境为:CentOS6.5 64位 目标:搭建LNMP(Linux + Nginx + MySQL + PHP +SVN),其中svn是用来代替ftp,方便开发中调试同步代码 相关目录:所有软件都安装到/www/目录下,在www目录下新建web文件夹作为网站的根路径,www目录下新建wwwsvn作为svn的仓库地址./www/software用来放nginx,mysql,php的安装包和源码.nginx运行分组和账户www:www 一,安装前的准备 yum -y install ntp m

CentOS源码安装搭建LNMP全过程(包括nginx,mysql,php,svn)【转】

转自:http://blog.csdn.net/yanzi1225627/article/details/49123659 服务器环境为:CentOS6.5 64位 目标:搭建LNMP(Linux + Nginx + MySQL + PHP +SVN),其中svn是用来代替ftp,方便开发中调试同步代码 相关目录:所有软件都安装到/www/目录下,在www目录下新建web文件夹作为网站的根路径,www目录下新建wwwsvn作为svn的仓库地址./www/software用来放nginx,mysq

Linux CentOS搭建JDK+Mysql+Tomcat+Nginx负载均衡环境 &nbsp; &nbsp; &nbsp;

本文使用了Tomcat+Nginx环境,主要起到负载均衡的作用,使用Tomcat处理jsp后台程序,使用Nginx处理静态页面. 准备工作(下载软件版本,请自行百度下载) 安装包放至:/usr/local/src 安装地址:/usr/local/软件名 1.apache-tomcat-6.0.48 2.mysql-5.5.54 3.nginx-1.6.3 4.cmake-2.8.8 5.pcre-8.40 6.jdk-8u11-linux-x64 7.openssl-1.1.0d(https使用