新网Logo
首页>虚机资讯>

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)

登录 注册

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)

  • 来源:新网
  • 更新日期:2018-03-09

摘要:一.关于LNMP环境以及wdOS系统的介绍:  LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos等。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。  Mysql是一个小型关系型数据库管理系统。

一.关于LNMP环境以及wdOS系统的介绍:

t0102992411484cfe36.jpg

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos等。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。  Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言.这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统.

 

作为centOS编译后的版本wdOS除了集成lamp,lnmp,lnamp一键安装包,还去除了大部分不常用软件包,筛选了系统基本包和web应用基础包,并进行了更新和优化,同时增加一些较常用的工具包,便于日常维护中使用和排错,另外,wdOS系统还集成了功能强大的虚拟主机管理系统wdcp以及wdcp管理后台,可以说操作以及安装都非常简单方便。

 

本文这次主要是针对在wdOS的纯系统下进行源码编译安装LNMP环境做了一些相应的记录。安装的顺序为先安装mysql,再安装php,最后安装nginx。

 

二.安装前的准备工作:

 

1.创建安装时需要用到的目录:

 

1)创建php的安装目录:mkdir/usr/local/php

 

2)创建mysql的安装目录:mkdir/usr/local/mysql

 

2.安装mysql,php,nginx编译时需要用到的编译库文件:

 

1)安装mysql5.5.25a编译需要使用的cmake编译工具:

 

把cmake源码包下载到/usr/local/src这个目录下:

 

说明:mysql5.0以后的版本不再使用./configure来编译,而是使用cmake这个编译工具

 

解压缩cmake源码包:

 

完成后cdcmake-2.8.4进入这个压缩后的目录下:

 

设置./bootstrap:

 

使用gmake命令进行编译

 

gmakeinstall进行安装初始化:

 

2)安装编译php所需要的库文件

 

yum-yinstalllibeventlibevent-devellibxml2libxml2-devellibmcryptlibmcrypt-devellibmcryptlibmcrypt-develcurl-devellibpng-devellibtool-ltdl-devel(比较多,我这里一次性下载了)

 

3)安装nginx编译时需要用到的编译库文件

 

openssl-devel,glib2-devel,pcre-devel,bzip2-devel以及gzip-devel

 

不过,wdOS系统下默认安装了openssl-devel这个库文件

 

所以剩下的使用命令yuminstallglib2-develpcre-develbzip2-develgzip-devel下载安装即可

 

三.安装过程:

 

第一步:源码安装mysql5.5.25a;

 

在下载mysql5.5.25a源码包之前先添加mysql用户以及mysql用户组:

 

完成后进入到/usr/local/src这个目录下,下载mysql源代码:

 

wget-chttp://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.25a.tar.gz

 

tar-zxvfmysql-5.5.25a.tar.gz进行解压缩:

 

进入解压缩后的mysql-5.5.25a这个目录下设置编译参数:

 

附:我使用的编译参数:

 

cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-----指定mysql的安装目录

 

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock---这个是指定mysql服务器启动后,联机套接字文件所处的位置和文件名

 

-DDEFAULT_CHARSET=utf8-----使用utf8字符

 

-DDEFAULT_COLLATION=utf8_general_ci

 

-DWITH_EXTRA_CHARSETS=all------校验字符

 

-DWITH_MYISAM_STORAGE_ENGINE=1-------安装myisam存储引擎

 

-DWITH_INNOBASE_STORAGE_ENGINE=1----安装innodb存储引擎

 

-DWITH_MEMORY_STORAGE_ENGINE=1

 

-DWITH_READLINE=1

 

-DENABLED_LOCAL_INFILE=1----安装数据库分区

 

-DMYSQL_DATADIR=/var/mysql/data

 

-DMYSQL_USER=mysql

 

设置完成后进行make编译

 

然后makeinstall进行安装:

 

安装完成之后,修改mysql主配置文件:

 

修改mysql文件的权限以及文件的所有者为mysql用户

 

设置软连接使mysql和mysqladmin的bin命令能在shell中直接运行

 

创建mysql的数据以及日志存放的目录,并设置目录的所有者为mysql用户

 

进入cd/usr/local/src//mysql-5.5.25a进入这个目录下

 

cpsupport-files/my-medium.cnf/etc/my.cn拷贝配置文件到/etc目录下并命名为my.cn

 

进入该配置文件/etc/my.cn,做下面的修改

 

在[mysqld]字段后面添加下面四句:

 

进入到mysql安装目录下的脚本目录下的脚本目录:/usr/local/mysql-5.5.25a/scripts

 

修改mysql_install_db这个文件的权限:

 

利用mysql_install_db脚本生成新的mysql授权表:

 

./mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/var/mysql/data&

 

添加启动脚本:

 

cp/usr/local/src/mysql-5.5.25a/support-files/mysql.server/etc/rc.d/init.d/mysqld

 

修改启动脚本:添加basedir以及datadir的路径:

 

修改启动脚本的权限:

 

启动数据库:

 

检查数据库的默认侦听端口3306是否开启:

 

第二步:源码编译安装php5.3.10(FastCGI模式)

 

进入/usr/local/php这个目录下载php源码包

 

wgethttp://cn.php.net/get/php-5.3.10.tar.gz/from/this/mirror

 

添加php用户组和用户账号:(我这里以fpm用户组和fpm用户名为例)

 

解压缩php源代码包:

 

进入解压好的php-5.3.10这个目录配置相应的编译参数:

 

附:具体的参数:

 

./configure--prefix=/usr/local/php--with-mysql=/usr/local/mysql--enable-mbstring--enable-fpm--with-iconv-dir=/usr/local/libiconv--enable-xml--with-curl--with-curlwrappers--with-mhash--with-mcrypt--with-gd--enable-gd-native-ttf--with-xmlrpc–with-zlib

 

