lnmp编译安装
lnmp超详细编译安装教程
linux采用的是centos,软件包统一放在/usr/local/src目录下.由于 centos源比较老,而且更新起来也比较慢,此处建议你换成163源。提示:如果你真打算采用这种编译安装php的话,请至少安排半天时间来完成。如果是在虚拟机里测试的话,建议调大内存以让时间更短,我本机给了虚拟机2G内存。在安装完成后可以再设置小点内存跑.安装的时候请按顺序安装。
更改yum源
#更换到163源
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo #先更新一下
yum clean all
yum makecache
yum update(这步比较慢,建议先不要运行)
准备lnmp安装环境
先采用yum包安装一些依赖的东西
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make cmake libtool* git tree
下载一些软件都放在/usr/local/src下
安装libiconv
cd /usr/local/src
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local
make && make install
在我make && make install的时候出现错误了error: ‘gets’ undeclared here (not in a function)。如果你不要遇到遇到,如果遇到请做如下修改:(国外的这文章记录了http://www.itkb.ro/kb/linux/patch-libiconv-pentru-glibc-216)
cd libiconv-1.14/srclib
编辑stdio.in.h文件,搜索这句话
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
把这句删除换成如下几句
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
然后
cd ..
make && make install
下载并安装libmcrypt
cd /usr/local/src
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install
cd libltdl/
./configure --enable-ltdl-install
make
make install
下载并安装mbash 网址:http://mhash.sourceforge.net/,下载下来之后用winscp这种工具传到linux的/usr/local/src目录下
cd /usr/local/src
tar -jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make
make install
下载并安装mcript
cd /usr/local/src
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/ #注意一下这步运行下,不然下面可能报错
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./configure
make
make install
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
安装mysql(mysql5.6.13)
先检查一下mysql是否已经存在了,如果存在就删除mysql
rpm -qa | grep mysql
#我的显示如下(如果没有任何显示就表示没有mysql呢)
mysql-libs-5.1.73-3.el6_5.i686
#如果存在就卸载mysql
rpm -e mysql-libs-5.1.73-3.el6_5.i686 --nodeps
#此时再运行
rpm -qa | grep mysql
#发现没有任何显示
添加一个mysql用户(nologin用户并且没有家目录)
useradd -M -s /sbin/nologin mysql
初次编译mysql的时候时间比较长,请耐心等待吧
cd /usr/local/src
tar -zxf mysql-5.6.13.tar.gz
cd mysql-5.6.13
#注意下面是cmake .注意点
cmake .
make && make install
#复制mysql配置文件
cp support-files/my-default.cnf /etc/my.cnf
#创建系统数据库表
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
#更改权限
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql:mysql data #把mysql添加到系统服务中去
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#启动mysql启动的时候,一直不动的话按下enter.,就行了
/usr/local/mysql/bin/mysqld_safe --user=mysql &
#查看mysql是否启动
netstat -tunpl | grep 3306
#或者pstree,看到有mysqld进程也行
#修改mysql密码
/usr/local/mysql/bin/mysqladmin -u root password "xxxxx"
#进入mysql中删除空密码和匿名用户
/usr/local/mysql/bin/mysql -u root -p
select host,user,password from mysql.user;
delete from mysql.user where password="" or user="";
flush privileges;
#也可以在mysql修改用户密码(只是说明一下)
set password form 'root'@'localhost' = password('123456');
#关闭mysql的时候可以使用
/usr/local/mysql/bin/mysqladmin -u root -p shutdown #把mysql添加到开机启动
vim /etc/rc.local
#在最后再加一行
/usr/local/mysql/bin/mysqld_safe --user=mysql & #最后做一个软链接方便使用mysql ln -s /usr/local/mysql/bin/mysql /usr/bin/
nginx安装(此处我本人安装了基于nginx改版的tengine,nginx的安装跟这基本完全一样,你完全可以参照并完整安装)
nginx安装前编译安装pcre zlib openssl[openssl安装用./config]
pcre安装
cd /usr/local/src
tar -jxf pcre-8.31.tar.bz2
cd pcre-8.31
./configure
make && make install
zlib安装
cd /usr/local/src
tar -zxf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install
openssl安装
cd /usr/local/src
tar -zxf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config
make && make install
//注意这时我安装tengine了,如果你用nginx,完全参照安装就行
cd /usr/local/src
useradd -M -s /sbin/nologin nginx
#如果是nginx,请把这里换成nginx
tar -zxf tengine-2.0.1.tar.gz
cd tengine-2.0.1
#注意的是with-pcre这些都指向/usr/local/src这种目录,这非常奇怪
./configure --with-pcre=/usr/local/src/pcre-8.31 --with-http_ssl_module --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c --with-http_concat_module=shared(注:如果是nginx的话不需要 --with-http_concat_module=shared) make && make install
#做软链接方便nginx启动
ln -s /usr/local/nginx/sbin/nginx /usr/bin/
#修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
把#user nobody 改成 user nginx;
#测试一下nginx配置文件
nginx -t
#启动nginx
nginx #说一下nginx启动的一些事情
#一般来说在nginx的配置文件修改后进行如下操作,nginx -t检测一下配置文件是否正确,如果正确的话
#再使用nginx -s reload 使nginx平滑启动 #把nginx添加到开机启动
vim /etc/rc.local
#在最后新加一行
/usr/local/nginx/sbin/nginx
#查看nginx是否启动
netstat -tunpl | grep 80
pstree 看下有没有nginx就行了
安装php
cd /usr/local/src
useradd -M -s /sbin/nologin php
tar -jxf php-5.5.12.tar.bz2
cd php-5.5.12 ./configure --enable-opcache --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring=all --with-pdo-mysql --enable-sockets --enable-mbstring --enable-fpm --with-curl --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-gd --with-mcrypt --with-libxml-dir=/usr --enable-xml --with-openssl --with-iconv=/usr/local/iconv make ZEND_EXTRA_LIBS='-liconv'
make install cp php.ini-development /usr/local/php/etc/php.ini #配置php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
将
user = nobody
group = nobody
改为
user = php
group = php
#启动php-fpm
/usr/local/php/sbin/php-fpm
#把php-fpm添加到开机启动
vim /etc/rc.local
#最后一行加上
/usr/local/php/sbin/php-fpm
#修改nginx配置文件使之支持php
vim /usr/local/nginx/conf/nginx.conf
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
修改为
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} #也顺便把gzip给开启下吧
gzip on前面的#去掉 修改完配置之后
nginx -s reload
ok,现在来测试一下环境
cd /usr/local/nginx
cd html
vim test.php
写上
<?php
phpinfo();
然后访问一下localhost/test.php,正常的话,就一切正常了
如果出问题的话,请看nginx有没有启动,php-fpm有没有启动
注明几个问题如果修改php配置文件的时候,需要重启php-fpm就可以了
#先关闭php-fpm pkill php-fpm #然后运行 /usr/local/php/sbin/php-fpm #就可以了可以看到php-fpm就启动了pstree可以看到这个进程
pstree
为了更方便的使用php和php-fpm,我做了两个链链接
ln -s /usr/local/php/sbin/php-fpm /usr/bin/
ln -s /usr/local/php/bin/php /usr/bin/
lnmp安装就彻底完成了,有什么问题可以联系我。[这里没没讲到如何优化一些配置的问题,以后可以会写文章分析]
在些也特别说明一下nginx如何支持path_info这种形式。配置文件中可以这样写。当然可能对你不需要
location ~ ^(.+\.php)(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
lnmp编译安装的更多相关文章
- LNMP编译安装教程
LNMP编译安装教程 此次安装在Centos上,我采用的CentOS的版本是:CentOS release 6.5 (Final) 可以通过以下命令查看:lsb_release -a 一.准备工作: ...
- LNMP编译安装(centos7+nginx1.9+mysql5.6+php5.5)
LNMP编译安装 # 需先配置IP # 软件包的路径 /usr/local/src yum install -y libjpeg-devel libpng-devel freetype-devel c ...
- linux lnmp编译安装
关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled ...
- LNMP编译安装基于centos7.2
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...
- CentOS6.8 x64+Nginx1.3.8/Apache-httpd 2.4.3+PHP5.4.8(php-fpm)+MySQL5.5.28+CoreSeek4.1源码编译安装
系统为CentOS6.8 x64服务器版精简安装. 准备工作 部署安装目录 /usr/local/* /var/lib/* /var/lib64/* 下载源文件 #cd /usr/local/src ...
- centos下编译安装lnmp
centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...
- 在树莓派1B上编译安装lnmp服务器
最近一周给部门内部搭建考试系统,选择使用PHPEMS.这是个开源的系统,唯一缺点是PHP的版本比较低,只能使用5.2或5.3.而我的树莓派系统更新后使用apt-get安装得到的PHP版本为5.4.由于 ...
- CentOS编译安装LNMP环境
这里是教大家如何在centos下利用源码编译安装LNMP环境. 工具/原料 centos服务器一台 自用电脑一台 准备篇 配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 配置防火墙,开 ...
- LNMP之编译安装PHP出现的问题
2010年以前,互联网公司最常用的Web服务组合就是LAMP(即Linux.Apache.MySQL.PHP),近几年随着Nginx Web服务的逐渐流行,又出现了新的Web服务环境组合--LNMP ...
随机推荐
- spring.net xml 命名空间
<objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org ...
- 《大型网站系统与Java中间件实践》读书笔记
分布式系统的基础知识 阿姆达尔定律 多线程交互模式 互不通信,没有交集,各自执行各自的任务和逻辑 基于共享容器(如队列)协同的多线程模式->生产者-消费者->队列 通过事件协同的多线程模式 ...
- LeetCode "Largest Divisible Subset" !
Very nice DP problem. The key fact of a mutual-divisible subset: if a new number n, is divisible wit ...
- python getopt使用
函数getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:] shortopts 短格式 (-) longopts 长格式(--) 命令 ...
- Xcode 自动升级到8.21后坑-Abort trap: 6
pod install or pod update show this message:Generating Pods project Abort trap: 6solve method: udo g ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- 创建javascript对象的几种方式
ECMAScript提供的对象有:String.Date.Array.Boolean.Math.Number.RegExp.Global 程序中需要用到很多自定义的js对象 1.直接创建 var ob ...
- Python基础语法,基本数据类型及相关操作
---恢复内容开始--- python文件 文件开头要有 #!/usr/bin/ python --在linux中是告诉系统phthon的路径是在/usr/bin/ python目录下 ...
- CRM 2016 自定义对话框
项目背景: CRM表单在操作时会有一些提示,或者交互的对话框. 直接 使用js的alert 和 confirm,网格上有些不协调. 以前在项目中使用过jquery 的,但是CRM官方不建议使用jqu ...
- javascript匿名函数应用
1.给指定对象新增一些属性的写法: /*给一个对象增加属性*/ var myDate=(function(obj){ obj.addName=function(name){ this.name=nam ...