摘要:一.关于LNMP环境以及wdOS系统的介绍: LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos等。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。 Mysql是一个小型关系型数据库管理系统。
一.关于LNMP环境以及wdOS系统的介绍:
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。
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28