CentOS6系統原始碼安裝LNMP環境詳解

技術小阿哥發表於2017-11-27

一、安裝nginx

以下命令均在root許可權下執行,普通使用者可通過su命令切換

1.安裝依賴

yum install gcc-c++
yum install pcre pcre-devel
yum install openssl openssl-devel

2.下載原始碼

wget http://nginx.org/download/nginx-1.8.1.tar.gztar -zxvf nginx-1.8.1.tar.gzcd nginx-1.8.1

3.建立nginx使用者

useradd -M -s /sbin/nologin nginx

-M 表示不建立home目錄

-s 指定shell為不登入

4.配置編譯

./configure  

–prefix=/usr/local/nginx

–with-http_stub_status_module

–with-http_ssl_module

–user=nginx

–group=nginx


make && make install


5.啟動nginx

進入nginx的安裝目錄,即上面–prefix引數指定的

cd /usr/local/nginx
sbin/nginx

開啟瀏覽器即可訪問了。

1240

訪問地址為本地地址

1240

訪問地址為:192.168.253.131

注意如果是遠端瀏覽器不能訪問,可能是防火牆的80埠預設沒有開啟,需要開啟這個埠。

開啟/etc/sysconfig/iptables,在
-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

儲存,並執行:service iptables restart

6.啟動關閉nginx命令

檢查nginx配置檔案是否正確

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

啟動nginx

/usr/local/nginx/sbin/nginx

關閉nginx

/usr/local/nginx/sbin/nginx -s stop  或  pkill nginx

重啟nginx

/usr/local/nginx/sbin/nginx -s reload

7.新增系統服務

當然也可以將可以將nginx作為系統服務管理,將下面啟動指令碼(參考:nginx.com)加入/etc/init.d/nginx中,賦予可執行許可權。

#!/bin/sh

#

# nginx – this script starts and stops the nginx daemin

#

# chkconfig:   – 85 15 

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /usr/local/nginx/conf/nginx.conf

# pidfile:     /usr/local/nginx/logs/nginx.pid


# Source function library.

. /etc/rc.d/init.d/functions


# Source networking configuration.

. /etc/sysconfig/network


# Check that networking is up.

[ “$NETWORKING” = “no” ] && exit 0


nginx=”/usr/local/nginx/sbin/nginx”

prog=$(basename $nginx)


NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”


lockfile=/var/lock/subsys/nginx


start() {

    [ -x $nginx ] || exit 5

    [ -f $NGINX_CONF_FILE ] || exit 6

    echo -n $”Starting $prog: “

    daemon $nginx -c $NGINX_CONF_FILE

    retval=$?

    echo

    [ $retval -eq 0 ] && touch $lockfile

    return $retval

}


stop() {

    echo -n $”Stopping $prog: “

    killproc $prog -QUIT

    retval=$?

    echo

    [ $retval -eq 0 ] && rm -f $lockfile

    return $retval

}


restart() {

    configtest || return $?

    stop

    start

}


reload() {

    configtest || return $?

    echo -n $”Reloading $prog: “

    killproc $nginx -HUP

    RETVAL=$?

    echo

}


force_reload() {

    restart

}


configtest() {

  $nginx -t -c $NGINX_CONF_FILE

}


rh_status() {

    status $prog

}


rh_status_q() {

    rh_status >/dev/null 2>&1

}


case “$1” in

    start)

        rh_status_q && exit 0

        $1

        ;;

    stop)

        rh_status_q || exit 0

        $1

        ;;

    restart|configtest)

        $1

        ;;

    reload)

        rh_status_q || exit 7

        $1

        ;;

    force-reload)

        force_reload

        ;;

    status)

        rh_status

        ;;

    condrestart|try-restart)

        rh_status_q || exit 0

            ;;

    *)

        echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”

        exit 2

esac


然後,可以使用如下命令:

service nginx {start|stop|status|restart|reload|configtest}

也可以將nginx服務加入開機啟動:

chkconfig nginx on

二、安裝mysql

1.安裝依賴

yum  install  make cmake gcc-c++ bison-devel ncurses-devel

有的依賴包可能已經安裝過了,可以用rpm -qa package-name查詢是否已經安裝。

2.下載原始碼

wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.54.tar.gz

tar -zxvf mysql-5.5.49.tar.gz

cd mysql-5.5.49.tar.gz


3.建立mysql使用者

useradd -M -s /sbin/nologin mysql

4.配置編譯

cmake .

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DMYSQL_DATADIR=/usr/local/mysql/data

-DSYSCONFDIR=/etc

-DWITH_MYISAM_STORAGE_ENGINE=1

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_MEMORY_STORAGE_ENGINE=1

-DWITH_READLINE=1

-DENABLE_LOCAL_INFILE=1

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DEXTRA_CHARSETS=all

-DWITH_PARTITION_STORAGE_ENGINE=1

-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock

-DMYSQL_TCP_PORT=3306

-DMYSQL_USER=mysql


make && make install


5.配置mysql

修改/usr/local/mysql許可權

chown -R mysql:mysql /usr/local/mysql

複製配置檔案,複製前注意檢視/etc目錄下是否有my.cnf檔案,如果有,先將其備份為其他檔名

cp /etc/my.cnf /etc/my.cnf.backup

