0

0

Linux下PHP 开发环境搭建 -- LAMP

php中文网

php中文网

发布时间:2016-07-11 20:00:36

|

1396人浏览过

|

来源于php中文网

原创

平时写程序时都是在服务器已经搭建好的PHP环境进行的。出于对未知知识的好奇,这几天在自己的机器上搭建起了PHP开发环境。本想轻松顺利的看到phpinfo显示在我的页面上,没想到安装环境时一路的error,不停的google折腾了半天终于看到了phpinfo。在此把遇到的问题总结一下,给大家提供一个参考。
我的OS是ubuntu
9.10,得益于apt-get强大的功能参考了一下这篇文章http://wiki.ubuntu.org.cn/index.php?title=Apache&variant=zh-cn#.E5.AE.89.E8.A3.85LAMP,轻松的完成了LAMP的搭建。
后来手痒痒的不行,把环境全删了重新用源码包搭建了一遍。步骤如下:

(由于用非root账户登录,在需要root权限时用sudo执行)

一、build
-essential的安装
# bulid-essential是编译源码包(C/C++程序)所需的编译工具
# ubuntu 下默认没有安装,ubuntu下可以执行sudo apt-get install build-essential

安装包 build
-essential_11.4.tar.gz
# 安装命令
tar -zxvf build-essential_11.4.tar.gz
cd build
-essential-11.4
./configure
make
sudo make install
make clean

二、MySql的安装

step
.1
ncurses的安装
# 如果缺少ncurses包mysql编译会报No curses/termcap library found的错误
安装包 ncurses-5.6.tar.gz
tar
-zxvf ncurses-5.6.tar.gz
cd ncurses
-5.6
./configure --prefix=/usr/local/ncurses --with-shared --without-debug --enable-widec
make
sudo make install
make clean

step
.2
mysql的安装
安装包
mysql-5.1.42.tar.gz

step
.a
# 安装命令
tar -zxvf mysql-5.1.42.tar.gz
cd
mysql-5.1.42
./configure --prefix=/usr/local/mysql--with-named-curses-libs=/usr/local/ncurses/lib/libncursesw.so.5.6--with-charset=gbk
# --prefix=/usr/local/mysql mysql的安装路径
# 关于mysql配置文件路径的说明:mysql按照下列顺序搜索my.cnf
# /etc,mysql安装目录如 /usr/local/mysql/etc,安装目录下的data目录如 /usr/local/mysql/data,以最先找到的为准。/etc下my.cnf的配置是全局设置
# --with-named-curses-libs=/usr/local/ncurses/lib/libncursesw.so.5.6 ncurses库文件安装路径
# --localstatedir=/usr/local/mysql/var 数据库默认存放路径(可以设置其它路径如,/var/lib/mysql)
# --with-charset=gbk 设置数据库支持中文字符集
make
sudo make install

step
.b
# 拷贝mysql配置文件到目标目录/usr/local/mysql/etc
# 新建/usr/local/mysql/etc目录(该目录没有自动创建)
sudo mkdir/usr/local/mysql/etc
sudo cp support
-files/my-medium.cnf /usr/local/mysql/etc/my.cnf
# 删除安装产生的临时文件(一定要在拷贝完配置文件后在执行,不然my-medium.cnf会被删除)
make clean

step
.c
# 添加一个名为mysql的linux系统群组(可以参考mysql手册2.8.1. 源码安装概述)
sudo groupadd mysql

# 新建一个名为mysql的linux系统用户,并将其添加到mysql系统群组中
# 如果Linux只启动命令行界面,可以用下面的操作添加需要的账户
# sudo useradd -M -s /bin/false -g mysql mysql
# -M 该选项不会建立用户目录
# -s 指定新建用户使用的shell,/bin/false表示该用户不能登录系统
# -g mysql 将用户mysql添加到组mysql中

# 我现在用的时桌面系统,用如上命令添加账户。系统启动时在登录界面会显示mysql用户虽然它不登录
# 改用下面命令,mysql账户就不会显示在登录界面了
sudo useradd -r -s /bin/false-g mysqlmysql
# -r 建立系统账户,不创建用户目录,用户分配的uid小于1000

step
.d
# 创建mysql授权表
# 如果用root运行命令,应当使用--user选项。选项的值应与你在stpe.czz中创建的登录账户相同。如果用该用户登录来运行命令,可以省略--user选项

#在此步如果报FATAL: Could not find mysqld错误,将命令改为
#sudo /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql
step.e
# 进入mysql的安装目录(/usr/local/mysql)
cd /usr/local/mysql
# 将文件的所有属性改为root用户
sudo chown-R root .
# 将数据目录的所有属性改为mysql用户(即在step.c中创建的用户)
sudo chown-R mysqlvar
# 将组属性改为mysql组
sudo chgrp-R mysql.

step
.f
# 启动mysql服务
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql&
# 登录数据库
/usr/local/mysql/bin/mysql-uroot

mysql安装完成了

三、Apache的安装
# 使用DSO动态编译,关于动态编译与静态编译的区别可以参考http://www.ha97.com/2612.html
安装包 httpd-2.2.14.tar.gz
tar
-zvxf httpd-2.2.14.tar.gz
cd httpd
-2.2.14
./configure --prefix=/usr/local/apache --enable-mods-shared=most --enable-so
# --prefix=/usr/local/apache 将apache安装到/usr/local/apache路径
# --enable-mods-shared=most 将所有标准模块都动态编译为DSO模块
# --enable-so apache核心装载DSO,但是不实际编译任何动态模块
make
make install
make clean

