centos搭建lnmp

举报
黄啊码 发表于 2022/06/29 00:55:50 2022/06/29
【摘要】 在centos上面搭建当今性能相对较好的一套服务器环境LNMP。即:Linux + Nginx + MySQL + Php 。由于 Nginx 比Apache更轻巧一些,而且在nginx的官方网站上面对于nginx处理的多并发量是100000。所以,在现在网站会面临这种大并发量的时候,使用Nginx 来作为服务器程序确实是一个不错的选择...
在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


卸载httpd centos方法如下:

 

后面的版本号不全也没关系,如果有依赖关系就不能卸载,再加上--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 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管理工具
,测试结果如下说明整个环境你已经配置完成了
图片

文章来源: markwcm.blog.csdn.net,作者:黄啊码,版权归原作者所有,如需转载,请联系作者。

原文链接:markwcm.blog.csdn.net/article/details/47447941

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。