文档章节

在ubuntu linux下以编译方式安装LAMP(apache mysql php)环境

FeanLau
 FeanLau
发布于 01/09 16:23
字数 2098
阅读 9
收藏 0
点赞 0
评论 0

最近转向到了使用ubuntu做桌面,安装好系统以来一直都没配置lamp开发环境。由于很久以来没有自己编译安装过apache php mysql了有些手生,决定再实践一下。最近一次安装web环境是在centos下装nginx php + fastcgi。虽然以前在centos freebsd下都装过amp环境,但大多是依照网络上的阿哥的步骤一步步来,早在好几年前那些阿哥的文章就靠不住了,都是抄来抄去的东西,最可恨的是他们也不查验下是否真的能安装就堂而皇之的抄去博客里放着。以前我就深受其害,可能要找3,5套文章方案才能最终成功,这次本人决定尽量不按别人的博客的步骤来,通过读./configure --help的输出参数,结合一些博客中的经验来安装,做到知其然,知其所以然!

目标:

以源码编译的方式安装一个lamp服务器,有下列php扩展或功能,memcache, xcache, pdo, zip, imagemagick等

软件环境版本

ubuntu 9.10

apache 2.2.14

mysql 5.1.14

php 5.3.1

 

软件下载地址

/home/eric/下载/software/dev/server/lamp/

安装目标目录

/usr/local/webserver

 

最终安装后要形成的路径

apache: /usr/local/webserver/apache

mysql:  /usr/local/webserver/mysql

php:    /usr/local/webserver/php

 

下载相关软件

# cd /home/eric/下载/software/dev/server/lamp

# wget http://apache.freelamp.com/httpd/httpd-2.2.14.tar.gz

# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.44.tar.gz/from/http://mysql.cs.pu.edu.tw/

# wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download

# wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download

# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

# wget http://pecl.php.net/get/memcache-2.2.5.tgz

# wget http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz/download

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

# wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick.tar.gz

# wget http://pecl.php.net/get/imagick-2.3.0.tgz

# wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz

 

0, 先安装基本支持库

这个适用于debian/ubuntu, centos用yum安装,得自己查找相应的包名。也可以一个一个自己下载回来手工编译,这些库将在安装php及其他软件时被使用到。

 

# apt-get install libjpeg62 libjpeg62-dev libpng12-0 libpng-12-0-dev libfeetype6 libfreetype6-dev libxml2 libxml2-dev zlib1g zlib1g-dev libcurl3 libcur3-dev libncurses5-dev libperl-dev bison

 

!! 如果没装libperl-dev,在安装ImageMagick时会遇到麻烦。如果缺少bison,则会一切安装顺利,但当apache load libphp5.so时会报错#ff0000 symbol: zend_parse_parameters。

 

 

1, 安装mysql

# cd /home/eric/下载/software/dev/server/lamp/

# tar -zxvf mysql-5.1.44.tar.gz

或者使用下面解压

gunzip < mysql-5.1.44.tar.gz | tar -xvf -

 

为运行mysql建个新组和一个新用户名

# groupadd mysql

# useradd -g mysql mysql

 

# cd mysql-5.1.44

下面进行配置,mysql需要libncurses5-dev否则会出现 error: no curses/termcap library,先要确认自己系统里安装过libncurses5-dev,如果没有的话configure时会出错,我电脑上就没有,先用apt-get安装之,centos系统则用yum,包名可以自己查询一下。参见步骤0 - 安装基本支持库

 

# ./configure --prefix=/usr/local/webserver/mysql --enable-assembler --with-charset=utf8 --with-extra-charsets=complex --enable-local-infile --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-thread-safe-client --with-plugins=innobase

# make

# make install

# cd support-files

# cp my-medium.cnf /usr/local/webserver/mysql/etc/my.cnf

# cd /usr/local/webserver/mysql

 

#bin/mysql_install_db --user=mysql --basedir=/usr/local/webserver/mysql --datadir=/usr/local/webserver/mysql/data

