LNMP编译

Posted mashuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP编译相关的知识,希望对你有一定的参考价值。

一、安装数据库

创建组账号:

  groupadd mysql

创建用户:

  useradd -s /sbin/nologin -g mysql -M mysql

查看一下:

  tail -1 /etc/passwd

查看属主和属组:

  id mysql

获取MySQL二进制软件包,解压:

  tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/

移动到解压目录:

  cd /usr/local/

将文件改名:

  mv mysql-5.5.32-linux2.6-x86_64 mysql-5.5.32

创建软链接:

  ln -s mysql-5.5.32 mysql

移动到新建目录下:

  cd /usr/local/mysql

查看目录下support-files/*.cnf的文件:

  ls -l support-files/*.cnf

强制复制文件到/etc/my.cnf:

  /bin/cp support-files/my-small.cnf /etc/my.cnf

建立MySQL数据文件目录:

  mkdir -p /usr/local/mysql/data

授权MySQL用户管理MySQL的安装目录:

  chown -R mysql.mysql /usr/local/mysql

光盘源安装依赖包,否则下一步的编译会报错:

  yum -y install libaio

初始化MySQL数据库文件,会有很多提示,如果没有ERROR的显示,会有两个OK的字样,表示初始化成功,否则就要解决初始化的问题。

  /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

  初始化故障排错:

  1.如果出现主机名未找到的错误,修改主机名,hostname=localhost或者如下:

技术分享图片

  2.没有安装依赖包:

技术分享图片

  3.权限问题:

技术分享图片

二、配置并启动MySQL数据库

(1)设置MySQL启动脚本:

  cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

 (2)MySQL二进制默认安装路径是/usr/local/mysql,启动脚本里是/usr/local/mysql。如果安装路径不同,那么脚本里路径等都需要替换

 (3)启动MySQL数据库:/etc/init.d/mysqld start

技术分享图片

 (4)检查MySQL数据库是否启动:netstat -antup | grep mysql

技术分享图片

 (5)查看MySQL数据库启动结果日志:tail -10 /usr/local/mysql/data/localhost.err

技术分享图片

(6)设置MySQL开机自启动(也可以将启动命令/etc/init.d/myslqd start 放到/etc/rc.local里面):

  chkconfig --add mysqld

  chkconfig mysqld on

  chkconfig --list mysqld

技术分享图片

(7)配置mysql命令的全局使用路径:

   ln -s /usr/local/mysql/bin/* /usr/local/bin/ (创建软链接)

   which mysqladmin (查看命令)

 (8)登陆MySQL测试(MySQL安装完成后,默认情况下,root账户是无密码的,这个必须要设置。)

   mysql (直接输入命令即可登录)

   show databases; (查看当前所有的数据库)

   select user(); (查看当前登录的用户)

三、MySQL安全配置

(1)为MySQL的root用户设置密码:mysqladmin -u root password ‘123123‘

(2)进入到数据库,清理无用的MySQL用户及库:select user,host from mysql.user; (查看mysql.user库中表头user和host中的信息)

技术分享图片

  drop user "root"@"::1"; (删除user下的“root”@“::1”)

  drop user ""@"localhost"; (删除user下的“”@“localhost”)

  select user,host from mysql.user; (查看登录用户)

  flush privileges; (刷新)

 四 、LNMP之php(FastCGI方式)服务的安装和准备

1.准备nginx的压缩包并解压:tar xf nginx-1.10.2.tar.gz -C /usr/src

技术分享图片

2.移动到解压目录:cd /usr/src/nginx-1.10.2/

技术分享图片

3.安装依赖包:yum -y install pcre-devel openssl-devel

4.执行: ./configure --user=mysql --group=mysql --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

技术分享图片

make && make install

5.创建软链接:ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

6.修改nginx的配置文件:

  cd /usr/local/nginx/conf

  egrep -v "#|^$" nginx.conf.default > nginx.conf

7.删除文件中的最后一块脚本:vim /usr/local/nginx/conf/nginx.conf

8.修改配置文件后需要重启: /usr/local/nginx/sbin/nginx -s reload (平滑重启)

9.确认检查nginx和MySQL的安装路径:ls -ld /usr/local/nginx      ls -ld /usr/local/mysql

10.检查端口启动情况:netstat -antup | grep -E "80|3306"

技术分享图片

11.测试访问nginx及MySQL是否OK:

 wget 127.0.0.1 (测试nginx)

技术分享图片

 mysql -uroot -p (测试MySQL)

 技术分享图片

如果访问结果和上述一致,就表明nginx及MySQL的安装一切正常。

五、检查安装PHP所需的lib库

PHP程序在开发及运行时会调用一些诸如zlib,gd等函数库,因此需要确认lib库是否已经安装:

技术分享图片

每个lib一般都会存在对应的以“*-devel”命名的包,安装lib对应的-devel包后,对应的lib包就会自动安装好,例如安装gd-devel时就会安装gd。

这些lib库不是必须安装的,但是目前的企业环境下一般都需要安装。否则,PHP程序运行时会出现问题,例如验证码无法显示等。

 安装相关的lib软件包:

技术分享图片

技术分享图片

安装后的结果:这里仅缺少libiconv-devel包,因为默认的yum源没有此包。

技术分享图片

技术分享图片

安装yum无法安装的libiconv库:

技术分享图片

技术分享图片

解压安装包:

技术分享图片

移动到解压目录下:

技术分享图片

执行: ./configure --prefix=/usr/local/libiconv && make && make install

安装libmcrypt库:

推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

  yum -y install libmcrypt-devel

技术分享图片

安装mhash加密扩展库:

推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

   yum -y install mhash

技术分享图片

技术分享图片

安装mcrvpt加密扩展库:

推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

  yum -y install mhash

技术分享图片

技术分享图片

安装mcrvpt加密扩展库:

推荐使用简单的在线yum的方式安装:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

   yum -y install mcrypt

技术分享图片

六、开始安装PHP(FastCGI方式)服务

1.获取PHP软件包: wget http://cn2.php.net/get/php-5.3.28.tar.gz/from/this/mirror

技术分享图片

2.解压配置PHP

解压文件:tar xf php-5.3.28.tar.gz -C /usr/src/

移动到解压文件:cd /usr/src/php-5.3.28/

执行: ./configure  --prefix=/usr/local/php5.3.28   --with-mysql=/usr/local/mysql  --with-iconv-dir=/usr/local/libiconv  --with-freetype-dir  --with-jpeg-dir  --with-png-dir  --with-zlib  --with-libxml-dir=/usr  --enable-xml  --disable-rpath  --enable-safe-mode  --enable-bcmath  --enable-shmop  --enable-sysvsem  --enable-inline-optimization  --with-curl  --with-curlwrappers  --enable-mbregex  --enable-fpm  --enable-mbstring  --with-mcrypt  --with-gd  --enable-gd-native-ttf  --with-openssl  --with-mhash  --enable-pcntl  --enable-sockets  --with-xmlrpc  --enable-zip  --enable-soap  --enable-short-tags  --enable-zend-multibyte  --enable-static  --with-xsl  --with-fpm-user=mysql  --with-fpm-group=mysql  --enable-ftp

安装成功出现下图:

技术分享图片

 上述命令参数详解:  

--prefix=/usr/local/php5.2.28 :表示指定PHP的安装路径为/usr/local/php5.3.28

--with-mysql=/usr/local/mysql :表示需要指定MySQL的安装路径,安装PHP需要的MySQL相关内容。当然,如果没有MySQL软件包,也可以不单独安装,这样的情况可使用--with-mysql=mysqlnd替代--with-mysql=/usr/local/mysql,因为PHP软件里已经自带了连接MySQL的客户端工具。

--with-fpm-user=mysql :nginx表示指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。

--with-fpm-group=mysql :表示指定PHP-FPM进程管理的组为www,此处最好与Nginx服务用户组统一。

--enable-fpm :表示激活PHP-FPM方式服务,即以FastCGIF方式运行PHP服务。

编译PHP:

创建软链接:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

创建文件:touch ext/phar/phar.phar

make编译:make

最后的正确提示:

 技术分享图片

安装PHP生成文件到系统:make install

配置PHP引擎配置文件php.ini:

(1)设置软链接以方便访问:ln -s /usr/local/php5.3.28/ /usr/local/php

技术分享图片

(2)查看PHP配置默认模版文件:

  cd /usr/src/php-5.3.28/

  ls php.ini*

  请注意以上两文件的异同之处,可通过diff或vimdiff命令比较,如下图所示:

技术分享图片

对比此结果可以看出,开发环境更多的是开启日志文件,调试信息,而生产环境都是关闭状态。

(3)拷贝PHP配置文件到PHP默认目录,并更改文件名称为php.ini:

  cp php.ini-production /usr/local/php/lib/php.ini

  ls -l /usr/local/php/lib/php.ini

技术分享图片

配置PHP(FastCGI方式)的配置文件php-fpm.conf

移动:cd /usr/local/php/etc/

查看目录下文件:ls

技术分享图片

拷贝文件:cp php-fpm.conf.default php-fpm.conf

  php-fpm.conf,暂时可用默认的配置,先把服务搭好,以后再进行优化。

启动PHP服务(FastCGI方式)

(1)启动PHP服务php-fpm: /usr/local/php/sbin/php-fpm

(2)检查PHP服务php-fpm的进程及启动端口的情况:

技术分享图片

配置Nginx支持PHP程序请求访问:

修改Nginx配置文件:

  cd /usr/local/nginx/conf/

  cp nginx.conf nginx.conf.02

  vim nginx.conf
worker_processes  1;
error_log logs/error.log;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;   
 server {
        listen       80;
        server_name  blog.yunjisuan.com;
        location / {
            root   /root/www;
            index  index.html index.htm;
        }
        location ~ .*.(php|php5)?$ {
            root    /root/www;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            include     fastcgi.conf;
        }
    }

}

检查并启动Nginx:

  /usr/local/nginx/sbin/nginx -t (检查脚本是否有语法错误)

  /usr/local/nginx/sbin/nginx -s reload (平滑重启)技术分享图片

这步在生产环境很关键,如不提前检查语法,重启后发现语法错误会导致Nginx无法提供服务,给用户访问体验带来不好的影响。

测试LNMP环境生效情况:

1.测试PHP解析请求是否OK

1)进入指定的默认站点目录后,编辑index.php,添加如下内容:

  cd /usr/local/nginx/html/www

  echo "<?php phpinfo(); ?>" > test_info.php

技术分享图片

以上代码为显示PHP配置信息的简单PHP文件代码

 2)调整Windows下的host解析(192.168.0.121为当前的机器IP)

在本机影射文件里添加虚拟机的IP地址,和域名。

本机影射文件位置:C盘:windows/System32/dirvers/etc/hosts

技术分享图片

3)打开浏览器,输入http://blog.yunjisuan.com/test_info.php 即可打开如下图所示界面:

技术分享图片

 出现上述界面,表示Nginx配合PHP解析已经正常。

2.针对Nginx请求访问PHP,然后对PHP连接MySQL的情况进行测试

编辑/usr/local/nginx/html/www/test_mysql.php,加入如下内容:

技术分享图片

测试结果如下:

技术分享图片

至此,LNMP的组合以基本搭建完毕。当然,我们还没有做相关优化,因此,我们需要将虚拟机保存好。以后使用。

七、部署一个blog程序服务

1.WordPress 博客程序的搭建准备

  1)登录MySQL数据库:mysql -uroot -p123123

  2)创建一个专用的数据库WordPress,用于存放blog数据:

  create database wordpress; (创建一个数据库)

  show databases like ‘wordpress‘; (查看库名)

  3)创建一个专用的WordPress blog管理用户

  grant all on wordpress.* to [email protected]‘localhost‘ identified by ‘123123‘;   (localhost为客户端地址)

  show grants for [email protected]‘localhost‘;  (查看用户对应权限)

  select user,host from mysql.user;  (查看数据库里创建的Wordpress用户)

 技术分享图片

2.Nginx及PHP环境配置准备

 1)选择之前配置好的支持LNMP的blog域名对应的虚拟主机

 技术分享图片

2)获取WordPress博客程序,并放置到blog域名对应虚拟主机的站点目录下,即/usr/local/nginx/html/www:

  ls 浏览www.wordpress.org下载博客程序

  tar xf wordpress-4.7.4-zh_CN.tar.gz 解压

  rm -f index.html test_info.php  test_mysql.php 删除无用文件

  mv wordpress/* . 把目录里的内容移动到blogcom根目录下

  /bin/mv wordpress-4.7.4-zh_CN.tar.gz /root/ 移走源程序

  ls -l 完整的blog程序内容

  chown -R mysql.mysql ../www/ 授权用户访问

  ls -l 最终博客目录和权限

开始安装blog博客程序

很多开源程序都支持浏览器傻瓜式的界面安装,此处也用这种方法。

1)打开浏览器输入blog.yunjisuan.com(提前做好hosts或DNS解析)

技术分享图片

2)仔细阅读页面的文字信息后,单击“现在就开始”按钮继续,然后在出现的页面表单上填写相应的内容。

技术分享图片

技术分享图片

技术分享图片

至此,静态网页设置完毕。 

实现WordPress博客程序URL静态化

实现此功能时,首先要在WordPress后台依次单击设置--->固定链接--->自定义结构,然后输入下面的代码,并保存更改。

/archives/%post_id%.html%post_id%是数据库对应博文内容的唯一ID,例如423)

技术分享图片

接着,在Nginx配置文件的server容器中添加下面的代码:

  vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  blog.yunjisuan.com;
        location / {
            root   html/www;
            index  index.php index.html index.htm;
        if (-f $request_filename/index.html){
            rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php){
            rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename){
            rewrite (.*) /index.php;
        }
        }
        location ~ .*.(php|php5)?$ {
                root    html/www;
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index   index.php;
                include         fastcgi.conf;
        }
    }
}

最后检查语法并重新加载Nginx服务:

  /usr/local/nginx/sbin/nginx -t (检查脚本)

  /usr/local/nginx/sbin/nginx -s reload (平滑重启)

 技术分享图片

 


























































以上是关于LNMP编译的主要内容,如果未能解决你的问题,请参考以下文章

LNMP源码编译

源码编译安装LNMP及论坛部署

源码编译安装LNMP架构环境

查看lnmp 编译参数

lnmp一键编译安装的脚本

CentOS 7.4 64位 编译安装 LNMP