欢迎您, 来到 宁时修博客.^_^

Centos7编译安装lnmp

2016/12/08 宁时修 Linux 2017
Centos7.0编译安装(Nginx 1.9 + php 7.0.6 + mysql 5.6)

1.编译安装Nginx 1.9.0

Nginx、Mysql和PHP7的的源码都是用C/C++写的,所以自己的CentOS 7.0服务器上必须要安装gcc和g++软件

############Nginx依赖包下载地址已失效,现在提供网盘下载##############

链接:https://pan.baidu.com/s/1eV3_ORKq_zsZdjUpj2vK8Q 密码:ytk2


关闭防火墙 service iptables stop #Centos 7 中该服务不存在,你只需要关闭selinux即可!
关闭selinux vi /etc/selinux/config 修改 SELINUX=disabled

安装过程用到的工具(确保能正常上网,不然下面的操作将无法进行 ^_^)

[root@Cocolait /]# yum install wget
[root@Cocolait /]# yum install vim


1.安装gcc,gcc-c++

[root@Cocolait /]# yum install gcc gcc-c++


2.创建一个没有登录权限的nginx用户和用户组

[root@Cocolait ~]# groupadd -r nginx && useradd -r -g nginx -s /bin/false -M nginx


3.安装nginx需要的依赖包

[root@Cocolait ~]# yum -y install openssl openssl-devel libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed


4.下载pcre的tar包并解压,以便支持Nginx的Rewrite功能 (安装目录为/usr/local/pcre)

[root@Cocolait ~] # cd /usr/local
[root@Cocolait ~] # mkdir -p /usr/local/pcre
[root@Cocolait ~]# wget -c http://git.typecodes.com/libs/php/pcre-8.36.tar.gz
[root@Cocolait local]# tar -zxf pcre-8.36.tar.gz
[root@Cocolait local]# cd pcre-8.36
[root@Cocolait pcre-8.36]# ./configure --prefix=/usr/local/pcre
[root@Cocolait pcre-8.36]# make && make install



5.下载zlib的tar包并解压,以便支持Nginx的Gzip压缩功能 (安装目录为/usr/local/zlib)

[root@Cocolait ~] # cd /usr/local
[root@Cocolait ~] # mkdir -p /usr/local/zlib
[root@Cocolait ~]# wget -c http://git.typecodes.com/libs/nginx/zlib-1.2.8.tar.gz
[root@Cocolait local]# tar -zxf zlib-1.2.8.tar.gz
[root@Cocolait local]# cd zlib-1.2.8
[root@Cocolait pcre-8.36]# ./configure --prefix=/usr/local/zlib
[root@Cocolait pcre-8.36]# make && make install


6.安装Nginx

[root@Cocolait ~] # cd /usr/local
[root@Cocolait ~] # mkdir -p /usr/local/nginx
[root@Cocolait ~] # mkdir -p /var/run/nginx
[root@Cocolait ~] # wget -c http://nginx.org/download/nginx-1.9.0.tar.gz
[root@Cocolait ~] # tar -zxf nginx-1.9.0.tar.gz && cd nginx-1.9.0
[root@Cocolait nginx-1.9.0]# ./configure \
--prefix=/usr/local/nginx \                     [Nginx安装目录]
--sbin-path=/usr/sbin/nginx \                   [Nginx的sbin目录]
--conf-path=/etc/nginx/nginx.conf \             [Nginx的配置文件]
--error-log-path=/var/log/nginx/error.log \     [Nginx的错误日志]
--http-log-path=/var/log/nginx/access.log \     [Nginx的访问日志]
--pid-path=/var/run/nginx/nginx.pid  \          [Nginx的进程ID]
--lock-path=/var/lock/nginx.lock \
--user=nginx \                          [Nginx所属用户]
--group=nginx \                         [Nginx所属用户组]
--with-http_ssl_module \                    [Nginx的ssl模块]
--with-http_spdy_module \               [Nginx的Google spdy模块]
--with-http_dav_module \
--with-http_flv_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_random_index_module \
--with-http_degradation_module \
--with-http_secure_link_module \
--with-http_gzip_static_module \            [Nginx的gzip压缩模块]
--with-http_perl_module \
--with-pcre=/usr/local/pcre \                 [pcre的安装目录]
--with-zlib=/usr/local/zlib \                    [pcre的安装目录]
--with-debug \                          [允许DEBUG]
--with-file-aio \
--with-mail \
--with-mail_ssl_module \
--http-client-body-temp-path=/usr/local/nginx/client_body \
--http-proxy-temp-path=/usr/local/nginx/proxy \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
--http-scgi-temp-path=/usr/local/nginx/scgi \
--with-stream \                         [Nginx1.9.0特有的stream模块]
--with-ld-opt="-Wl,-E"                  [gcc的编译优化]


