LNMP环境搭建

LNMP环境搭建

首先介绍一下本次安装的LNMP环境:

一、Nginx编译安装

1.安装准备

nginx依赖于pcre库,所以必须要先安装pcre库

yum install pcre pcre-devel

由于nginx的gzip module还依赖一个非常重要的组件zlib library,当然安装时你也可以屏蔽此module

yum install zlib zlib-devel

如果需要nginx支持http还需要依赖一个重要的ssl libarary,当然安装时你也可以屏蔽此module

yum install openssl openssl-devel

2.编译安装

获取nginx软件包,这里我们将nginx下载文件存放在home目录中

cd /home/

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

tar zxvf nginx-1.8.0.tar.gz

cd nginx-1.8.0

./configure --prefix=/usr/local/nginx --with-http_ssl_module

make && make install

注: 这里我们将nginx安装到/usr/local/nginx中,如果在configure过程中遇到问题是请一一解决,直到看到Configuration summary的标识

安装成功后,我们进入nginx安装目录瞧瞧

[root@localhost nginx]# ll
total 16
drwxr-xr-x 2 root root 4096 Jan 20 16:47 conf   # 配置文件存放目录
drwxr-xr-x 2 root root 4096 Jan 20 16:47 html   # 网页文件存放目录
drwxr-xr-x 2 root root 4096 Jan 20 16:47 logs   # 日志文件存放目录
drwxr-xr-x 2 root root 4096 Jan 20 16:47 sbin   # 二进制程序存放目录

3.启动脚本

为了操作方便,我们可以将Nginx二进制程序文件加入环境变量中

vim /etc/profile

在文件中间位置添加环境变量

export PATH=$PATH:/usr/local/nginx/sbin

添加完成后,保存退出,要使环境变量生效,使用以下命令更新环境变量,也可以重启机器

source /etc/profile

为了更加方便地管理Nginx服务器,我们可以为Nginx管理写一个脚本:

touch /etc/init.d/nginx

为脚本添加执行权限

chmod +x /etc/init.d/nginx

添加脚本

vim /etc/init.d/nginx

脚本内容如下:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/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)

sysconfig="/etc/sysconfig/$prog"
lockfile="/var/lock/subsys/nginx"
pidfile="/var/run/${prog}.pid"

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

[ -f $sysconfig ] && . $sysconfig


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 -p $pidfile $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest_q || return 6
    stop
    start
}
reload() {
    configtest_q || return 6
    echo -n $"Reloading $prog: "
    killproc -p $pidfile $prog -HUP
    echo
}

configtest() {
    $nginx -t -c $NGINX_CONF_FILE
}

configtest_q() {
    $nginx -t -q -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

# Upgrade the binary with no downtime.
upgrade() {
    local oldbin_pidfile="${pidfile}.oldbin"

    configtest_q || return 6
    echo -n $"Upgrading $prog: "
    killproc -p $pidfile $prog -USR2
    retval=$?
    sleep 1
    if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]];  then
        killproc -p $oldbin_pidfile $prog -QUIT
        success $"$prog online upgrade"
        echo
        return 0
    else
        failure $"$prog online upgrade"
        echo
        return 1
    fi
}

# Tell nginx to reopen logs
reopen_logs() {
    configtest_q || return 6
    echo -n $"Reopening $prog logs: "
    killproc -p $pidfile $prog -USR1
    retval=$?
    echo
    return $retval
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest|reopen_logs)
        $1
        ;;
    force-reload|upgrade)
        rh_status_q || exit 7
        upgrade
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    status|status_q)
        rh_$1
        ;;
    condrestart|try-restart)
        rh_status_q || exit 7
        restart
            ;;
    *)
        echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"
        exit 2
esac

保存退出,添加完启动脚本后,我们需要修改nginx.conf中pid进程文件的位置,建议将pid统一放到/var/run/目录中

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

#pid    logs/nginx.pid

修改为

pid     /var/run/nginx.pid

保存退出

/etc/init.d/nginx脚本提供了以下功能

