LNMP编译安装手记

最近一直在捣鼓centos学习,看完了《鸟哥的Linux私房菜》,自己准备的终极考核当然是每个PHPer的基本功,源码编译安装LNMP。一般的编译安装过程按nginx,mysql,php来即可。

环境:CentOS 6.8
目标:
nginx-1.11.10
mysql-5.6.35
php-7.1.2

nginx

先去官网上下载最新的源码包nginx-1.11.12,解压至代码目录。

tar -zxvf nginx-1.11.12.tar.gz -C /usr/local/src
#然后安装依赖的库函数文件,编译器
yum -y install openssl* pcre* gcc
cd /usr/local/src/nginx-1.11.10/
#建立Makefile
./configure  --user=daemon \
--group=daemon \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-http_v2_module
#至与这些模块什么含义,自行Google
#如果没有报错的话,就可以正式编译安装了
make && make install

安装成功后,制作启动脚本,添加服务,脚本nginx官网上有提供https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/,复制到/etc/init.d/nginx。

shell> chmod a+x /etc/init.d/nginx 
shell> chkconfig --add nginx
shell> chkconfig --levels 35 nginx on

然后你的nginx就设置为开机启动了,可以使用service nginx start/stop 控制nginx

mysql

mysql编译安装了mysql-5.6.35,先去官网上下载。mysql官网上有Enterprise企业版(收费?)和Community社区版,下载社区版源码包即可。
mysql比较特殊,使用cmake生成makefile

#首先安装依赖库
yum -y install make gcc-c++ cmake bison-devel  ncurses-devel gcc \ 
       autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel*
#开始生成makefile
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 \
-DMYSQL_UNIX_ADDR=/tmp/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLE_DOWNLOADS=1
#如果没有报错
make && make install 

如果cmake报错,安装报错需要的依赖库后,记得删除CMakeCache.txt文件重新cmake
如果遇到报错

CMAKE_CXX_COMPILER not set,是因为没有 gcc-c++
执行
yum -y install gcc-c++

安装成功后为mysql添加启动用户和启动脚本

shell> useradd -r mysql -s /sbin/nologin
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql
shell> chmod a+x /etc/init.d/mysql
shell> chkconfig --add mysql
shell> chkconfig --levels 35 mysqlon

启动mysql服务器后,用/usr/local/mysql/bin/mysql -uroot 联接服务器,如果报错

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/tmp/mysql/mysql.sock’ (2)

是因为socket文件不存在,编辑/etc/mysql.cnf,添加下面配置,重启mysql服务器就可以了

vim /etc/mysql.cnf
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0

    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    [client]
    socket=/var/lib/mysql/mysql.sock
:wq

php

下载安装最新的php-7.1.3.tar.bz2 ,解压安装至/usr/local/src

tar -jzvf php-7.1.3.tar.bz2 -C /usr/local/src
cd /usr/local/src/php-7.1.3
#安装依赖库文件
yum -y  install libpng-devel libXpm-devel gmp-devel libjpeg-devel libcurl* freetype* libzip libxml2*
#生成makefile
./configure  --prefix=/usr/local/php-7.1.2 \
--with-config-file-path=/usr/local/php-7.1.2/etc \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--disable-rpath \
--without-pear \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-gd \
--with-zlib \
--with-libxml-dir \
--enable-xml  \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-ftp \
--enable-sockets \
--enable-zip \
--with-gmp \
--with-openssl \
--with-fpm-user=daemon \
--with-fpm-group=daemon \
--with-mcrypt=/usr/include \
--with-curl 

注意,自5.3以后,以前安装MySQL extension, mysqli, PDO MYSQL需要使用MySQL Client Library (libmysqlclient),即需要指定mysql安装目录,依赖于mysql的安装,使用mysqlnd则不再依赖mysql的安装。
./configure时如果遇到报错
错误1

configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no

原因:有可能是因为找不到动态函数库了,可以进行下面尝试,将指定目录下的动态函数库加载到内存中

vim /etc/ld.so.conf                  # 编辑库文件
/usr/local/lib64                     # 添加该行
/usr/local/lib                       # 添加该行
/usr/lib                             # 添加该行
/usr/lib64                           # 添加该行
:wq                                  # 保存退出
ldconfig -v                          # 使之生效

错误2

configure: error: off_t undefined; check your library configuration

原因:没有安装libzip

yum -y install libzip

大功告成!!!花了我整整4个晚上。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值