# 启动apache
sudo /usr/local/apache/bin/apachectl start
# 打开浏览器输入浏览器会看到It works!

apache安装完成了

四、PHP的安装
step
.1
freetype的安装
安装包 freetype
-2.3.11.tar.gz
# 安装命令
tar -zxvf freetype-2.3.11.tar.gz
cd freetype
-2.3.11
./configure --prefix=/usr/local/freetype
make
sudo make install
make clean

step
.2
zlib的安装
安装包 zlib
-1.2.3.tar.gz
# 安装命令
tar -zxvf zlib-1.2.3.tar.gz
cd zlib
-1.2.3
./configure --prefix=/usr/local/zlib --shared
#--prefix=/usr/local/zlib zlib的安装目录 --shared安装共享库
make
sudo make install
make clean

step
.3
libpng的安装
安装包 libpng
-1.4.0.tar.gz
# 安装命令
tar -zxvf libpng-1.4.0.tar.gz
cd libpng
-1.4.0
# 将scripts目录下的makefile.std文件拷贝到当前目录,并重命名为makefile
cp scripts/makefile.std makefile
# 编辑makefile文件找到27行左右如下内容
# ZLIBLIB=../zlib
# ZLIBINC=../zlib
# 修改为
# ZLIBLIB=/usr/local/zlib/lib (zlib的库文件路径)
# ZLIBINC=/usr/local/zlib/include (zlib的包含文件路径)
# 保存退出
# 如果安装zlib时配置命令为 ./configure ,则不用修改makefile文件
make
sudo make install
make clean

step
.4
jpeg的安装
安装包 jpegsrc
.v7.tar.gz
# 安装命令
tar -zxvf jpegsrc.v7.tar.gz
cd jpeg
-7
./configure --prefix=/usr/local/jpeg7
make
sudo make install
make clean
# 很多人手动建立 jpeg的目录结构不知道是因为不同还是有其它原因(有待查证)

# 以上包都是gd库所需要的组成库,下面安装gd库

step
.5
gd库的安装
安装包 gd
-2.0.35.tar.gz
# 安装命令

step
.a
tar
-zxvf gd-2.0.35.tar.gz
cd gd
-2.0.35
# 执行gd配置命令
LDFLAGS="-L/usr/local/lamp/contrib/lib" ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg7
# LDFLAGS="-L/usr/local/zlib/lib" zlib的库文件路径
# 如果安装zlib时配置命令为./configure ,则将gd2库的配置命令改为 ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg7
step
.b
# 编辑 Makefile 文件, 找到 232 行左右
# 看到类似内容 CPPFLAGS = -I/usr/local/freetype/include/freetype2 -I/usr/local/freetype/include -I/usr/local/freetype/include -I/usr/local/jpeg7/include
# 修改为 CPPFLAGS = -I/usr/local/freetype/include/freetype2 -I/usr/local/freetype/include -I/usr/local/freetype/include -I/usr/local/jpeg7/include -I/usr/local/libpng/include 
# 保存退出

step
.c
# 编辑 gd_png.c 文件 找到 if (!png_check_sig (sig, 8)) { /* bad signature */
# 修改为 if (png_sig_cmp (sig, 0, 8)) {
# 保存退出

step
.d
# 执行命令
make
sudo make install
make clean
# gd库安装完成

step
.6
libxml2的安装
安装包 libxml2-2.6.20.tar.gz
# libxml2用来解析xml
# 安装命令
tar -zxvf libxml2-2.6.20.tar.gz
cd libxml2
-2.6.20
./configure --prefix=/usr/local/libxml
# 编辑 nanohttp.c 文件,找到fd = open(filename, O_CREAT | O_WRONLY);(可以通过查找O_WRONLY定位)
# 修改为 fd = open(filename, O_CREAT | O_WRONLY,0777);
# 保存退出
make
make install
make clean

step
.7
php的安装
安装包 php
-5.3.1.tar.gz
# 安装命令
step.a
tar
-zxvf php-5.3.1.tar.gz
cd php
-5.3.1.tar
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql--with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg7 --with-freetyp-e-dir=/usr/local/freetype --with-gd=/usr/local/gd2
 # --with-zlib-dir=/usr/local/zlib 的安装目录,如果安装zlib的配置命令为 ./configure ,则安装目录为/usr/local
make
sudo make install
make clean

step
.b
拷贝PHP配置文件
sudo cp php
.ini-development /usr/local/php/lib/php.ini
# php配置文件名称不同本版名称会有差异,当前版本中有两个文件 php.ini-development(开发环境中用的) php.ini-production(生产环境中用的)

step
.d
修改apache配置文件
/usr/local/apache/conf/httpd.conf

# 添加对php的支持
LoadModule php5_module modules/libphp5.so
AddType application
/x-httpd-php .php

step
.e
# 如果用root账户登录跳过这一步
# 更目录web目录权限
sudo chown-R 登录用户:登录用户 /usr/local/apache/htdocs

step
.f
#重启apache
sudo /usr/local/apache/bin/apachectl restart

好了到此linux配置环境配置完了,由于各种问题这篇文章拖了好几天才写完。这中间还发生了未保存而丢失文档的杯俱泪奔啊!其中各个包的安装
./configure涉及到的参数只是一些基本的参数,LAMP之旅刚刚开始。走过了会发现没有想象的那么困难了,GOOD LUCK!



感谢张小叶童鞋的大力支持,快乐与你同在!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

178

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

35

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

79

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

2

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

4

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

24

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

72

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号