centos7.4编译安装LNMP

 一、下载阿里云网络yum源

[root@centos7_4 ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo -P /etc/yum.repos.d/    #这里安装的是阿里的网络源,epel扩展源,也可以安装阿里的,但是阿里的epel源有些包不全,所以下面就直接用yum安装网络epel源
[root@centos7_4 ~]# yum -y install epel-release
[root@centos7_4 ~]# yum clean all;yum makecache

二、编译安装nginx

 源码编译安装nginx
2.1 安装依赖包:
[root@centos7_4 ~]# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*

2.2 创建nginx运行用户
[root@centos7_4 ~]# useradd -M -s /sbin/nologin nginx

下载pcre包

[root@centos7_4 ~]# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.zip

[root@centos7_4 ~]# unzip pcre-8.42.zip -d /usr/local/src/

2.3 下载nginx源码包并解压
[root@centos7_4 ~]# wget http://nginx.org/download/nginx-1.14.0.tar.gz

[root@centos7_4 ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/local/src/

[root@centos7_4 ~]# cd /usr/local/src/nginx-1.14.0/

[root@centos7_4 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx \
--with-http_dav_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_ssl_module \
--user=nginx \
--group=nginx \
--with-pcre=/usr/local/src/pcre-8.42            #这个是可选项,如果yum安装了依赖包这里也可以不用

2.4 编译安装
[root@centos7_4 nginx-1.14.0]# make && make install

2.5 上面报错不用管,echo $? 验证是否成功

[root@centos7_4 nginx-1.14.0]# echo $?

0

2.6 添加环境变量,优化nginx服务

[root@centos7_4 ~]# /usr/local/nginx/sbin/nginx -t #检查nginx语法是否正确

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

[root@centos7_4 ~]# vim /etc/profile    #添加环境变量,/usr/local/nginx/sbin/nginx #安装好的启动路径

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

[root@centos7_4 ~]# source /etc/profile
[root@centos7_4 ~]# nginx

[root@centos7_4 ~]# netstat -antup|grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7417/nginx: master

[root@centos7_4 ~]# vim /etc/init.d/nginx #配置启动脚本

#!/bin/bash

# chkconfig: 2345 99 20

#description: nginx-server

nginx=/usr/local/nginx/sbin/nginx

case $1 in

start)

netstat -anptu | grep nginx

if [ $? -eq 0 ]

then

echo "nginx service is already running"

else

echo "nginx Service started successfully "

$nginx

fi

;;

stop)

$nginx -s stop

if [ $? -eq 0 ]

then

echo "nginx service closed successfully"

else

echo "nginx server stop fail,try again"

fi

;;

status)

netstat -anlpt | grep nginx

if [ $? -eq 0 ]

then

echo "nginx server is running"

else

echo "nginx service not started "

fi

;;

restart)

$nginx -s reload

if [ $? -eq 0 ]

then

echo "nginx service restart successfully "

else

echo "nginx server restart failed"

fi

;;

*)

echo "please enter {start restart status stop}"

;;

esac

[root@centos7_4 ~]# chmod +x /etc/init.d/nginx

[root@centos7_4 ~]# chkconfig --add nginx

[root@centos7_4 ~]# chkconfig nginx on

 三、安装mysql

3.1 卸载系统自带的mariadb*
[root@centos7_4 ~]# yum -y remove mariadb* boost-*

3.2 安装依赖包
[root@centos7_4 ~]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel           

3.3 下载源码包
[root@centos7_4 ~]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.20.tar.gz

3.4 解压源码包
[root@centos7_4 ~]# tar zxf mysql-boost-5.7.20.tar.gz -C /usr/local/src/

3.5 配置编译并安装
[root@centos7_4 ~]# cd /usr/local/src/mysql-5.7.20/

[root@centos7_4 mysql-5.7.20]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/mysql-5.7.20/boost/boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql

 

编译并安装

[root@centos7_4 mysql-5.7.20]# make
[root@centos7_4 mysql-5.7.20]# make install
3.6 创建数据库用户和数据目录
[root@centos7_4 ~]# useradd -M -s /sbin/nologin -r mysql  
[root@centos7_4 ~]# mkdir -p /usr/local/mysql/data          #创建数据存储目录
[root@centos7_4 ~]# chown -R mysql.mysql /usr/local/mysql/     #更改属主数组为MySQL