cd /usr/local/mysql

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


執行初始化配置指令碼,建立系統自帶的資料庫和表

chmod +x scripts/mysql_install_db

scripts/mysql_install_db

–basedir=/usr/local/mysql

–datadir=/usr/local/mysql/data

–user=mysql


6.新增系統服務

複製服務指令碼到/etc/init.d目錄,並設定開機啟動

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

chmod +x /etc/init.d/mysql

chkconfig mysql on

#啟動mysql

service mysql start

#停止mysql

service mysql stop

#重啟mysql

service mysql restart


7.命令列登陸mysql

首先將mysql登陸命令的路徑加入PATH中,修改/etc/profile檔案,在檔案末尾加上:

PATH=/usr/local/mysql/bin:$PATHexport PATH

關閉檔案,然後執行source /etc/profile讓配置立即生效

登陸mysql並修改root使用者密碼

mysql -u rootset password = password(`123456`);

下次登陸時就需要密碼。

mysql -u root -p

注意

如果遠端登陸mysql出錯,可能是防火牆的3306埠預設沒有開啟。同上面nginx開啟防火牆80埠一樣,在/etc/sysconfig/iptables檔案加入:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

儲存,並執行:service iptables restart

三、安裝php

1.安裝依賴

yum install libxml2-devel openssl-devel libcurl-devel 
                  gd-devel libpng-devel freetype-devel 
                  libjpeg-devel zlib-devel

解決yum無法安裝libiconv庫

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar -zxvf libiconv-1.14.tar.gz
cd libiconv-1.14./configure --prefix=/usr/local/libiconv
make && make install

另外,centos預設的yum源裡沒有libmcrypt-devel,這裡使用阿里雲的yum源安裝。

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo


yum install libmcrypt-devel  mcrypt mhash


2.下載原始碼

wget -O php-5.6.19.tar.gz  http://cn2.php.net/get/php-5.6.19.tar.gz/from/this/mirror

tar -zxvf php-5.6.19.tar.gz

cd php-5.6.19


3.配置編譯

./configure

–prefix=/usr/local/php

–with-mysql=mysqlnd

–with-mysqli=mysqlnd

–with-pdo-mysql=mysqlnd

–enable-opcache

–enable-fpm

–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-bcmath

–enable-shmop

–enable-sysvsem

–enable-inline-optimization

–with-curl

–with-curlwrappers

–enable-mbregex

–with-mcrypt

–with-gd

–enable-gd-native-ttf

–with-openssl

–with-mhash

–enable-pcntl

–enable-sockets

–with-xmlrpc

–enable-zip

–enable-soap


make && make install


這裡特別說明下mysqlnd,mysqlnd是php官方自帶的mysql驅動,這樣安裝php不需要提前安裝mysql了。像--with-mysql=/usr/local/mysql這樣使用的是mysql官方自帶的mysql驅動,需要提前安裝mysql。

4.啟動php

首先將php命令路徑加入PATH中,修改/etc/profile檔案,在檔案末尾加上:

PATH=/usr/local/php/bin:$PATH

export PATH


關閉檔案,然後執行source /etc/profile讓配置立即生效

然後複製原始碼目錄中的php.ini-development到/usr/local/php/lib/php.ini

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

5.啟動php-fpm並新增系統服務

PHP-FPM是一個PHP FastCGI管理器,主要用於配合web伺服器處理php檔案。

php-fpm命令位於/usr/local/php/sbin目錄下,啟動指令碼在原始碼目錄的sapi/fpm子目錄下。複製php-fpm啟動指令碼到/etc/init.d/php-fpm,設定開機啟動。

複製/usr/local/php/etc/php-fpm.conf.default到/usr/local/php/etc/php-fpm.conf

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm


chmod +x /etc/init.d/php-fpm

chkconfig  php-fpm  on


cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf


#啟動php-fpm

service php-fpm  start

#停止php-fpm

service  php-fpm  stop

#重啟php-fpm

service  php-fpm  restart


四、測試

為了讓nginx能夠處理php,需要修改nginx的配置檔案(nginx.conf),將下面的配置:

#location ~ .php$ {

#    root           html;

#    fastcgi_pass   127.0.0.1:9000;

#    fastcgi_index  index.php;

#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

#    include        fastcgi_params;

#}


修改為:

location ~ .php$ {

      root           html;

      fastcgi_pass   127.0.0.1:9000;

      fastcgi_index  index.php;

      include        fastcgi.conf;

}

在/usr/local/nginx/html目錄下建立一個test.php檔案,內容如下:

<?php

$con = mysqli_connect(“127.0.0.1”, “root”, “123456”);

if (!$con) {

      die(“Could not connect:” . mysqli_error($con));

}


if (mysqli_query($con, `create database zhou`)) {

       echo `Database created!`;

} else {

      echo `Database created error:` , mysqli_error($con);

}


mysqli_close($con);


開啟瀏覽器訪問:127.0.0.1/test.php。

登陸mysql,檢視資料庫zhou是否建立成功,如果建立成功表明LNMP環境搭建完成。

本文轉自 2012hjtwyf 51CTO部落格,原文連結:http://blog.51cto.com/hujiangtao/1918858,如需轉載請自行聯絡原作者


相關文章