/etc/init.d/nginx start             # 启动Nginx                   nginx
/etc/init.d/nginx stop              # 停止Nginx                   nginx -s stop
/etc/init.d/nginx reload            # 服务不间断重启Nginx          nginx -s reload
/etc/init.d/nginx configtest        # 配置文件检测                nginx -t
/etc/init.d/nginx status            # 检测Nginx状态
/etc/init.d/nginx force-reload      # 果断重启Nginx
/etc/init.d/nginx upgrade           # 升级Nginx
/etc/init.d/nginx restart           # 服务间断重启Nginx
/etc/init.d/nginx reopen_logs       # 重新打开Nginx日志文件,另建一个日志

我们将nginx添加到开机启动中

chkconfig nginx on

至此Nginx服务器搭建完毕!

注:这里仅仅讲了一下Nginx的安装,至于配置和高并发优化,后面我会单独写一篇blog来讲解。

二、Mysql编译安装

1.安装准备

安装编译源码所需的工具和库

yum install gcc gcc-c++ cmake ncurses-devel perl

也可以源码安装cmake,从http://www.cmake.org下载源码并编译安装

wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz   
tar -xzvf cmake-2.8.10.2.tar.gz   
cd cmake-2.8.10.2   
./bootstrap ; make ; make install   
cd ~

新增mysql用户和用户组

groupadd mysql
useradd -r -g mysql mysql

创建mysql安装目录和数据库文件存放目录

mkdir -p /usr/local/mysql/data

2.编译安装

获取Mysql软件包,这里我们将Mysql下载文件存放在home目录中,并解压

cd /home/

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

tar zxvf mysql-5.6.15.tar.gz

cd mysql-5.6.15

cmake编译安装

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
       -DMYSQL_DATADIR=/usr/local/mysql/data \
       -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
       -DDEFAULT_CHARSET=utf8 \
       -DDEFAULT_COLLATION=utf8_general_ci \
       -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
       -DWITH_INNOBASE_STORAGE_ENGINE=1 \
       -DWITH_READLINE=1 \
       -DENABLED_LOCAL_INFILE=1 \
       -DMYSQL_USER=mysql \
       -DMYSQL_TCP_PORT=3306

make -j8 && make install

注:重新运行配置,需要删除CMakeCache.txt文件

cmake mysql各参数说明

#设置mysql安装目录
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

#设置mysql数据库文件目录
-DMYSQL_DATADIR=/usr/local/mysql/data

#设置监听套接字路径,这必须是一个绝对路径名。默认为/tmp/mysql.sock
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock

#设置服务器的字符集。缺省情况下,MySQL使用latin1的(CP1252西欧)字符集。cmake/character_sets.cmake文件包含允许的字符集名称列表。
-DDEFAULT_CHARSET=utf8

#设置服务器的排序规则。
-DDEFAULT_COLLATION=utf8_general_ci

#设置额外的编码
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk

#存储引擎选项:
#MyISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。
#静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1
#可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), 
#PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)

-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1

#设置mysql运行用户
-DMYSQL_USER=mysql

#设置mysql默认端口
-DMYSQL_TCP_PORT=3306

3.配置Mysql

修改Mysql目录和Mysql数据库目录所有者和所属组

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

cd /usr/local/mysql/data
chown -R mysql:mysql ./

初始化mysql数据库

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql 
--datadir=/usr/local/mysql/data

复制配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

复制启动脚本

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

/etc/init.d/mysqld提供了以下功能

/etc/init.d/mysqld start                # 启动mysql                   
/etc/init.d/mysqld stop                 # 停止mysql
/etc/init.d/mysqld restart              # 服务间断重启mysql
/etc/init.d/mysqld reload               # 服务不间断重启mysql
/etc/init.d/mysqld force-reload         # 果断重启mysql
/etc/init.d/mysqld status               # 检测mysql状态

我们将mysqld添加到开机启动中

chkconfig mysqld on

修改Mysql用户root的密码为root

mysqladmin -u root password 'root'

为Mysql添加远程连接权限(授权法)

#登录mysql
mysql -u root -p
Enter password:

#进入mysql后执行以下语句
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

