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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debiancentos等。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 这个目录下:

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第1张图片

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

解压缩cmake源码包

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第2张图片

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

设置./bootstrap

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第3张图片

使用gmake命令进行编译

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第4张图片

gmake install 进行安装初始化:

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第5张图片

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

 yum -y install libevent libevent-devel libxml2 libxml2-devel libmcrypt libmcrypt-devel libmcrypt libmcrypt-devel curl-devel libpng-devel libtool-ltdl-devel (比较多,我这里一次性下载了)

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第6张图片

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

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

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

所以剩下的使用命令 yum  install glib2-devel  pcre-devel  bzip2-devel  gzip-devel 下载安装即可

三.安装过程:

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

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

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

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第7张图片

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第8张图片

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第9张图片

附:我使用的编译参数:

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 编译

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第10张图片

然后make install进行安装:

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第11张图片

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

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

设置软连接使mysqlmysqladminbin命令能在shell中直接运行

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

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

cp  support-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是否开启:

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第12张图片

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

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

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第13张图片

 添加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 

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第14张图片

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第15张图片

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

开始安装:make install

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第16张图片

复制php.iniphp安装目录 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 -c http://nginx.org/download/nginx-1.0.4.tar.gz

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第17张图片

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

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第18张图片

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

./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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第19张图片

进行安装初始化;

make install

第四步:整合nginx和php:

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

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

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

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

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

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

 

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

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

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

 fastcgi-pass  unix:/var/run/php-fpm.sock

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

                   /*注意脚本语言的书写*/
phpinfo(); 
?>

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第20张图片

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

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

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

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第21张图片

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第22张图片

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

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第23张图片

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第24张图片

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

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第25张图片

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第26张图片

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

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

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

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

下载源代码:

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

在WdOS系统下源代码编译安装LNMP环境(Linux+Ngnix+Mysql+Php)_第27张图片

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

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

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

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

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

转载于:https://my.oschina.net/shendingding/blog/71689

你可能感兴趣的:(php,运维,数据库)