在这里如果不指定basedir,datadir则会报错找不到mysqld

调整权限

# chown -R root .

# chown -R mysql lib data etc

# chgrp -R mysql .

 

启动mysql

/usr/local/webserver/mysql/bin/mysqld_safe --user=mysql --defaults-file=/usr/local/webserver/mysql/etc/my.cnf &

 

链接上mysql

mysql -uroot -S /tmp/mysql.sock

 

停止mysql

/usr/local/webserver/mysql/bin/mysqladmin -uxxx -pxxx -S /tmp/mysql.sock shutdown

 

遇到的问题,若不用mysql -S /tmp/mysql.sock指定,则mysql客户端会去读/etc/mysql/my.cnf配置文件,目前尚不知道该mysql client是在何时安装的。而且位于新力得包管理器里,可能是在安装mysql workbench时由于依赖关系被安装上去的。

 

2, 安装apache

# cd /home/eric/下载/software/dev/server/lamp/

# tar zxvf httpd-2.2.14.tar.gz

# cd lamp/httpd-2.2.14

# ./configure --prefix=/usr/local/webserver/apache --enable-so --enable-mods-shared=all

# make

# make install

 

# cd /usr/local/webserver/apache

修改apache配置文件

# vi conf/httpd.conf

搜索LoadModule,在下面加上

LoadMOdule rewrite_module modules/mod_rewrite.so

LoadModule alias_module modules/mod_alias.so

LoadModule autoindex_module modules/mod_autoindex.so

LoadModule deflate_module modules/mod_deflate.so

LoadModule dir_module modules/mod_dir.so

LoadModule userdir_module modules/mod_userdir.so

LoadModule env_module modules/mod_env.so

LoadModule expires_module modules/mod_expires.so

LoadModule mime_module modules/mod_mime.so

LoadModule vhost_alias_module modules/mod_vhost_alias.so

LoadModule authz_host_module modules/mod_authz_host.so

LoadModule log_config_module modules/mod_log_config.so

 

<Directory />

</Directory>

<Directory "/usr/local/webserver/apache/htdocs">

</Directory>

俩节相应的部分改为 (如有必要,比如不使用虚拟主机来跑网站,要设置虚拟主机可以修改/etc/hosts来增加一点虚拟的域名)

AllowOverride All

Order allow,deny

Allow from all

 

Shift + G 转到配置文件末尾

取消掉对Virtual hosts和various default settings俩项include的注释

 

 

启动apache

/usr/local/webserver/apache/bin/apachectl -k start

关闭apache

/usr/local/webserver/apache/bin/apachectl -k stop

重启apache

/usr/local/webserver/apache/bin/apachectl -k restart

 

3, 安装php和一些扩展

3.1 安装编译php5.3所需的基本支持库

# cd /home/eric/下载/software/dev/server/lamp/

# tar zxvf libiconv-1.13.1.tar.gz

# cd libiconv-1.13.1

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

# make

# make install

# cd ..

 

# tar zxvf libmcrypt-2.5.8.tar.gz 

# cd libmcrypt-2.5.8

# ./configure

# make

# make install

# /sbin/ldconfig

# cd libltdl

# ./configure --enable-ltdl-install

# make

# make install

# cd ../..

 

# tar zxvf mhash-0.9.9.9.tar.gz

# cd mhash-0.9.9.9

# ./configure 

# make

# make install

# cd ..

 

# 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

 

# tar zxvf mcrypt-2.6.8.tar.gz

# cd mcrypt-2.6.8/

# /sbin/ldconfig

# ./configure

# make

# make install

# cd ../

 

没有先安装libperl-dev的话,这里make install会遇到麻烦,而在centos服务器上似乎无此问题

# tar zxvf ImageMagick.tar.gz

# cd ImageMagick-6.6.0-0

# ./configure 

# make

# make install

# cd ..

 

3.2 安装php

# tar zxvf php-5.3.1.tar.gz

# cd php-5.3.1