为了操作方便,我们可以将mysqld和mysql二进制程序文件加入环境变量中

vim /etc/profile

在文件中间位置添加环境变量

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

添加完成后,保存退出,要使环境变量生效,使用以下命令更新环境变量,也可以重启机器

source /etc/profile

注:这里仅仅讲了一下Mysql的安装,至于配置、优化、主从、分区,后面也会单独写几篇blog来讲解。

三、PHP编译安装

1.安装准备

安装第三方yum源

cd /home/

wget http://www.atomicorp.com/installers/atomic

sh ./atomic

安装必要库文件

yum install gcc bison bison-devel zlib-devel php-mcrypt libmcrypt libmcrypt-devel \
mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel \
libedit-devel sqlite-devel libpng libpng-devel freetype-devel

2.编译安装

获取php软件包,这里我们将php下载文件存放在home目录中,并解压

cd /home/

wget http://hk2.php.net/distributions/php-5.6.17.tar.gz

tar zxvf php-5.6.17.tar.gz

cd php-5.6.17

开始编译

./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-mysql \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-freetype-dir=/usr/include/freetype2/freetype \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-readline \
--disable-fileinfo  

make -j8 && make install

注 由于编译环境的不同,若在configure过程中遇到问题,请一一解决后再进行下一步操作

注 make -j8 中的-j8参数的意思是利用多核编译,这样可以提高编译效率

如果想重新安装,可以清除之前的编译,再进行以上的安装步骤

make clean
make clean all

注:特别说明一下configure的参数,这里只作简单说明,如有不清楚的地方可以用 ./configure –help 或是 百度

#PHP安装路径
./configure --prefix=/usr/local/php \

#php.ini 配置文件路径
--with-config-file-path=/usr/local/php/etc \

#优化选项
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \

#启用 opcache,默认为 ZendOptimizer+(ZendOpcache)
--enable-opcache \

#设置FPM
--enable-fpm \

#开始Mysql支持
--with-mysql \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \

#开启GD库支持
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-freetype-dir=/usr/include/freetype2/freetype \


#开启国际化与字符编码支持
--with-gettext \
--enable-mbstring \
--with-iconv \

#加密扩展
--with-mcrypt \
--with-mhash \
--with-openssl \

#数学相关扩展
--enable-bcmath \

#开启soap服务,soap依赖libxml
--enable-soap \
--with-libxml-dir \

#开启进程、信号和内存相关支持
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \

#开启socket和curl支持
--enable-sockets \
--with-curl \

#开启压缩和归档支持
--with-zlib \
--enable-zip \
--with-bz2 \

#GNU Readline 命令行快捷键绑定(百度的,我也不知道啥子意义)
--with-readline \

#PHP5.4以后默认开启了fileinfo,在内存小于1024M的情况下安装时,如果不关闭,是无法安装成功的
--disable-fileinfo

三、配置PHP

复制php.ini文件到指定的目录下

cp /home/php-5.6.17/php.ini-development /usr/local/php/etc/php.ini

复制php-fpm.conf配置文件

cd /usr/local/php/etc/

cp php-fpm.conf.default php-fpm.conf

复制php-fpm启动脚本

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

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

/etc/init.d/php-fpm提供了以下功能

/etc/init.d/php-fpm start               # 启动php-fpm                 
/etc/init.d/php-fpm stop                    # 停止php-fpm
/etc/init.d/php-fpm force-quit          # 果断停止php-fpm
/etc/init.d/php-fpm restart             # 服务间断重启php-fpm
/etc/init.d/php-fpm reload              # 服务不间断重启php-fpm
/etc/init.d/php-fpm status              # 检测php-fpm状态

我们将php-fpm添加到开机启动中

chkconfig php-fpm on

为了操作方便,我们可以将php-fpm和php二进制程序文件加入环境变量中

vim /etc/profile

在文件中间位置添加环境变量

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

添加完成后,保存退出,要使环境变量生效,使用以下命令更新环境变量,也可以重启机器

source /etc/profile

至此PHP搭建完毕!

注:这里仅仅讲了一下PHP的安装,至于配置和优化,后面也会单独写一篇blog来讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值