说明:

1、        LNMP(Linux+Nginx+MySQL+PHP)是一种高性能的web环境。

2、       该文档只介绍简单的LNMP环境编译安装,并不涉及优化。

2、如完全按照该文档安装,需注意,因由于系统和软件版本不同可能造成安装失败,建议作为参考。

3、该文档只解决了部分常见的安装报错信息,如碰见诡异的报错请百度。

4、该文档涉及的软件只在一台pc机上安装,并未分离。

 

 

 

一、     准备基础软件包

yum -y install gcc gcc-c++ make

 

二、     安装MySQL(版本大于5.5)

前提:

1、        安装MySQL的版本大于5.5时配置工具由make变为cmake

2、        cmake版本需要大于2.8

3、        安装依赖包:

yum -yinstall cmake bison bzip2bzip2-devel bzip2-libs python-devel

4、        准备mysql用户和组:

useraddmysql

mysql下载:https://dev.mysql.com/downloads/mysql/

 

安装:

解压且进入解压目录

配置:

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-DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.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

 

参数详解:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\    #安装路径

 -DMYSQL_DATADIR=/usr/local/mysql/data   \    #数据文件存放位置

 -DSYSCONFDIR=/etc             \    #my.cnf路径

 -DWITH_MYISAM_STORAGE_ENGINE=1    \   #支持MyIASM引擎

 -DWITH_INNOBASE_STORAGE_ENGINE=1    \   #支持InnoDB引擎

 -DWITH_READLINE=1                \    #快捷键功能

 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock      \    #连接数据库socket路径

 -DMYSQL_TCP_PORT=3306                \    #端口

 -DENABLED_LOCAL_INFILE=1           \   #允许从本地导入数据

 -DWITH_PARTITION_STORAGE_ENGINE=1        \   #安装支持数据库分区

 -DEXTRA_CHARSETS=all                  \    #安装所有的字符集

 -DDEFAULT_CHARSET=utf8               \    #默认字符

 -DDEFAULT_COLLATION=utf8_general_ci

 

编译和编译安装:

make && makeinstall

(注意:需要大量内存和cup资源,内存小于1G且没有内存空间时容易安装停止在make50%左右。)

 

给予权限:

setfacl -m u:mysql:rwx -R /usr/local/mysql

setfacl -m d:u:mysql:rwx -R /usr/local/mysql

 

初始化数据库:

MySQL5.6:

/usr/local/mysql/bin/mysql_install_db--user=mysql

MySQL5.7:

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/mysql/data

 

准备配置文件:

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

修改配置文件(简单的配置):

[mysqld]

user=mysql

datadir = /mydata/mysql/data

socket =/tmp/mysql.sock

character-set-server= utf8

collation-server =utf8_unicode_ci

pid-file = /mydata/mysql/data/mysql.pid

port = 3306

[mysqld_safe]

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

pid-file=/var/run/mysqld.pid

 [client]

port            = 3306

socket          = /tmp/mysql.sock

default-character-set=utf8

 

启动和开机自启MySQL:

方法1:源码包方式

启动:/usr/local/mysql/bin/mysqld_safe--user=mysql &

关闭:/usr/local/mysql/bin/mysqladmin-uroot -p shutdown

自启:在/etc/rc.local里加上/usr/local/mysql/bin/mysqld_safe--user=mysql &

方法2:系统管理方式

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

启动:server mysqldstart/stop/restart

自启:chkconfig--add mysqld

 

设置MySQL密码(一般初始化后默认为空,或者初始化生成默认密码。):

方法一(已知密码):/usr/local/mysql/bin/mysqladmin –uroot -p旧密码 password 新密码

方法二(已知或未知密码):

未知密码则用/usr/local/mysql/bin/mysql_secure_installation命令启动MySQL,此时登陆密码为空,可登陆MySQL,在进行以下操作。

/usr/local/mysql/bin/mysql–uroot –p临时密码

