lnmp环境源码安装

准备工作,安装依赖库

//检查并安装组件
yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libmcrypt libmcrypt-devel cmake
  • 1
  • 2

几点说明:
pcre、openssl、zlib是安装nginx时需要的
cmake是安装mysql时需要的

一、查看linux版

[root@centos src]# cat /etc/issue
CentOS release 6.7 (Final)
Kernel \r on an \
  • 1
  • 2
  • 3

二、编译安装nginx

1、下载nginx(stable版本)

wget -P /tmp http://nginx.org/download/nginx-1.8.1.tar.gz
  • 1

-P指定下载文件目录
或者

[root@centos /]# cd /usr/local/src
[root@centos src]# wget http://nginx.org/download/nginx-1.8.1.tar.gz
  • 1
  • 2

默认下载到当前目录下

2、解压nginx

[root@centos src]# tar xf nginx-1.8.1.tar.gz 
[root@centos src]# cd nginx-1.8.1
[root@centos nginx-1.8.1]# ./configure --help(查看参数)
  • 1
  • 2
  • 3
  • 4

3、编译nginx
如果指定用户和用户组,需要先创建

//创建用户www和用户组www
groupadd www
useradd -g www www
  • 1
  • 2
  • 3
./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module
  • 1
    make && make install
    //启动nginx

    **第一种方式 指定--sbin-path=/usr/sbin/nginx**
    nginx //启动
    nginx -s stop// 停止
    nginx -s reload // 重新加载

    **第二种方式 不指定--sbin-path**
    cd /usr/local/nginx
    ./sbin/nginx
    重启nginx  /usr/local/nginx/sbin/nginx -s reload

    **第三种方式**
     配置开机启动
    首先写一个shell脚本,脚本名称:nginx
    vi /etc/rc.d/init.d/nginx

    #! /bin/bash
    # chkconfig: 35 85 15  
    # description: Nginx is an HTTP(S) server, HTTP(S) reverse
    set -e
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DESC="nginx daemon"
    NAME=nginx
    DAEMON=/usr/local/nginx/sbin/$NAME (这里是nginx安装是 --sbin-path指定的路径)
    SCRIPTNAME=/etc/init.d/$NAME
    test -x $DAEMON || exit 0
    d_start(){
        $DAEMON || echo -n " already running"
    }
    d_stop() {
        $DAEMON -s quit || echo -n " not running"
    }
    d_reload() {
        $DAEMON -s reload || echo -n " counld not reload"
    }
    case "$1" in
    start)
        echo -n "Starting $DESC:$NAME"
        d_start
        echo "."
    ;;
    stop)
        echo -n "Stopping $DESC:$NAME"
        d_stop
        echo "."
    ;;
    reload)
        echo -n "Reloading $DESC configuration..."
        d_reload
        echo "reloaded."
    ;;
    restart)
        echo -n "Restarting $DESC: $NAME"
        d_stop
        sleep 2
        d_start
        echo "."
    ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
        exit 3
    ;;
    esac
    exit 0

    //将shell脚本放入到 /etc/rc.d/init.d/中,并执行下列命令

    chmod +x /etc/rc.d/init.d/nginx (设置可执行权限)
    chkconfig --add nginx (添加系统服务)

    service nginx start
    service nginx stop
    service nginx restart
    service nginx reload

    浏览器访问:http://localhost如能出现nginx页面则表示成功

    // 查看nginx进程
    ps -ef | grep nginx
    // 查看进程个数 去掉首位的
    ps -ef | grep nginx | wc -l

    // 查看80端口
    netstat -anpt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

4、安装PHP
//php下载

cd /usr/local/src/
//如果下载文件的文件是mirror,直接解压mirror即可
wget http://cn2.php.net/get/php-5.6.13.tar.gz/from/this/mirror

tar zxvf php-5.6.13.tar.gz
cd php-5.6.13

./configure --prefix=/usr/local/php --with-curl --with-bz2 --with-zlib --with-mhash --with-pcre-regex --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-openssl --with-pdo-mysql --with-libxml-dir --with-freetype-dir --with-iconv --enable-opcache --enable-bcmath  --enable-ftp --enable-shmop --enable-fpm --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-calendar --enable-zip --enable-mbstring --enable-pdo

make (重新编译需要 make clean清除)
make install

