LNMP环境搭建
首先介绍一下本次安装的LNMP环境:
- Centos v6.4
- Nginx v1.8.0
- Mysql v5.6.15
- PHP v5.6.17
一、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来讲解。