zoukankan      html  css  js  c++  java
  • centOS 在线安装lnmp

    CentOS7源码安装最新版LNMP环境

     

    lnmp环境版本如下:

    系统:CentOS 7 x86_64

    NGINX:nginx-1.7.12

    数据库:mariadb-10.0.13

    PHP:php-5.5.23

    首先做一些准备工作,先把centos7的防火墙更换成iptables,可以参见如下链接

    centos7防火墙改为iptables

    修改成iptables之后就可以清空iptables里面的过滤规则了,然后再关闭selinux服务。记得不要忘了先安装gcc gcc-c++ wget net-tools等功能哦。

    首先安装mariadb

    应为数据库编译需要很长时间,所以我这里下载的是已经编译好了的二进制包,下载版本为 mariadb-10.0.13-linux-glibc_214-x86_64.tar.gz 

    1、下载二进制包到/usr/local/src 目录下:

    [root@centos74 ~]# cd /usr/local/src/

    [root@centos74 src]# wget http://ftp.osuosl.org/pub/mariadb/mariadb-10.0.13/bintar-quantal-amd64/mariadb-10.0.13-linux-glibc_214-x86_64.tar.gz

    2、将压缩包解压到/usr/local 目录下:

    [root@centos74 src]# tar zvxf mariadb-10.0.13-linux-glibc_214-x86_64.tar.gz -C /usr/local/

    3、创建mariadb 数据初始化目录/data/mysql:

    [root@centos74 src]# mkdir -p /data/mysql

    4、添加系统用户mysql,禁止登陆系统,同时,将mariadb 数据初始化目录所属主和组都修改为mysql:

    [root@centos74 src]# useradd -r -s /sbin/nologin mysql ;chown -R mysql.mysql /data/mysql/

    5、重命名解压出来的mariadb 目录:

    [root@centos74 src]# mv /usr/local/mariadb-10.0.13-linux-x86_64/ /usr/local/mysql

    6、进入重命名后的目录,初始化mariadb:

    [root@centos74 src]# cd /usr/local/mysql/

    [root@centos74 mysql]# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

    Installing MariaDB/MySQL system tables in '/data/mysql' ...

    140906  2:03:19 [Note] InnoDB: Using mutexes to ref count buffer pool pages

    140906  2:03:19 [Note] InnoDB: The InnoDB memory heap is disabled

    140906  2:03:19 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

    140906  2:03:19 [Note] InnoDB: Compressed tables use zlib 1.2.3

    140906  2:03:19 [Note] InnoDB: Using Linux native AIO

    140906  2:03:19 [Note] InnoDB: Using CPU crc32 instructions

    140906  2:03:19 [Note] InnoDB: Initializing buffer pool, size = 128.0M

    ........................................................................

    The latest information about MariaDB is available at http://mariadb.org/.

    You can find additional information about the MySQL part at:

    http://dev.mysql.com

    Support MariaDB development by buying support/new features from

    SkySQL Ab. You can contact us about this at sales@skysql.com.

    Alternatively consider joining our community based development effort:

    http://mariadb.com/kb/en/contributing-to-the-mariadb-project/

    报错:WARNING: The host 'test4' could not be looked up with resolveip.

    解决办法:vim /etc/hosts 在最后一行添加192.168.1.242 test4

    报错:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    解决办法:yum -y install libaio-devel libaio

    7、复制配置文件到/etc目录覆盖之前的my.cnf:

    [root@centos74 mysql]# cp support-files/my-large.cnf /etc/my.cnf

    cp:是否覆盖"/etc/my.cnf"? y

    8、复制mysql 启动脚本文件到/etc/init.d 目录下并重命名为mysqld:

    [root@centos74 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

    同时修改启动脚本的权限为755:

    [root@centos74 mysql]# chmod 755 !$

    chmod 755 /etc/init.d/mysqld

    9、编辑启动脚本,定义datadir 路径:

    [root@centos74 mysql]# vim /etc/init.d/mysqld

    定义数据存放路径:

    datadir=/data/mysql

    10、将mariadb自带命令放入$PATH

    [root@localhost ~]# PATH=$PATH:/etc/init.d/#当前有效,重启shell就失效

    [root@localhost ~]# echo "export PATH=$PATH:/etc/init.d/" >>/etc/profile

    [root@localhost ~]# echo "export PATH=$PATH:/usr/local/mysql/bin/" >>/etc/profile

    [root@localhost ~]# source !$

    11、启动mariadb:

    [root@centos74 mysql]# /etc/init.d/mysqld start

    Starting MySQL. SUCCESS!

    第二步,开始安装php

    这里要先声明一下,针对Nginx的php安装和针对apache的php安装是有区别的,因为Nginx中的php是以fastcgi的方式结合nginx的,可以理解为nginx代理了php的fastcgi,而apache是把php作为自己的模块来调用的。同样的,php官方下载地址: http://www.php.net/downloads.php

    下载php

    [rot@localhost src]# cd /usr/local/src

    [root@localhost src]# wget http://am1.php.net/distributions/php-5.5.23.tar.gz

    解压php

    [root@localhost src]# tar zxf php-5.5.23.tar.gz

    创建相关账户

    [root@localhost src]# useradd -s /sbin/nologin php-fpm

    配置编译参数

    [root@localhost src]# cd php-5.5.23

    [root@localhost src]# yum -y install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel 

    [root@localhost php-5.5.23]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=mysqlnd  --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --enable-bcmath --enable-mbstring --enable-sockets --with-gd --with-libxml-dir=/usr/local --with-gettext

    错误:configure: error: xml2-config not found. Please check your libxml2 installation.

    解决办法:yum -y install libxml2-devel

    错误:configure: error: Please reinstall the libcurl distribution -easy.h should be in <curl-dir>/include/curl/

    解决办法:yum -y install libcurl-devel

    错误:configure: error: jpeglib.h not found.

    解决办法:yum -y install libjpeg-turbo-devel

    错误:configure: error: png.h not found.

    解决办法:um -y install libpng-devel

    错误:configure: error: freetype-config not found.

    解决办法:configure: error: mcrypt.h not found. Please reinstall libmcrypt.

    错误:configure: error: mcrypt.h not found. Please reinstall libmcrypt.

    解决办法:yum -y install libmcrypt-devel

    安装php

    [root@localhost  php-5.3.27]# make && make install

    以上每一个步骤,如果没有完全执行正确,那么下一步是无法进行的,使用 echo $? 看结果是否为 “0” , 如果不是,就是没有执行正确。

    修改配置文件

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

    vim /usr/local/php/etc/php-fpm.conf

    把如下内容写入该文件:

    [global]

    pid = /usr/local/php/var/run/php-fpm.pid

    error_log = /usr/local/php/var/log/php-fpm.log

    [www]

    listen = /tmp/php-fcgi.sock

    user = php-fpm

    group = php-fpm

    listen.owner = nobody

    listen.group = nobody

    pm = dynamic

    pm.max_children = 50

    pm.start_servers = 20

    pm.min_spare_servers = 5

    pm.max_spare_servers = 35

    pm.max_requests = 500

    rlimit_files = 1024

    保存配置文件后,检验配置是否正确的方法为:

    /usr/local/php/sbin/php-fpm -t

    如果出现诸如 “test is successful” 字样,说明配置没有问题。

    启动php-fpm

    cp /usr/local/src/php-5.5.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

    chmod 755 /etc/init.d/php-fpm

    service php-fpm start

    如果想让它开机启动,执行:

    chkconfig php-fpm on

    检测是否启动:

    ps aux |grep php-fpm

    看看是不是有很多个进程(大概20多个)。

    安装nginx

    下载nginx

    cd /usr/local/src/

    wget http://nginx.org/download/nginx-1.7.12.tar.gz

    解压nginx

    tar zxvf nginx-1.7.12.tar.gz

    配置编译参数

    cd nginx-1.7.12

    ./configure

    --prefix=/usr/local/nginx

    --with-http_realip_module

    --with-http_sub_module

    --with-http_gzip_static_module

    --with-http_stub_status_module  

    --with-pcre

    报错:./configure: error: the HTTP rewrite module requires the PCRE library.

    解决办法:yum -y install pcre-devel

    报错:./configure: error: the HTTP gzip module requires the zlib library.

    解决办法:yum install -y zlib-devel

    编译nginx

    make

    安装nginx

    make install

    编写nginx启动脚本,并加入系统服务

    vim /etc/init.d/nginx

    写入如下内容:

    #!/bin/bash

    # chkconfig: - 30 21

    # description: http service.

    # Source Function Library

    . /etc/init.d/functions

    # Nginx Settings

    NGINX_SBIN="/usr/local/nginx/sbin/nginx"

    NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

    NGINX_PID="/usr/local/nginx/logs/nginx.pid"

    RETVAL=0

    prog="Nginx"

    start() {

            echo -n $"Starting $prog: "

            mkdir -p /dev/shm/nginx_temp

            daemon $NGINX_SBIN -c $NGINX_CONF

            RETVAL=$?

            echo

            return $RETVAL

    }

    stop() {

            echo -n $"Stopping $prog: "

            killproc -p $NGINX_PID $NGINX_SBIN -TERM

            rm -rf /dev/shm/nginx_temp

            RETVAL=$?

            echo

            return $RETVAL

    }

    reload(){

            echo -n $"Reloading $prog: "

            killproc -p $NGINX_PID $NGINX_SBIN -HUP

            RETVAL=$?

            echo

            return $RETVAL

    }

    restart(){

            stop

            start

    }

    configtest(){

        $NGINX_SBIN -c $NGINX_CONF -t

        return 0

    }

    case "$1" in

      start)

            start

            ;;

      stop)

            stop

            ;;

      reload)

            reload

            ;;

      restart)

            restart

            ;;

      configtest)

            configtest

            ;;

      *)

            echo $"Usage: $0 {start|stop|reload|restart|configtest}"

            RETVAL=1

    esac

    exit $RETVAL

    保存后,更改权限:

    chmod 755 /etc/init.d/nginx

    chkconfig --add nginx

    如果想开机启动,请执行:

    chkconfig nginx on

    更改nginx配置

    首先把原来的配置文件清空:

    > /usr/local/nginx/conf/nginx.conf

    “>” 这个符号为重定向的意思,单独用它,可以把一个文本文档快速清空。

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

    写入如下内容:

    user nobody nobody;

    worker_processes 2;

    error_log /usr/local/nginx/logs/nginx_error.log crit;

    pid /usr/local/nginx/logs/nginx.pid;

    worker_rlimit_nofile 51200;

    events

    {

        use epoll;

        worker_connections 6000;

    }

    http

    {

        include mime.types;

        default_type application/octet-stream;

        server_names_hash_bucket_size 3526;

        server_names_hash_max_size 4096;

        log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

        '$host "$request_uri" $status'

        '"$http_referer" "$http_user_agent"';

        sendfile on;

        tcp_nopush on;

        keepalive_timeout 30;

        client_header_timeout 3m;

        client_body_timeout 3m;

        send_timeout 3m;

        connection_pool_size 256;

        client_header_buffer_size 1k;

        large_client_header_buffers 8 4k;

        request_pool_size 4k;

        output_buffers 4 32k;

        postpone_output 1460;

        client_max_body_size 10m;

        client_body_buffer_size 256k;

        client_body_temp_path /usr/local/nginx/client_body_temp;

        proxy_temp_path /usr/local/nginx/proxy_temp;

        fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

        fastcgi_intercept_errors on;

        tcp_nodelay on;

        gzip on;

        gzip_min_length 1k;

        gzip_buffers 4 8k;

        gzip_comp_level 5;

        gzip_http_version 1.1;

        gzip_types text/plain application/x-javascript text/css text/htm application/xml;

    server

    {

        listen 80;

        server_name localhost;

        index index.html index.htm index.php;

        root /usr/local/nginx/html;

        location ~ .php$ {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/php-fcgi.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

        }

    }

    }

    保存配置后,先检验一下配置文件是否有错误存在:

    /usr/local/nginx/sbin/nginx  -t

    如果显示内容如下,则配置正确,否则需要根据错误提示修改配置文件:

    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    启动nginx:

    service nginx start

    如果不能启动,请查看 “/usr/local/nginx/logs/error.log” 文件,检查nginx是否启动:

    ps aux |grep nginx

    看是否有进程。

    测试是否解析php文件

    创建测试文件:

    vim /usr/local/nginx/html/2.php

    内容如下:

    <?php echo phpinfo();?>

    测试:

    [root@localhost nginx]# curl localhost/2.php

    或者使用浏览器打开http://YourServerIPAddress/2.php

    重要:如果解析不了,检查日志发现连接不到php,我的php版本为5.5.23,比较新的版本,需要在php/etc/php-fpm.conf文件中添加

    listen.owner = nobody

    listen.group = nobody

    这两行,再重启一下服务就能使用php了

    原因是/tmp/php-fcgi.sock这个文件没有读权限

  • 相关阅读:
    Ecshop去掉模版中随机出现Ecshop版权的方法
    ecshop邮件订阅按“订阅”没反应
    ecshop开发帮助
    ecshop循环计数
    ECSHOP购物车页面显示商品简单描述
    ecshop 函数列表大全
    ecshop 商品分类页 取得当前分类下的子分类方法
    ecshop调用指定分类和个数的文章列表
    thymeleaf中的th:assert用法
    thymeleaf中的模板布局
  • 原文地址:https://www.cnblogs.com/wjm956/p/7195349.html
Copyright © 2011-2022 走看看