3.7 配置my.cnf文件
[root@centos7_4 ~]# vim /etc/my.cnf             #以下是简单配置
[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port=3306

socket=/usr/local/mysql/mysql.sock

symbolic-links=0

character-set-server=utf8

pid-file=/usr/local/mysql/mysqld.pid     

log-error=/var/log/mysqld.log

 

3.8 配置MySQL启动脚本
[root@centos7_4 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld                      #复制启动脚本到/etc/init.d
[root@centos24 mysql-5.7.20]# ll /etc/init.d/mysqld                          #默认拥有执行权限
-rwxr-xr-x 1 root root 10576 Jun  7 19:27 /etc/init.d/mysqld
[root@centos7_4 mysql]# chkconfig --add mysqld                #添加到开机启动项
[root@centos7_4 mysql]# chkconfig mysqld on                   #添加开机自启动
[root@centos7_4 mysql]# vim /etc/init.d/mysqld                #修改路径
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
[root@centos7_4 mysql]# vim /etc/profile                       #配置环境变量
export PATH=$PATH:/usr/local/mysql/bin
[root@centos7_4 mysql]# source /etc/profile                 #加载变量立即生效

3.9 安全初始化数据库

[root@centos7_4 ~]#  touch /var/log/mysqld.log

[root@centos7_4 ~]#  chmod  777 /var/log/mysqld.log
[root@centos7_4 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data #这样初始化之后,数据库是没有密码的

如果要想初始化之后分配临时密码,可以将--initialize-insecure 红色部分去掉,初始化之后,可以分配到一个临时密码。

[root@centos7_4 ~]# /etc/init.d/mysqld start     #启动数据库

Starting MySQL. SUCCESS!

[root@centos7_4 ~]# mysql -uroot         #登录数据库修改root用户密码

mysql> alter user 'root'@'localhost' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

四、安装PHP

4.1 安装依赖包
[root@centos7_4 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c net-snmp-devel libjpeg-devel php-ldap openldap-devel openldap-servers openldap-clients freetype-devel gmp-devel

4.2 下载PHP源码包
[root@centos7_4 ~]# wget http://cn2.php.net/distributions/php-7.2.6.tar.gz

4.3 解压压缩包
[root@centos7_4 ~]# tar zxf php-7.2.6.tar.gz -C /usr/local/src/

[root@centos7_4 ~]# cd /usr/local/src/php-7.2.6/

4.4 生成配置文件
[root@centos7_4 php-7.2.6]# ./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysqli \
--with-pdo-mysql \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-curl \
--with-gd \
--with-gmp \
--with-zlib \
--with-xmlrpc \
--with-openssl \
--without-pear \
--with-snmp \
--with-gettext \
--with-mhash \
--with-libxml-dir=/usr \
--with-ldap \
--with-ldap-sasl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-xml \
--enable-fpm  \
--enable-ftp \
--enable-bcmath \
--enable-soap \
--enable-shmop \
--enable-sysvsem \
--enable-sockets \
--enable-inline-optimization \
--enable-maintainer-zts \
--enable-mbregex \
--enable-mbstring \
--enable-pcntl \
--enable-zip \
--disable-fileinfo \
--disable-rpath \
--enable-libxml \
--enable-opcache \
--enable-mysqlnd \

 

configure: error: Cannot find ldap libraries in /usr/lib.       #解决方法

[root@centos7_4 php-7.2.6]# cp -frp /usr/lib64/libldap* /usr/lib/    #在重新配置

4.5 编译并安装
[root@centos7_4 php-7.2.6]# make

/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_strdup'

/usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

make: *** [sapi/cli/php] Error 1

 

[root@centos7_4 php-7.2.6]# vim Makefile      #在以EXTRA_LIBS开头的一行结尾添加‘-llber’

EXTRA_LIBS = -lcrypt -lz -lresolv -lcrypt -lrt -lldap -lgmp -lpng -lz -ljpeg -lz -lrt -lm -ldl -lnsl -lpthread -lxml2 -lz -lm -ldl -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lfreetype -lxml2 -lz -lm -ldl -lnetsnmp -lssl -lssl -lcrypto -lm -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcrypt -llber



[root@centos7_4 php-7.2.6]# make

[root@centos7_4 php-7.2.6]# echo $?    

0

[root@centos7_4 php-7.2.6]# make install

[root@centos7_4 php-7.2.6]# echo $?    

0

4.6 配置php配置文件
移动php配置文件的位置,并修改名称

[root@centos7_4 php-7.2.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.conf

复制php.ini文件

[root@centos7_4 php-7.2.6]# cp /usr/local/src/php-7.2.6/php.ini-production /usr/local/php/etc/php.ini

4.7 复制php启动脚本到/etc/init.d/
[root@centos7_4 php-7.2.6]# cp /usr/local/src/php-7.2.6/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

添加执行权限,添加到启动项并设置卡机启动

[root@centos7_4 php-7.2.6]# chmod +x /etc/init.d/php-fpm

[root@centos7_4 php-7.2.6]# chkconfig --add php-fpm

[root@centos7_4 php-7.2.6]# chkconfig php-fpm on

启动php-fpm

[root@centos7_4 ~]# /etc/init.d/php-fpm start

Starting php-fpm  done

五、编辑nginx配置文件

1、  cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

2、  vim  /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
 }
       server {
        listen  80 default;
        return 500;
           }
      include server/*.conf;
}

3、 mkdir  /usr/local/nginx/conf/server

4、配置nginx和php建立连接

    vim /usr/local/nginx/conf/server/www.conf

server {
        listen       80;
        server_name  192.168.1.30;
       location / {
            root   html/blog;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
         location ~* .*\.(php|php5)?$ {
                    root html/blog;
                    fastcgi_pass  127.0.0.1:9000;
                    fastcgi_index index.php;
                    include fastcgi.conf;
        }
        }

六、编写php测试文件

[root@centos7_4 ~]# vim /usr/local/nginx/html/index.php

<?php

phpinfo();

?>

七、登录测试

 

猜你喜欢

转载自www.cnblogs.com/wangyong-blog/p/9627177.html