不出意外的话,会看到下图的结果:

 

编译make:(这个过程比较耗时)

 

编译完成的最后会出现下图:

 

开始安装:makeinstall

 

复制php.ini到php安装目录php.ini-development到/usr/local/php/lib这个目录下并重命名为php.ini:

 

说明:php.ini是PHP在启动时会读取的配置文件,我这里没有做配置。另外,php5.0版本之后文件的名字发生了改变,其中php.ini-production对应于php.ini-recommended;而php.ini-development对应于php.ini-dist。php.ini-dist适合开发程式使用(也就是测试使用),php.ini-recommended拥有较高的安全性设定,适合上线当产品使用

 

做方便php的运行的链接,不用配置环境变量

 

完成之后,我们就可以查看php的版本:

 

第三步:源码编译安装Nginx

 

进入/usr/local/src这个目录下载nginx源码:

 

wget-chttp://nginx.org/download/nginx-1.0.4.tar.gz

 

解压缩nginx源代码包:tar-zxvfnginx-1.0.4.tar.gz

 

进入解压好的nginx-1.0.4这个目录配置相应的参数:

 

附:环境参数:(根据需要选择)

 

./configure

 

--user=nginx

 

--group=nginx

 

--prefix=/usr/share

 

--sbin-path=/usr/sbin/nginx

 

--conf-path=/etc/nginx/nginx.conf

 

--error-log-path=/var/log/nginx/error.log

 

--http-log-path=/var/log/nginx/access.log

 

--pid-path=/var/log/run/nginx.pid

 

--lock-path=/var/log/lock/subsys/nginx

 

--with-http_ssl_module

 

--with-http_realip_module

 

--with-http_addition_module

 

--with-http_sub_module

 

--with-http_dav_module

 

--with-http_flv_module

 

--with-http_gzip_static_module

 

--with-http_stub_status_module

 

--with-http_perl_module

 

--with-mail

 

--with-mail_ssl_module

 

进行编译:(这个时间相对php要短很多)

 

make

 

进行安装初始化;

 

makeinstall

 

第四步:整合nginx和php:

 

修改进程管理器php-fpm的配置:

 

说明:在LAMP平台下,php是被编译成为模块然后被apache所调用;而在LNMP平台下,php是被编译成二进制文件执行,这样就需要通过fastCGI技术来实现nginx和php的整合。这里通过使用fastCGI的一个进程管理器php-fpm,php5.3.3以后的版本已经内置了php-fpm,使用的时候只需要加入参数--enable-fpm就可以由此整合php与nginx

 

进入php-fpm的主配置文件php-fpm.conf,找到图中的部分做相应的修改:

 

修改php-fpm能通过unixdomainsocket的方式实现快速连接

 

说明:平时大家配置的nginx连接fastcgi的方式都是通过tcp来实现连接的,现在我们尝试使用的是一种速度更快的方法即unixdomainsocket:

 

cd/var/run进入该目录,创建一个php-fpm.sock文件并修改其所有者为nginx:

 

进入php-fpm管理器的主配置文件做下面的修改:

 

修改后,使用命令php-fpm启动php,启动后可以使用命令psaux|grepphp查看php进程是否开启:

 

下一步就是修改nginx的主配置文件/etc/nginx/nginx.conf,增加下面这句:

 

fastcgi-passunix:/var/run/php-fpm.sock

 

最后就是在/usr/share/html这个目录下创建一个文件命名为info.php,在里面添加以下测试内容:

 

 

phpinfo();

 

?>

 

为了测试php能否与mysql协同工作,在该目录下另外创建一个文件命名为test.php,在里面添加以下的测试内容:

 

这样在/usr/share/html这个目录下就新建了两个文件

 

完成后,/usr/sbin/nginx-sreload重启nginx服务

 

二.测试结果:(逐步测试)

 

安装完mysql之后,root用户登录时的界面:

 

登录后showdatabases查看一下当前存在的数据库:(注意musql语句以;结尾)

 

安装完nginx之后,在本机的浏览器输入http://ip地址(我这里以192.168.1.111为例)会看到niginx的经典测试页面:

 

整合nginx和php之后,在浏览器输入http://192.168.1.111/info.php可以看到php的测试页面:

 

现在再来看看php能否和mysql协同工作,在浏览器输入http://192.168.1.111/test.php就可以验证两者是否能正常工作了:

 

四.可能遇到的问题的解决方案:

 

1.第一次下载nginx源代码包的时候,由于网速不稳定遇到wget断开再重新连接的情况,原本以为没什么问题,结果在解压缩时提示"unexpectedendoffile"的错误:

 

后来我使用wget-c+网址重新下载,再解压缩就没这个问题了。使用wget-c断点续传,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。

 

2.启动nginx时提示下图的错误:

 

这种情况出现的原因是因为nginx重复启动了,如果是需要重新启动nginx可以使用命令/usr/sbin/nginx-sreload

 

3.在编译php时,出现undefinedreferenceto`php_ob_gzhandler_check\'这样的错误提示:

 

解决的方法为:cd/usr/local/进入这个目录下添加一个新目录mkdirlibiconv

 

下载源代码:

 

wget-chttp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz

 

解压缩该libiconv压缩包tar-zvxflibiconv-1.13.1.tar.gz

 

由当前目录cd进入libiconv-1.13.1目录,配置编译时的参数:

 

./configure--prefix=/usr/local/libiconv

 

之后就是make,makeinstall编译安装,完成后回到原来php编译前在configure参数后面添加–with-zlib重新编译即可

 

4.还需要注意的一点是,niginx和php这里并没有设置开机自启动,所以每一次开机启动时都需要手动启动php以及nginx。