./configure --prefix=/usr/local/webserver/php --with-apxs2=/usr/local/webserver/apache/bin/apxs --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap

# make ZEND_EXTRA_LIBS='-liconv'

# make install

# cp php.ini-development /usr/local/webserver/php/etc/php.ini

# cd ..

 

3.3 安装php扩展模块

# tar zxvf memcache-2.2.5.tgz

# cd memcache-2.2.5/

# /usr/local/webserver/php/bin/phpize

# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config

# make

# make install

# cd ../

 

# tar zxvf PDO_MYSQL-1.0.2.tgz

# cd PDO_MYSQL-1.0.2/

# /usr/local/webserver/php/bin/phpize

# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql

# make

# make install

# cd ../

 

tar zxvf imagick-2.3.0.tgz

cd imagick-2.3.0/

/usr/local/webserver/php/bin/phpize

./configure --with-php-config=/usr/local/webserver/php/bin/php-config

make

make install

cd ../

 

安装xcache

# tar zxvf xcache-1.3.0.tar.gz

# /usr/local/webserver/php/bin/phpize

# ./configure --enable-xcache --enable-xcache-coverager --with-php-config=/usr/local/webserver/php/bin/php-config 

# make

# make install

# cat xcache.ini >> /usr/local/webserver/php/etc/php.ini

 

开始修改php.ini,要确保 xcache.so 加载位置在任何其他的zend_extension=***语句之前。

 

查找 extension_dir

将它修改为 

extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/"

并在此行下面添加一下几行

extension = "memcache.so"

extension = "pdo_mysql.so"

extension = "imagick.so"

 

将[xcache-common]节里的

zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so 注释掉

在其下面添加一行

zend_extension = /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so

 

 

4, 整合apache与php

# vi /usr/local/webserver/apache/conf/httpd.conf 

找到

     <IfModule dir_module>

         DirectoryIndex index.html

     </IfModule>

将其改为

     <IfModule dir_module>

         DirectoryIndex index.php index.html index.htm

     </IfModule>

 

找到 Addtype application/x-gzip .tgz

在它下面添加一行

Addtype application/x-httpd-php .php

 

5, 创建一个测试用虚拟主机

# vi /etc/hosts

添加俩行

127.0.0.1 test.local

127.0.0.1 www.test.local

 

下面为apache添加一个虚拟主机

# cd /usr/local/webserver/apache/conf/extra/

# vi httpd-vhosts.conf

将配置文件中原先俩个用来演示的配置注释掉,添加如下指令

<VirtualHost *:80>

    ServerAdmin greathqy@gmail.com

    DocumentRoot "/home/eric/projects/php/testing"

    ServerName www.test.local

    ErrorLog "logs/testing-error_log"

    CustomLog "logs/testing-access_log" common

 

    <Directory "/home/eric/projects/php/testing">

        Options Indexes FollowSymLinks

        AllowOverride All

        Order deny,allow

        Allow from all

    </Directory>

</VirtualHost>

保存并关闭

 

6, 启动apache mysql

# /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/webserver/mysql/etc/my.cnf &

# /usr/local/webserver/apache/bin/apachectl -k start 

 

转到 /home/eric/projects/php/testing

创建一个新文件 test.php

输入

<?php 

phpinfo()

?>

 

在浏览器输入 http://www.test.local/test.php

 

呈现出phpinfo页面,可以看到curl, gd, iconv, imagick, mbstring, memcache, mcrypt, mysql, mysqli, pdo mysql, xcache, zip等扩展和支持都已经完成了。

 

可以尝试用php链接下mysql试试,将test.php修改为

 

<?php
//phpinfo();

$handle = mysql_connect("localhost", "root", "") or die("unable connect to mysql");

if ($handle) {
  mysql_select_db("test", $handle) or die("can't select db");
}

echo "connected to mysql <Br />";

$sql = "CREATE TABLE IF NOT EXISTS `user` (`username` varchar(50) NOT NULL, `password` varchar(32) NOT NULL) ENGINE=MYISAM DEFAULT CHARSET=utf8";

