1. 程式人生 > >centos6源碼編譯安裝lnmp環境

centos6源碼編譯安裝lnmp環境

p s 是不是 source nta abi cmake for linu pes

操作系統 版本

64位 CentOS-6.6 10.0.0.20

安裝環境所需依賴包

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

pcre、openssl、zlib是安裝nginx時需要的
cmake是安裝mysql時需要的

lnmp 是 linux+nginx+mysql+php 的縮寫

一.編譯安裝mysql

  1. 上傳下載mysql到/tmp

[root@manager tmp]# rz
rz waiting to receive.
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring mysql-5.5.32-linux2.6-x86_64.tar.gz...
100% 182346 KB 20260 KB/sec 00:00:09 0 Errors

  1. 解壓
[root@manager tmp]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz 
  1. 把解壓完的數據移動到/usr/local/mysql
[root@manager tmp]# mv mysql-5.5.32-linux2.6-x86_64 /usr/local/mysql
  1. 建立mysql用戶
[root@manager tmp]# useradd -s /sbin/nologin mysql
  1. 初始化數據庫

[root@manager tmp]# useradd -s /sbin/nologin mysql

[root@manager tmp]# cd /usr/local/mysql/
[root@manager mysql]# mkdir -p /data/mysql;chown -R mysql:mysql /data/mysql
[root@manager mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
WARNING: The host ‘manager‘ could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK

--user 定義數據庫的所屬主, --datadir 定義數據庫安裝到哪裏,建議放到大空間的分區上,這個目錄需要自行創建。這一步驟很關鍵,如果你看到兩個 “OK” 說明執行正確,否則請仔細查看錯誤信息。

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

  1. 拷貝啟動腳本文件並修改其屬性

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

  1. 修改啟動腳本
[root@localhost mysql]# vim /etc/init.d/mysqld
需要修改的地方有 “datadir=/data/mysql” (前面初始化數據庫時定義的目錄)

  1. 把啟動腳本加入系統服務項,並設定開機啟動,啟動mysql
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# service mysqld start
如果啟動不了,請到 /data/mysql/ 下查看錯誤日誌,這個日誌通常是主機名.err. 檢查mysql是否啟動的命令為:

[root@localhost mysql]# ps aux |grep mysqld

二.編譯安裝nginx

1.下載nginx的源碼包

wget -P /tmp http://nginx.org/download/nginx-1.8.1.tar.gz   #指定下載保存到/tmp目錄下

2.解壓安裝


[root@manager ~]# cd /tmp/
[root@manager tmp]# tar xf nginx-1.8.1.tar.gz

[root@manager tmp]# cd nginx-1.8.1
[root@manager nginx-1.8.1]# ./configure --help(查看參數)

3、編譯nginx
如果指定用戶和用戶組,需要先創建

#創建用戶www和用戶組www
groupadd www
useradd -g www www

4.指定參數編譯安裝

cd nginx-1.4.4
./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
[root@manager nginx-1.8.1]# make && make install

5.編寫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

6.更改nginx配置

更改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;
    }

}

}

檢查是否有錯

[root@manager nginx-1.8.1]# /etc/init.d/nginx configtest
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

登陸網頁檢驗是否成功

技術分享圖片

三.編譯安裝php

  1. 下載php
[root@manager ~]# wget -P /tmp http://am1.php.net/distributions/php-5.3.27.tar.gz
  1. 解壓php
[root@localhost src]# tar zxf php-5.3.27.tar.gz
  1. 創建相關賬戶
[root@nginx tmp]# useradd -s /sbin/nologin php-fpm

  1. 配置編譯參數
[root@manager tmp]# cd php-5.3.27
[root@manger php-5.3.27]# ./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=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --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 --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl --with-openssl

5.編譯安裝

make  && make install

6. 修改配置文件

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
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
[12-Mar-2018 07:37:02] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
# 如果出現諸如 “test is successful” 字樣,說明配置沒有問題。

7.啟動php-fpm

cp /tmp/php-5.3.27/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多個)。

測試是否解析php文件

創建測試文件:

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

內容如下:

<?php
    echo "測試php是否解析";
?>

測試:

[root@manager ~]# curl localhost/2.php
測試php是否解析[root@manager ~]#

centos6源碼編譯安裝lnmp環境