此文章为个人Lnmp环境搭建经历

仅供参考

操作系统:CentOS 7.6 64位

环境:Lnmp

Nginx-1.15.8

MariaDB-10.2.21

Nginx安装目录:/home/nginx

php安装目录:/home/php

MariaDB安装目录:/home/mariadb

MariaDB数据库存放目录:/home/mariadb-data

从官网下载Nginx、MariaDB、php的源码包

Nginx https://mariadb.org/php http://www.php.net/    还有很多依赖包,在接下来的安装过程中遇到差依赖包的直接用yum安装,有的依赖包需要安装两个(如:xxx 和 xxx-devel)。

1yum install XXXX & XXXX-devel

将下载来的Nginx源码包解压

1tar -zxvf Nginx-x.x.x.tar.gz

进入Nginx-x.x.x的文件夹

1cd Nginx-x.x.x

开始设置配置参数

1./configure --prefix=/home/nginx/    (设置nginx的安装路径,此处根据个人情况而定)2此处还有一些其他配置参数,一般用不着,如果有需要请参考官方文档。

在这个过程中可能会失败很多次,基本都是依赖包的问题,你只需要根据提示用前面提到的yum安装一步一步安装即可。

开始编译

1make install

到此Nginx就差不多安装完成

不过还需要检查一下能否正常启动

进入安装好的目录下的sbin文件夹

1cd /home/nginx/sbin/    直接执行

1./nginx    如果没有提示,那就是最好的提示,说明启动成功

当然你也可以用ps看看有没有这个进程

1ps -e | grep nginx    如果是这样:

13521 ?        00:00:00 nginx23522 ?        00:00:00 nginx3当然,不一定和我完全一样,只要表示有nginx这个进程在运行就行    则启动成功

配置,支持Nginx解析php脚本

先创建www用户和www用户组

1useradd www2groupadd -g www www    找到nginx的配置文件nginx.conf并vim打开

1cd /home/nginx/conf/2vim nginx.conf    在配置文件开头有

1user  xxx;2worker_processes  1;    将用户名和用户组改为刚才新创建的用户名和用户组

1user  www www;2worker_processes  1;    然后修改server部分的代码

