zoukankan      html  css  js  c++  java
  • LNMP编译

    一、安装数据库

    创建组账号:

      groupadd mysql

    创建用户:

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

    写入密码:

      echo "123123" >> /etc/passwd

    映射:

      echo "`hostname -I` LNMP" >> /etc/hosts

    查看属主和属组:

      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 wordpress@'localhost' identified by '123123';   (localhost为客户端地址)

      show grants for wordpress@'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 (平滑重启)

     

  • 相关阅读:
    struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)
    Android应用如何开机自启动、自启动失败原因
    android操作ini工具类
    C++#define的用法(含特殊)
    c指针
    WP7备注(34)(UpdateSourceTrigger|ValidatesOnExceptions|NotifyOnValidationError)
    WP7备注(30)(数据绑定基本)
    WP7备注(38)(VisualStateManager)
    WP7备注(39)(ResourceDictionary)
    WP7备注(35)(Vector Graphics|Raster Graphics)
  • 原文地址:https://www.cnblogs.com/mashuang/p/10027273.html
Copyright © 2011-2022 走看看