>SETPASSWORD=PASSWORD('密码');

>FLUSHPRIVILEGES;

或者

>UPDATEmysql.user SET Password=PASSWORD('密码') where USER='root' and host='root' orhost='localhost';

> FLUSHPRIVILEGES;

 

登陆MySQL:

/usr/local/msyql/bin/mysql –uroot –p密码

 

三、     安装PHP(版本大于等于5.6):

准备包(依赖包可选择yum或者源码方式安装。):

yum -yinstall gcc gcc-c++ make autoconf libjpeg libjpeg-devel libpng libpng-develfreetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-develglib2 glib2-devel bzip2 bzip2-devel ncursesncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidnlibidn-devel openssl openssl-devel openldap openldap-devel nss_ldapopenldap-clients openldap-servers patch perl-CPAN pcre-devel pcre libxsltlibxslt-devel php-mcrypt  libmcrypt libmcrypt-devel mcrypt* mhash

 

源码包:

php下载:http://php.net/downloads.php

libiconv 下载:https://ftp.gnu.org/pub/gnu/libiconv/

libmcrypt下载:ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/

mhash下载:https://sourceforge.net/projects/mhash/files/mhash/

 

安装:

解压且进入安装目录

准备php用户和组:useradd web

配置

./configure --prefix=/usr/local/php--with-config-file-path=/usr/local/php/etc--with-config-file-scan-dir=/usr/local/php/etc/php.d --with-curl--with-freetype-dir --with-gd --with-gettext --with-iconv-dir=/usr/local--with-jpeg-dir --with-kerberos --with-ldap --with-ldap-sasl--with-libdir=lib64 --with-libxml-dir=/usr/lib64 --with-mcrypt --with-mhash--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl--with-pcre-regex=/usr --with-pdo-mysql=mysqlnd --with-pdo-sqlite=shared--with-pear=/usr/local/lib/php --with-png-dir --with-xmlrpc --with-xsl--with-zlib --enable-fpm --enable-bcmath --enable-inline-optimization--enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-pcntl--enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip--disable-rpath --enable-opcache --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-pcntl--enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml--enable-zip --disable-rpath --enable-opcache --disable-debug --enable-shared--enable-ftp --enable-session --enable-fastcgi --disable-fileinfo--with-fpm-user=web --with-fpm-group=web

 

配置详解:

--with-mysql-sock=/var/run/mysql/mysql.sock  //mysqlsock文件

--with-iconv-dir=/usr/local     //iconv库文件,编译安装icon库时需要指定路径

--with-fpm-user=web--with-fpm-group=web       //指定php-fpm进程所属的用户和组,需要创建。

 

编译安装:

ln -s/usr/local/lib/libiconv.so.2 /usr/lib64/

make ZEND_EXTRA_LIBS='-liconv'

报错:

collect2: ld returned 1 exit status  

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

解决方法:

编辑Makefile 大约100行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上-liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv

make clean

make&& make install

 

编译安装php 的时候,执行make报错误

错误:make: *** [ext/mysqli/mysqli.lo] Error 1

[root@localhost php-5.4.9]# mkdir /usr/local/webserver/mysql/include/mysql

 [root@localhostphp-5.4.9]# ln -s /usr/local/webserver/mysql/include/*/usr/local/webserver/mysql/include/mysql
make clean

make&& make install

 

抛错:Generating phar.phar
/usr/local/src/php-5.4.9/sapi/cli/php:error while loading shared libraries: libiconv.so.2: cannot open shared objectfile: No such file or directory
make: *** [ext/phar/phar.php] Error 127

解决的方法如下:

#vi /etc/ld.so.conf

在里面加上一行
/usr/local/lib

/usr/lib64

/usr/lib

然后运行/sbin/ldconfig

#/sbin/ldconfig

编译make

make clean

make&& make install

 

抛错:

Generating phar.phar
chmod: cannot access `ext/phar/phar.phar': No such file or directory
make: [ext/phar/phar.phar] Error 1 (ignored)
Build complete.
Don't forget to run 'make test'.
此处可以忽略不过解决办法如下

#cd  ext/phar/
#cp ./phar.php  ./phar.phar

然后到php5.4文件夹

#make ZEND_EXTRA_LIBS='-liconv'

#make test

#make install

 

基本配置:

配置文件:

cp php解压目录的绝对路径/php.ini-dist /usr/local/php/etc/php.ini      (需要手打!)

 

启动php与Nginx通信进程且开机自启(开机自启需写入/etc/rc.local):

/usr/local/php/sbin/php-fpmstart

或者

/usr/local/php/sbin/php-fpm

 

 

四、     安装Nginx

准备依赖包:

Nginx下载:http://nginx.org/

pcre 下载(最好下载最新的):https://ftp.pcre.org/pub/pcre/

#tar zxvfpcre-8.10.tar.gz
cd pcre-8.10/
./configure --enable-utf8
make && make install

Nginx安装:

解压且进入安装目录

useradd nginx

./configure--user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module--with-http_ssl_module--with-http_flv_module --with-http_gzip_static_module --with-pcre
make && make install

 

Nginx简单配置:

vi/usr/local/nginx/conf/nginx.conf

 

user  nginxnginx;
worker_processes 1;

#相当于cpu个数

error_log  logs/nginx_error.log;

#错误日志

pid        /usr/local/nginx/nginx.pid;

#主进程PID保存文件
worker_rlimit_nofile 65535;

#文件描述符数量

events 
{
  use epoll;

#网络I/O模型,建议linux使用epollFreeBSD使用kqueue

multi_accepton;

#收到一个新连接通知后接受尽可能多的连接。
  worker_connections65535;

#最大允许连接数
}


http 
{
  include       mime.types;
  default_type  application/octet-stream;

 log_format  main  '$remote_addr - $remote_user [$time_local]"$request" '

              '$status $body_bytes_sent"$http_referer" '

              '"$http_user_agent""$http_x_forwarded_for"';

#日志格式

access_log  logs/access.log  main;

#调用格式的日志
sendfile on;

server_tokensoff;
keepalive_timeout 10;

#保持连接时间

  server

{
    listen       80;

#监听端口
    server_name  127.0.0.1;

#主机名,或IP。如果是主机名,要能够DNS解析

location / {

root  html;

#网站主目录。/usr/local/nginx/html/
index index.html index.htm index.php;

#默认网页顺序

}

    location ~.*\.php?$
  {     

root  html; 
      fastcgi_pass  127.0.0.1:9000;

#连接fastcgi,用来解析php语句
      fastcgi_index index.php;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

#启动fast-cgi,可以在每个服务中启动,也可以放入/usr/local/nginx/conf/fastcgi_params,每个server都可以享用
      include fastcgi_params;

#包括fastcgi_params中参数
    }

}
}

 

启动与自启:

自启:

vi /etc/rc.local

/usr/local/nginx/sbin/nginx

启动:

/usr/local/nginx/sbin/nginx

重启:

1)Pkill -HUP nginx (常用)

2)kill -HUP `pgrep -uroot nginx`

3)/usr/local/nginx/sbin/nginx-s reload(主要用这个!)

 

 

五、     验证该环境

方法一:

查看端口,存在3306、80、9000则为环境搭建成功:

netstat -tunl

 

方法二:

开启防火墙对应端口或者关闭防火墙:

iptables -Z

iptables -F

iptables -X

在Nginx默认工作目录添加一个php脚本文件,显示环境信息。

文件内容:

<?php

phpinfo();

?>

访问服务器ip与对于的php脚本文件即可获得环境信息。


见此页面则安装环境成功。

该页面未显示原因很多,防火墙,服务端口没起来,nginx和php配置问题,php网页文件,等等原因,需要一一排查。

Logo

更多推荐