// 配置php-fpm
    cd /usr/local/php/etc
    cp php-fpm-default.conf php-fpm.conf

    //创建用户www和用户组www
    groupadd www
    useradd -g www www

    //修改php-fpm.conf
    vi php-fpm.conf
    //将user = nobody group = nobody 修改为 user = www group = www
    //将;pid = run/php-fpm.pid 前面的分号删掉

    //创建php.ini
    cp /usr/local/src/php-5.6.13/php.ini-production /usr/local/php/lib/php.ini
//设置php-fpm开机启动

    //拷贝php-fpm脚本至/etc/init.d目录
    cp /usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

    //设置权限并启动php-fpm:
    chmod 755 /etc/init.d/php-fpm
    /etc/init.d/php-fpm start
    chkconfig --add php-fpm

    //最后,给出php-fpm以服务的方式启动、停止和重启:
    service php-fpm start
    service php-fpm stop
    service php-fpm reload
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

5、配置支持php


    cd /usr/local/nginx/conf
    vi  nginx.conf
    user   www  www;  #修改nginx运行账号为:www组的www用户
    index  index.php index.html index.htm;   #增加index.php

     location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
  }
     #取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

    //验证nginx配置语法 
    cd /usr/local/nginx
    ./sbin/nginx -t

    //测试
    cd/usr/local/nginx/html
    vim index.php 
    //内容如下
     
    //如果能显示出php的环境信息,则表示配置成功
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

6、虚拟主机设置
这里使用多个.conf的方法配置
这里测试的时候把项目放在www目录下,对应的域名为onethinkcms.com
下载后的项目放入到/www/onethinkcms下
打开 /usr/local/nginx/conf/nginx.conf
在最后加入如下一行

# 包含所有的虚拟主机的配置文件 在conf目录下新建vhosts目录 添加相应的.conf配置文件