01server(02    listen       80;    (80端口)03    server_name  localhost;    (ip地址或域名,本地使用则默认)0405    #charset koi8-r;0607    #access_log  logs/host.access.log  main;0809    location / {10        root   html;    (网站根目录)11        index  index.html index.php index.htm;12    }1314    #error_page  404       /404.html;1516    # redirect server error pages to the static page /50x.html17    #18    error_page   500 502 503 504  /50x.html;19        location = /50x.html {20        root   html;21    }22}    解析php的配置,找到server里如下代码

1#location ~ \.php$ {2#    root           html;3#    fastcgi_pass   127.0.0.1:9000;4#    fastcgi_index  index.php;5#    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;6#    include        fastcgi_params;7#}    去除“#”号并修改

1location ~ \.php$ {2    root           html;    (网站根目录)3    fastcgi_pass   127.0.0.1:9000;4    fastcgi_index  index.php;5    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;6    include        fastcgi_params;7}

测试(在安装完php之后)

写一个info.php文件测试

1<?php2    phpinfo();3?>    重启nginx,用浏览器访问

能够访问就成功了

将下载来的php源码包解压(位置任意)

1tar -zxvf php-x.x.x.tar.gz

进入php-x.x.x的文件夹

1cd php-x.x.x  (好吧,以上都是废话)

接下来才不一样

开始设置配置参数

php的配置参数有很多,这里需要注意一下php对mysql的连接,似乎从php-5.6(好像是这个版本)开始就不支持连接mysql了,改用mysqli,所以配置参数里应该用mysqli,我之前就在这个坑折腾了很久才找到攻略文章解决了。

01./configure 02--prefix=/home/php \    (设置php的安装路径,此处根据个人情况而定)03--with-config-file-path=/home/php/ \    (配置文件路径)04--with-mysqli \    (对连接mysql的支持)05--with-pdo-mysql \06--with-iconv-dir \07--with-freetype-dir \08--with-jpeg-dir \09--with-png-dir \10--with-zlib \11--with-libxml-dir \12--enable-simplexml \13--enable-xml \14--disable-rpath \15--enable-bcmath \16--enable-soap \17--enable-zip \18--with-curl \19--enable-fpm \20--enable-mbstring \21--enable-sockets \22--with-gd \    (gd库)23--with-openssl \24--with-mhash \25--enable-opcache \26--disable-fileinfo \    (如果是和我一样很小的服务器,打开就行了)2728配置参数还有很多,有需要请参考官方文档,也可以 ./configure --help 查看29这里提供我网上找的一些配置参数详解:30://www.cnblogs.com/hgj123/p/4413986.html     这里再废话一下,在这个过程中可能会失败很多次,基本都是依赖包的问题,你只需要根据提示用前面提到的yum安装一步一步安装即可。

配置完成后出现:

1Thank you for using PHP.    则配置成功

开始编译

1make install

进入安装包内找到php.ini-development文件,并将他复制到你配置参数里设置的配置文件路径(--with-config-file-path=/home/php/)所指的文件夹里(因为php运行时会自动到所指定的地方查找配置文件),并改名为php.ini

这时候你进入安装后的文件夹内的sbin文件夹并启动php-fpm会报错

1[root@localhost sbin]# ./php-fpm 2[17-Apr-2018 19:14:35] ERROR: failed to open configuration file '/home/php/etc/php-fpm.conf': No such file or directory (2)3[17-Apr-2018 19:14:35] ERROR: failed to load configuration file '/home/php/etc/php-fpm.conf'4[17-Apr-2018 19:14:35] ERROR: FPM initialization failed    这是因为还需要其他配置文件,把php-fpm.conf.default重命名php-fpm.conf和重命名www.conf

1进入安装后的php目录下etc/,复制文件并修改2cd /home/php/etc/3cp php-fpm.conf.default php-fpm.conf4进入安装后的php目录下etc/php-fpm.d/,复制文件并修改5cd /home/php/etc/php-fpm.d/6cp  www.conf    修改www.conf配置文件

找到 user 和 group

1; Unix user/group of processes2; Note: The user is mandatory. If the group is not set, the default user's group3;     will be used.4user = 5group =     将user和group改为:

1; Unix user/group of processes2; Note: The user is mandatory. If the group is not set, the default user's group3; will be used.4user = www5group = www    进入sbin目录重新启动

1[root@localhost sbin]# ./php-fpm    没有提示则启动成功

用ps进行查看

1ps -e | grep php    如果是这样:

13526 ?        00:00:04 php-fpm23527 ?        00:00:00 php-fpm33528 ?        00:00:00 php-fpm4当然,不一定和我完全一样,只要表示有nginx这个进程在运行就行    则表示成功

首先我们得删除系统上自带的数据库和数据库配置

查看数据库配置文件

1[root@localhost ~]# find -H /etc/ | grep my.c2/etc/pki/tls/certs/make-dummy-cert3/etc/pki/tls/certs/renew-dummy-cert4/etc/my.cnf.d5/etc/my.cnf.d/mysql-clients.cnf6/etc/my.cnf    删除配置文件

1[root@localhost ~]# rm -rf /etc/my.cnf /etc/my.cnf.d/    再次查看,确定被删除

1[root@localhost ~]# find -H /etc/ | grep my.c2/etc/pki/tls/certs/make-dummy-cert3/etc/pki/tls/certs/renew-dummy-cert    查看、删除系统系带数据库

1[root@localhost ~]# rpm -qa|grep mariadb-libs2mariadb-libs-x.x.x-1.el7.x86_643[root@localhost ~]# rpm -e mariadb-libs-x.x.x-1.el7.x86_64 --nodeps    到这系统的数据库就基本干净了

安装数据库所需要的一些依赖包

01[root@localhost ~]# yum -y install bison 02[root@localhost ~]# yum -y install bison-devel 03[root@localhost ~]# yum -y install openssl04[root@localhost ~]# yum -y install openssl-devel 05[root@localhost ~]# yum -y install ncurses 06[root@localhost ~]# yum -y install ncurses-devel07[root@localhost ~]# yum -y install gcc 08[root@localhost ~]# yum -y install gcc-c++09[root@localhost ~]# yum -y install cmake10[root@localhost ~]# yum -y install pcre11[root@localhost ~]# yum -y install pcre-devel12这里只列出了部分依赖包,如果配置参数时提示需要其他依赖包请根据前面的yum安装即可

创建mysql用户和mysql用户组

1[root@localhost]# groupadd -r mysql2[root@localhost]# useradd -r -g mysql -s /sbin/nologin -d /usr/local/mysql -M mysql3以下是上面创建系统用户的各个参数说明:4-r: 添加系统用户(这里指将要被创建的系统用户mysql)5-g: 指定要创建的用户所属组(这里指添加到新系统用户mysql到mysql系统用户组)6-s: 新系统帐户的登录shell(/sbin/nologin 这里设置为将要被创建系统用户mysql不能用来登录系统)7-d: 新帐户的主目录(这里指定将要被创建的系统用户mysql的家目录为 /usr/local/mysql)8-M: 不要创建用户的主目录(也就是说将要被创建的系统用户mysql不会在 /home 目录下创建 mysql 家目录)

创建好数据库安装目录和数据库存放目录

1[root@localhost]# mkdir /home/mariadb    mariadb数据库安装目录2[root@localhost]# mkdir /home/mariadb-data    数据库数据存放目录3[root@localhost]# chown -R mysql:mysql /home/mariadb-data    改变数据库存放目录所属用户及组为 mysql:mysql

进入软件包内编译安装

注意:mariadb(还有mysql)的安装有些不同,不能用 “./configure” ,必须用 “cmake” 进行安装,关于cmake的安装看这里

01cmake . -DCMAKE_INSTALL_PREFIX=/home/mariadb \    指定安装目录02-DMYSQL_DATADIR=/home/mariadb-data \    指定数据库存放目录03-DSYSCONFDIR=/home/mariadb \    指定配置文件目录04-DWITHOUT_TOKUDB=1 \05-DWITH_INNOBASE_STORAGE_ENGINE=1 \06-DWITH_ARCHIVE_STPRAGE_ENGINE=1 \07-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \08-DWIYH_READLINE=1 \09-DWIYH_SSL=system \10-DVITH_ZLIB=system \11-DWITH_LOBWRAP=0 \12-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \13-DDEFAULT_CHARSET=utf8 \14-DDEFAULT_COLLATION=utf8_general_ci \1516如果需要依赖包请用yum安装17跟多配置参数请参考官方文档18时间有点长,请耐心等待吧    如果编译失败请删除软件包内的CMakeCache.txt

1[root@localhost]# rm -f CMakeCache.txt    再重新编译

每次重新编译都需要再次删除CMakeCache.txt文件

1make install

配置MariaDB

进入安装目录,使用 `mysql` 执行脚本, 安装数据库到数据库存放目录

1[root@localhost]# cd /home/mariadb2[root@localhost mariadb]# scripts/mysql_install_db --user=mysql --datadir=/home/mariadb-data

将配置文件(在安装目录下 support-files/ 文件夹内)复制到之前指定的配置文件目录下(也就是 /home/mariadb ),并改名 my-large.cnf 为 my.cnf

1[root@localhost]# cd /home/mariadb2[root@localhost mariadb]# cp support-files/my-large.cnf /home/mariadb/my.cnf

启动mariadb

1[root@localhost]# /home/mariadb/support-files/mysql.server start

配置环境变量, 以便在任何地方使用mariadb

1新建文件2[root@localhost]# vim /etc/profile.d/mysql.sh3输入以下内容4export PATH=$PATH:/usr/local/mysql/bin/5保存并退出6为脚本赋于权限7[root@localhost]# chmod 0777 /etc/profile.d/mysql.sh 8执行脚本, 以立即生效环境变量9[root@localhost]# source /etc/profile.d/mysql.sh

初始化mariadb

运行初始化脚本

1[root@localhost]# ./home/mariadb/bin/mysql_secure_installation    会有以下提示,跟着流程设置

01Enter current password for root (enter for none):    输入当前root密码(没有输入)02Set root password? [Y/n]    设置root密码?(是/否)03New password:    输入新root密码04Re-enter new password:    重新输入root密码05Password updated successfully!06By default, a MariaDB installation has an anonymous user, allowing anyone07to log into MariaDB without having to have a user account created for08them.  This is intended only for testing, and to make the installation09go a bit smoother.  You should remove them before moving into a10production environment.11默认情况下,MariaDB安装有一个匿名用户,12允许任何人登录MariaDB而他们无需创建用户帐户。13这个目的是只用于测试,安装去更平缓一些。14你应该进入前删除它们生产环境。1516Remove anonymous users? [Y/n]    删除匿名用户?(是/否)17Normally, root should only be allowed to connect from 'localhost'.  This18ensures that someone cannot guess at the root password from the network.19通常情况下,root只应允许从localhost连接。20这确保其他用户无法从网络猜测root密码。2122Disallow root login remotely? [Y/n]    不允许root登录远程?(是/否)23By default, MariaDB comes with a database named 'test' that anyone can24access.  This is also intended only for testing, and should be removed25before moving into a production environment.26Reloading the privilege tables will ensure that all changes made so far27will take effect immediately.28重新加载权限表将确保所有到目前为止所做的更改将立即生效。2930Reload privilege tables now? [Y/n]    现在重新加载权限表(是/否)31All done!  If you've completed all of the above steps, your MariaDB32installation should now be secure.33Thanks for using MariaDB!    进入mariadb终端

01[root@localhost]# mysql -u root -p02Enter password:    输入密码0304登陆成功有以下提示:05Welcome to the MariaDB monitor.  Commands end with ; or \g.06Your MariaDB connection id is 1607Server version: 10.2.21-MariaDB-log Source distribution08Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.09Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.10MariaDB [(none)]>    一些参数

1-u: 用户名2-p: 密码3-P: 端口号4-h: 主机5更多参数具体含义请参数 mysql --help 进行查看!

重启Nginx、php、MariaDB

在nginx的根目录下放入测试文件

能成功访问,并且能够使用各种功能

LNMP就安装完成了!!!