//复制下面这行即可
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.36 --with-zlib=/usr/local/zlib-1.2.8 --with-http_realip_module --with-http_image_filter_module
[root@Cocolait nginx-1.9.0]# make && make install

注意:nginx依赖包,在指定的时候需要指定源码包地址不是安装地址。比如--with-pcre=/usr/local/pcre-3 这里的地址是源码包地址


Nginx随系统启动

直接在/etc/rc.local 增加如下代码即可
/usr/local/nginx/sbin/nginx 
添加完成后 执行 chmod +x /etc/rc.d/rc.local

7.配置Nginx.conf

[root@Cocolait ~] # cd /usr/local/nginx/conf
[root@Cocolait usr/local/nginx/conf]# cp nginx.conf nginx.conf.bak
[root@Cocolait usr/local/nginx/conf]# egrep -v "#|^$" nginx.conf.default > nginx.conf
[root@Cocolait usr/local/nginx/conf]# vi nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  60;
    server {
        listen       80;
        server_name  127.0.0.1:9000;
        location / {
            root   /www;
            index  index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
启用nginx /usr/local/nginx/sbin/nginx

8.创建Web项目访问目录,并且赋给nginx权限

[root@Cocolait ~] # mkdir -p /www
[root@Cocolait ~] # cd /www
[root@Cocolait ~] # chown -R nginx.nginx /www         把/www目录给nginx用户和用户组
[root@Cocolait ~] # find /www -type d|xargs chmod 755   给/www站点目录递归设置755权限 只有用户才能拥有所有权限 其他
[root@Cocolait ~] # find /www -type f|xargs chmod 644 所有用户没有更改和删除权限 用户组和其他 只有可读权限


2.源码安装Mysql5.6

1.下载mysql源码包(安装目录 /usr/local/mysql)

[root@Cocolait ~] # cd /usr/local
[root@Cocolait ~] # wget http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
[root@Cocolait ~] # tar zxvf mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz && mv mysql-5.6.12-linux-glibc2.5-x86_64 /usr/local/mysql


2.创建mysql所属组及用户

[root@Cocolait ~] # groupadd mysql
[root@Cocolait ~] # useradd -r -g mysql mysql


3.改变mysql软件所属组

[root@Cocolait ~] # cd /usr/local
[root@Cocolait ~] # chown -R mysql:mysql mysql

4.初始化数据库

[root@Cocolait ~] # cd /usr/local
[root@Cocolait ~] # mkdir -p /usr/local/mysql_data
[root@Cocolait ~] # cd /usr/local && chown -R mysql:mysql mysql_data
[root@Cocolait ~] # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql_data

注意:在初始化的时候如果发生错误一般都是缺包导致的。

执行:

yum install -y gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel \
 libaio libaio-devel perl-Data-Dumper bison-devel



5.数据库配置文件

[root@Cocolait local]# cd mysql
[root@Cocolait local]# support-files/my-default.cnf /etc/my.cnf
[root@Cocolait local]# support-files/mysql.server /etc/init.d/mysql
[root@Cocolait local]# vim /etc/init.d/mysql

#修改文件中的两个变更值
basedir=/usr/local/mysql        #mysql安装目录
datadir=/usr/local/mysql_data  #mysql数据存放处



6.添加mysql环境变量

[root@Cocolait local]# vim /etc/profile
#最后一行添加以下两行:
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
#保存退出
[root@Cocolait local]# source /etc/profile


7.添加自启动服务

[root@Cocolait mysql]# chkconfig --add mysql
[root@Cocolait mysql]# chkconfig --level 345 mysql on
[root@Cocolait mysql]# chkconfig --list mysql  #查看启动级别


8.启用MySQL服务

[root@Cocolait mysql]# service mysql start
#会提示:Starting MySQL.. SUCCESS! 
#查看mysql服务:
ps aux|grep mysql


9.登录mysql及改密码与配置远程访问

#修改MySQL root登录密码
[root@Cocolait mysql]# /usr/local/mysql/bin/mysqladmin -u root password 'root' 
#我这里设置了密码为 “root”


#登录mysql,需要输入密码

[root@Cocolait mysql]# /usr/local/mysql/bin/mysql -u root -p 
#会提示 Enter password: '输入你的密码就可以进入mysql啦'
#进入mysql后
#允许root用户远程访问
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;     
mysql>FLUSH PRIVILEGES;#刷新权限
mysql>exit#退出mysql端
#忘记root密码后,如何找回密码
/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql --datadir=/usr/local/mysql_data --skip-grant-tables &
usr/local/mysql/bin/mysql -u root mysql
UPDATE user SET password=PASSWORD("root") WHERE user='root';
FLUSH PRIVILEGES;

注意:在允许root用户远程访问的时候

IDENTIFIED BY 'root' 这里所指的你刚设置的mysql登录密码



3.编译安装php7

#############2018/06/17##################

安装php需要的依赖包 用yum方式来安装

复制该行代码:

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel gd-devel libjpeg libjpeg-devel libpng libpng-devel freeype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel


依赖包介绍

libxml  [xml扩展]
openssl [OpenSSL 是一个安全套接字层密码库]
bzip2  [zip压缩扩展]
curl    [libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯]
gd,jpeg,png,freeype  [GD库图片处理]


安装扩展包

加密支持扩展库libmcrypt

[root@localhost ~]# cd /usr/local 
[root@localhost local]# wget -c https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

> 进入解压后的源码目录编译并安装

[root@localhost local]# tar -zxf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8
[root@localhost libmcrypt-2.5.8]# ./configure #默认安装目录 /usr/local/lib
[root@localhost libmcrypt-2.5.8]# # make && make install


加密方式扩展库mhash

> 下载

[root@localhost ~]# wget -c https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz

> 解压

[root@localhost ~]# tar -zxvf mhash-0.9.9.9.tar.gz

> 进入解压后的源码目录编译并安装

[root@localhost mhash-0.9.9.9]# cd mhash-0.9.9.9
[root@localhost mhash-0.9.9.9]# ./configure #默认安装目录 /usr/local/lib
[root@localhost mhash-0.9.9.9]# make && make install


加密方式扩展库mcrypt

> 下载

[root@localhost ~] cd /usr/local
[root@localhost local]# wget -c https://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

> 解压

[root@localhost local]# tar -zxvf mcrypt-2.6.8.tar.gz
> 由于在编译mcrypt时,会找不到libmcrypt的链接库,导致无法编译,因为Libmcrypt的链接库在/usr/local/lib文件夹下
> 所以,在编译mcrypt时要加入LD_LIBRARY_PATH=/usr/local/lib导入间接库
> 进入解压后的源码目录编译并安装
[root@localhost ~]# cd mcrypt-2.6.8
[root@localhost mcrypt-2.6.8]# ./configure LD_LIBRARY_PATH=/usr/local/lib
[root@localhost mcrypt-2.6.8]# make && make install


正式编译php7.0

> 创建php目录
[root@localhost ]# mkdir -p /usr/local/php


> 下载
[root@localhost ~] cd /usr/local
[root@localhost local]# wget -c http://cn2.php.net/distributions/php-7.0.6.tar.gz

> 解压

[root@localhost local]# tar xzvf php-7.0.6.tar.gz  && cd php-7.0.6
[root@localhost php-7.0.6]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --with-bz2 --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --without-pear --with-gettext  --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx  --enable-opcache=no

编译选项介绍列表

[root@localhost php-7.0.6]# ./configure \
    --prefix=/usr/local/php \                                  [php安装的根目录]
    --with-config-file-path=/usr/local/php/etc \               [php的配置目录]
    --with-mcrypt \                                         [是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启]
    --with-mhash \                                            [Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启]
    --with-openssl \                                        [OpenSSL 是一个安全套接字层密码库]
    --with-mysqli=/usr/local/mysql/bin/mysql_config \                          [php依赖mysql库]
    --with-gd \                                                [gd库]                                                
    --with-iconv \                                            [关闭iconv函数,种字符集间的转换]                        
    --with-zlib \                                            [zlib是提供数据压缩用的函式库]
    --enable-zip \                                            [打开对zip的支持]
    --disable-debug \                                        [关闭调试模式]
    --disable-rpath \                                        [关闭额外的运行库文件]
    --enable-xml \                                            [开启xml扩展]
    --enable-bcmath \                                        [打开图片大小调整,用到zabbix监控的时候用到了这个模块]
    --enable-shmop \                                        [共享内存]
    --enable-sysvsem \                                        [内存共享方案]
    --enable-mbregex \                                        [开启多字节正则表达式的字符编码。]
    --enable-mbstring \                                        [开启多字节字符串函数]
    --enable-pcntl \                                        [PHP的进程控制支持实现了Unix方式的多进程创建]        
    --enable-sockets \                                        [开启套节字]
    --with-curl \                                           [允许curl扩展]
    --with-jpeg-dir \                                        [指定jpeg安装目录yum安装过后不用再次指定会自动找到]
    --with-freetype-dir \                                    [指定freetype安装目录yum安装过后不用再次指定会自动找到]
    --enable-opcache = no \                                      [开启使用opcache缓存]
    --enable-fpm \                                            [开启fpm]
    --with-fpm-user=nginx \                                 [php-fpm的用户]
    --with-fpm-group=nginx \                                [php-fpm的用户组]
[root@localhost php-7.0.6]# make && make install

#安装过程可能出现的错误

1.make: *** [ext/zip/lib/zip_add.lo]

1.png

vim /etc/ld.so.conf.d/local.conf //创建local.conf
/usr/local/lib //添加输入
ldconfig -v //执行命令
make clean #清除make记录
在重新执行make
https://www.cnblogs.com/succeed/p/6240487.html

2.make: *** [sapi/cli/php]

2.png

make clean #清除make记录
ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/
make ZEND_EXTRA_LIBS='-liconv' 
https://blog.csdn.net/m0_37886429/article/details/78349709


安装成功后,配置php

[root@localhost ]# cd /usr/local/php-7.0.6
[root@localhost ]# cp php.ini-development /usr/local/php/etc/php.ini
[root@localhost ]# cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
[root@localhost ]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

#php-fpm随系统自启动

[root@localhost ]# cd /usr/local/php-7.0.6
[root@localhost ]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-7.0.6]# chmod +x /etc/init.d/php-fpm
[root@localhost php-7.0.6]# chkconfig --add php-fpm
[root@localhost php-7.0.6]# chkconfig php-fpm on

#php-fpm启动指定php.ini

[root@localhost ]# /etc/init.d/php-fpm start -c /usr/local/php/etc/php.ini

#检测 php-fpm 系统服务是否启动成功

[root@localhost php-7.0.6]# chkconfig --list | grep php-fpm


注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 
      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。
php-fpm        0:关1:关2:开3:开4:开5:开6:关
 > 可见服务已经在 第2 到 第5 运行等级打开
 > 同样你也可以禁用 `php-fpm` 开机启动
[root@localhost php-7.0.6]# chkconfig php-fpm off

#查看php-fpm启动用户是否是nginx 之前在配置中指定了 确认一下

[root@localhost php-7.0.6]# vim /usr/local/php/etc/php-fpm.d/www.conf
user = nginx
group = nginx

启动php-fpm

[root@localhost php-7.0.6]# /etc/init.d/php-fpm start
Starting php-fpm  done #启动成功
1.)配置nginx.conf #看下面配置
2.)配置php.ini文件,让nginx支持php
[root@localhost ]# vim /usr/local/php/etc/php.ini
让nginx支持php
在文件的末尾添加 cgi.fxi_pathinfo = 1
#####################################################
#查看进程
[root@Cocolait ]# ps aux|grep php-fpm


1.)配置nginx.conf

参考博文: https://typecodes.com/web/centos7nginxhttpsspdy.html
简单配置如下
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #隐藏Nginx版本信息,禁止网站目录浏览
    server_tokens off;
    autoindex off;
    #隐藏Nginx版本信息,禁止网站目录浏览 END
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  192.168.1.88;
        # 访问favicon.ico和robots.txt不跳转(把这两个文件存放在上级目录/www中)
        location ~ \.php$ {
            root           /www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
            include        fastcgi_params;
        }
        location / {
            root   /www;
            index  index.php index.html index.htm;
       }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /www;
        }
    }
}


2.)配置php.ini文件,让nginx支持php

[root@Cocolait ]# vim /usr/local/php/etc/php.ini
让nginx支持php
在文件的末尾添加 cgi.fxi_pathinfo = 1

3.来一张效果图吧。(*^__^*) 嘻嘻……

1.png


声明:资料信息来源互联网,感谢贡献者。

参考博文:

http://www.cnblogs.com/joshua317/p/5482283.html

http://www.tuicool.com/articles/BFJz6zN

点赞
说说你的看法

所有评论: (0)