include vhosts/*.conf;
  • 1
  • 2
  • 3

在/usr/local/nginx/conf下新建目录

mkdir vhosts
cd vhosts
vim onethinkcms.conf
// 加入如下配置
server {

        listen  80;

        server_name  onethinkcms.com  www.onethinkcms.com;

        access_log  /www/onethinkcms.log;

         location / {

             root   /www/onethinkcms;

             index  index.php index.html index.htm;

        }

      #  error_page   500 502 503 504  /50x.html;

      #  location = /50x.html  {

      #      root   /usr/share/nginx/html;

      # }      
       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        location ~ .php$ {
    # 这里的值对应的是$document_root 
            root /www/onethinkcms;
            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            #注意这里的路径

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

配置hosts文件
vi /etc/hosts 添加 127.0.0.1 onethinkcms.com
重启nginx
访问 onethinkcms.com即可

7、安装MYSQL

①下载 MySQL
mysql官网->Downloads->Community->MySQL Community Server->下拉框里选择Source Code

cd /usr/local/src wget
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz

②安装编译源码所需的工具和库
如果缺少cmake库

yum install cmake(可以从http://www.cmake.org下载源码并编译安装) (安装包安装cmake)
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzvf cmake-2.8.10.2.tar.gz
./bootstrap make make
install

③设置MySQL用户和组

新增mysql用户组 groupadd mysql
新增mysql用户 useradd -r -g mysql mysql

④ 新建MySQL所需要的目录

新建mysql安装目录 mkdir -p /usr/local/mysql
新建mysql数据库数据文件目录 mkdir -p /data/mysqldb

⑤ MySQL源码包解压

cd /usr/local/src
tar zxvf mysql-5.6.27.tar.gz
cd cd mysql-5.6.27

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/mysqldb -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1
(注:重新运行配置,需要删除CMakeCache.txt文件 rm CMakeCache.txt ) make make install

⑥ 修改mysql目录所有者和组

修改mysql安装目录 cd /usr/local/mysql chown -R mysql:mysql .
修改mysql数据库文件目录 cd /data/mysqldb chown -R mysql:mysql .(注意后面的.指的是当前目录)

⑦ 初始化mysql数据库

cd /usr/local/mysql
./scripts/mysql_install_db –user=mysql –datadir=/data/mysqldb

⑧ 复制mysql服务启动配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
(注:如果/etc/my.cnf文件存在,则覆盖。)

⑨ 复制mysql服务启动脚本及加入PATH路径

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

⑩ 启动mysql服务并加入开机自启动

service mysqld start
chkconfig –level 35 mysqld on

⑪ 检查mysql服务是否启动

netstat -tulnp | grep 3306
需要把mysql加入环境变量 vim /etc/profile
在最后加入如下命令
MYSQL_HOME=/usr/local/mysql
PATH=$MYSQL_HOME/bin:$PATH
export PATH MYSQL_HOME
source /etc/profile
mysql -u root -p (密码为空,如果能登陆上,则安装成功)

⑫ 修改MySQL用户root的密码

方法一:mysql -u root -p
use mysql
update user set password=password(‘123456’) where user=’root’
flush privileges(刷新权限)
方法二:/usr/local/mysql/bin/mysql_secure_installation
(修改MySQL用户root的密码,同时可禁止root远程连接,移除test数据库和匿名用户。)

⑬ 可能会出现的错误
错误一:Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).
解决:修改/etc/my.cnf 中datadir,指向正确的mysql数据库文件目录

错误二:ERROR 2002 (HY000): Cannot connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
解决:新建一个链接或在mysql中加入-S参数,直接指出mysql.sock位置。ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock

错误三:-bash:mysql:command not found (也可以直接添加环境变量)
解决:因为mysql命令的路径在/usr/local/mysql/bin下面,所以你直接使用mysql命令时,系统在/usr/bin下面查此命令,所以找不到了
ln -s /usr/local/mysql/bin/mysql /usr/bin 做个链接即可

安装配置过程中遇到的问题汇总
1、出现pdo连接错误 SQLSTATE[HY000] [2002] No such file or directory Caused by: PDOException

    vi /usr/local/php/lib/php.ini 
    mysql.default_socket = /usr/local/mysql/mysql.sock
    pdo_mysql.default_socket= /usr/local/mysql/mysql.sock
    mysqli.default_socket = /usr/local/mysql/mysql.sock
  • 1
  • 2
  • 3
  • 4

重启php-fpm service php-fpm restart

2、端口及防火墙问题
配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
/etc/init.d/iptables restart  #最后重启防火墙使配置生效
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

查看防火墙状态
/etc/init.d/iptables status
关闭SELINUX

       vi /etc/selinux/config
       #SELINUX=enforcing       #注释掉
       #SELINUXTYPE=targeted    #注释掉
       SELINUX=disabled         #增加
       :wq  保存,关闭
       shutdown -r now   #重启系统
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

PHP命令找不到问题

①可以通过yum install php-cli安装(php-cli的版本较低)
yum remove php-cli

② bash: php: command not found
解决:
export PATH=$PATH:/usr/local/php/bin
然后,再 echo $PATH 看看,就看见了。
usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php/bin
这时候,你可以在系统的任意目录直接敲入php -i 都可以执行

安装php扩展
① 在php源码包里找到相应的扩展
cd /usr/local/src/php-5.6.13/ext/pdo

② 在该目录下执行
/usr/local/php/bin/phpize

③ 执行
./configure –with-php-config=/usr/local/php/bin/php-config
make & make install

④ 打开php.ini文件
cd /usr/local/php/lib/
加入 extension=pdo.so

⑤ 重启php-fpm
service php-fpm restart

如果遇到缺少`mysql_driver.lo’ is not a valid libtool object这类问题
清除已编译的文件 make clean 或者删除php安装包,重新解压新的

下载链接
//nginx下载
wget http://nginx.org/download/nginx-1.8.0.tar.gz
//openssl下载
wget http://www.openssl.org/source/openssl-1.0.2d.tar.gz
//pcre下载
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
//php下载
wget http://cn2.php.net/get/php-5.6.13.tar.gz/from/this/mirror(如果下载文件的文件是mirror,直接解压mirror即可)
//libmcrypt下载
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
// mysql下载
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz

安装libmcrypt扩展

    cd /usr/local/src
    tar zxvf libmcrypt-2.5.7.tar.gz
    cd libmcrypt-2.5.7
    ./configure --prefix=/usr/local/libmcrypt
    make && make install
    vi /etc/ld.so.conf.d/local.conf
    添加 “/usr/local/libmcrypt/lib”
    ldconfig -v
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

附:本人亲测,可行!参考的小伙伴一步步来

你可能感兴趣的:(linux,centos,lnmp环境)