前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos搭建lnmp

centos搭建lnmp

作者头像
黄啊码
发布2020-05-29 16:21:28
1.4K0
发布2020-05-29 16:21:28
举报
文章被收录于专栏:黄啊码【CSDN同名】

在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:wgethttp://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都安装到哪里去了 [root@localhost ~]# 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-develzlib-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 installgccmake gd-devellibjpeg-devellibpng-devellibxml2-develbzip2-devellibcurl-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管理工具,测试结果如下说明整个环境你已经配置完成了

图片
图片
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/08/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档