mysql_query($sql, $handle) or die("can't query database");

echo "data table created";

echo mysql_info();
?>

 

 

保存刷新test.php,可以看到输出:

connected to mysql 

data table created

 

到这里为止一个适用于开发环境的lamp算是配置成功了。

本文转载自:http://www.cnblogs.com/eleganthqy/archive/2010/02/28/1675217.html

共有 人打赏支持
FeanLau
粉丝 3
博文 219
码字总数 130409
作品 0
浦东
程序员
linux下安装yii——遇到到问题和解决

由于PHP的很多高阶教材都是以LINUX作为基础,我也只好硬着头皮从WINDOWS转向LINUX,说实在的,这是个很痛苦到过程,从一个傻瓜 式到桌面系统转到一个繁琐到命令式系统,就像从移动电话时代回...

南国野兽
2012/11/24
0
0
linux ubuntu lamp 安装配置环境 +phpmyadmin (-)

Linux ubuntu lamp安装配置环境phpmyadmin PHP开发和服务器运行环境首选LAMP组合,即Linux+Apache+Mysql+Php/Perl/Python,能最优化服务器性能。如何在本地电脑Ubuntu 中安装和配置LAMP环境搭...

岭南六少
2011/08/20
0
0
Phabricator安装向导

安装向导 该文档包含获得以及运行Phabricator所需的最基本安装指引。 安装要求 Phabricator是一个LAMP应用套件,因此最基本的要求就是LAMP环境: Linux:Linux的不同发行版及变种是必需的。M...

悠悠客
2013/04/28
0
0
OneinStack 1.3 发布,一键 PHP/JAVA 安装工具

OneinStack 1.3 发布了,这个脚本是使用 shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine/OpenResty、 MySQL/MariaDB/Percona、PHP、Apache、Tomcat),适用...

lj2007331
2016/04/29
1K
11
OneinStack 1.7 发布,一键 PHP/JAVA 安装工具

OneinStack 1.7 发布了,这个脚本是使用 shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine/OpenResty、 MySQL/MariaDB/Percona/MongoDB/PostgreSQL、PHP、A...

lj2007331
04/25
0
0
lanmp v2.5一键安装包发布(包括lamp,lnmp,lnamp安装)

lanmp一键安装包是wdlinux官网2010年开始推出的lamp,lnmp,lnamp(apache,nginx,php,mysql,zend,eAccelerator,pureftpd)应用环境的快速简易安装包,执行一个脚本,整个环境就安装完成就可使用,...

wdlinuxcn
2013/06/25
0
1
apache+mysql+php环境部署详解

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 php是英文超文本预处理语言Hyp...

qq610148679
06/28
0
0
apache+mysql+php环境部署详解

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 php是英文超文本预处理语言Hyp...

qq610148679
06/28
0
0
Ubuntu Server 14.04 安装 LAMP

对众多PHP初学开发者来讲,搭建一个可用于生产的LAMP环境是一件必须的事情,本文以 Ubuntu Server 14.04为例,给出一个搭建LAMP环境的教程,供大家参考。 本文的LAMP指的是:Linux+Apache+My...

Daniel_s
2016/01/21
51
0
OneinStack 1.2 发布,一键 PHP/JAVA 安装工具

这个脚本是使用 shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine、 MySQL/MariaDB/Percona、PHP、Apache、Tomcat),适用于CentOS 5~7(包括redhat)、Deb...

lj2007331
2016/03/03
2.6K
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
16分钟前
0
0
从MySQL全备文件中恢复单个库或者单个表

从MySQL全备文件中恢复单个库或者单个表 提取建库语句 sed -n '/^-- Current Database: db_cms/,/^-- Current Database: `/p' backup.sql > db_cms.sql & 提取ddl sed -e'/./{H;$!d;}' -e ......

yysue
48分钟前
0
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
58分钟前
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
0
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部