ubuntu centos lanmp环境的搭建

一、安装一些必要的软件。ubuntu安装以后,有一些包是没有安装上的。我们需要安装上,否则下面的编译将会出现问题。

复制内容到剪贴板代码:apt-getinstall binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-devlibpcre3 libpopt-dev lynx m4 make ncftp nmap perl perl-modules unzipzip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++build-essential libpcre3-dev libncurses5-dev libcurl4-openssl-devopenssh-server openssh-client

二、设置安装目录,下载必要的软件。安装完毕以后,我们建立几个目录,用来进行下一步的安装。

复制内容到剪贴板代码:mkdir/usr/src/lamp (用来存放安装软件)

/usr/local(安装目录,nginx,php,mysql等都安装在这个目录下)

mkdir/var/www(发布目录)

下载编译需要的各种软件,全部放到/var/software下

mysql-5.5.23.tar.gz

php-5.3.10.tar.gz

nginx-1.2.0.tar.gz

spawn-fcgi-1.6.3.tar.gz(用来加载fastcgi)

//以下为php的依赖库

freetype-2.3.5.tar.gz

jpegsrc.v6b.tar.gz

libiconv-1.11.1.tar.gz

libmcrypt-2.5.8.tar.gz

libpng-1.2.29.tar.gz(注意,大家不要使用1.2.28这个版本,似乎有很多问题)libxml2-2.6.30.tar.gz

mcrypt-2.6.7.tar.gz

mhash-0.9.9.tar.gz

pcre-8.30.tar.gz

为了方便,我已经已将上面所有的软件包下载后打包

、编译安装PHP所需的支持库。

复制内容到剪贴板代码:cd/usr/src/lamp/beforephp

tarzxvflibiconv-1.11.1.tar.gz

cdlibiconv-1.11.1/

./configure--prefix=/usr/local

make&&makeinstall

cd..

tarzxvffreetype-2.3.5.tar.gz

cdfreetype-2.3.5

./configure

make&&makeinstall

cd..

tarzxvflibpng-1.2.29.tar.gz

cdlibpng-1.2.29

./configure

###mvscripts/makefile.linux./makefile

make

makeinstall

cd..

tarzxvfjpegsrc.v6b.tar.gz

cdjpeg-6b/

./configure--enable-static--enable-shared

make&&makeinstall

makeinstall-lib

cd..

(libxml2会影响php的编译)

tarzxvflibxml2-2.6.30.tar.gz

cd libxml2-2.6.30

打开当前目录下的nanohttp.c,第1588行由

fd=open(filename,O_CREAT|O_WRONLY);更换为

fd = open(filename, O_CREAT | O_WRONLY,0777);

http://temix.blog.163.com/blog/static/364133200810237854799/

gcc-4.3对语法检查严格的结果,找到出错的那一句,就OK了

./configure

make&&makeinstall

cd ..

tarzxvflibmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure

make&&makeinstall

/sbin/ldconfig

cdlibltdl/

./configure--enable-ltdl-install

make&&makeinstall

cd../..

tar zxvf mhash-0.9.9.tar.gz

cdmhash-0.9.9

./configure

make&&makeinstall

cd..

cp/usr/local/lib/libmcrypt.*/usr/lib

##ln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2()创建链接时出错,说已经存在,不过好像不影响编译

tarzxvfmcrypt-2.6.7.tar.gz

cdmcrypt-2.6.7

./configure

make&&makeinstall(这里出现了很多警告,好像不影响)

cd..

四、编译安装MySQL

由于一些Linux操作系统并不自带MySQL数据库,或者有些电脑(如国产龙芯,基于MIPS指令系统)并不支持MySQL官方提供的RPM包的安装,因此需要使用源码进行重编译,然后安装使用

下载地址:http://www.mysql.com/downloads/mysql/进入MySQLCommunity Server下载页面,在SelectPlatform选项中选择SourceCode

选择最后一项.tar.gz的文件,如下图

点击Download进入镜像链接页面,随便选择一个镜像进行下载到本地磁盘

  1. 创建mysql安装目录

此处的安装目录可以任选,如果是默认安装则在/usr/local/mysql下

#mkdir -p /usr/local/mysql/

2、创建数据存放目录

#mkdir -p/service/mysql/

3、创建用户和用户组与赋予数据存放目录权限

#groupadd mysql

#useradd -g mysql mysql

# chown mysql.mysql -R /usr/local/mysql/data

4、安装cmake

mysql5.5以后是通过cmake工具来编译的,CMake 是个跨平台的自动化建构系统,它用组态档(生成Makefile文件的特殊脚本)控制建构过程,对mysql的源码进行buildProcess(构建),然后生成Makefile文件.

Cmake下载地址:http://www.cmake.org/cmake/resources/software.html

选择Unix/LinuxSource中.tar.gz文件进行下载最新版本,然后将其解压缩到本地,并配置、安装,以下是相关命令

cd..

tar zxvfcmake-2.8.8.tar.gz

cdcmake-2.8.8

./configure

make&& make install (这要几分钟的时间,反正比前面的编译时间长点)

cd..

5、编译mysql

tarzxvf mysql-5.5.23.tar.gz

cdmysql-5.5.23

进入MySQL解压目录下,使用cmake来对mysql的安装目录、数据存放、配置文件、系统语言等相关信息进行编辑,以下是相关指令:

以下是编辑命令的集合,可以直接拷贝、粘贴并执行,注意的是安装目录与数据目录的位置

cmake. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMYSQL_DATADIR=/usr/local/mysql/data/-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysqld.sock-DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_unicode_ci -DWITH_DEBUG=0

执行以上命令,将构建MySQL源码中的Makefile文件。

选项说明:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

mysql安装的主目录,5.5.17版本默认为/usr/local/mysql,(可省略)

-DMYSQL_DATADIR=/home/system_username/mysql/mysqldata

mysql数据保存的路径,自定义

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock

系统Socket文件(.sock)设置,基于该文件路径进行Socket连接,必要为绝对路径

-DSYSCONFDIR=/etc

mysql配置文件my.cnf地址,默认/etc下(可省略)

-DMYSQL_TCP_PORT=3306

数据库服务器TCP/IP连接的监听端口,默认为3306(可省略)

-DENABLED_LOCAL_INFILE=1

默认为关闭,这里开启

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8-general_ci

数据库编码设置

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_FEDERATED_STORAGE_ENGINE=1

-DWITH_PARTITION_STORAGE_ENGINE=1

存储引擎设置

8、安装MySQL

make&& make install

这将是一个比较漫长的编译过程。。。。。

9、配置MySQL的启动项

cpsupport-files/my-medium.cnf /etc/my.cnf //更改配置文件位置

cpsupport-files/mysql.server /etc/init.d/mysqld //设置mysql服务器操作路径

(以上两个文件是source下面的)

chmod755 /etc/init.d/mysqld //更改权限

bashscripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data/ //安装数据库,并设置用户名和数据存放位置

  1. MySQL启动与使用

1、在命令行中输入:

/etc/init.d/mysqldstart

启动Mysql服务

2、登录MySQL

ln/usr/local/mysql/bin/mysql /usr/sbin/mysql (以后直接输入mysql即可以启动登录)

命令行:mysql

使用mySQL数据库的root用户登录,默认无密码, 也可以mysql -u root–p

  1. 简单操作

mysql>usemysql ; //使用mysql数据库

//更改root用户的登录密码

mysql>updateuser set password=PASSWORD("123456") where user='root';

//刷新更新

mysql>FLUSHPRIVILEGES;

  1. 总结

最好将上面的安装指令等写成一个Shell脚本,以避免错误,并使安装更简单。。完毕!

运行以下命令即可启动MySQL服务器:

/etc/init.d/mysqldstart(启动MySQL)

bin/mysqladmin-urootpassword"password_for_root"(设置mysql的root密码)

/etc/init.d/mysqldstop(关闭MySQL)

nano/etc/rc.local

ctrl+O在最后加入:/etc/init.d/mysqldstart(这样开机的时候,mysql就可以自动启动了。)

五、编译安装PHP-5.3.10FastCGI模式)

ln -s/usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

没有这个链接会报错

cd..

tarzxvfphp-5.3.10.tar.gz

cd php-5.3.10

复制内容到剪贴板代码:

./configure--prefix=/usr/local/php--with-config-file-path=/usr/local/php/etc--with-mysql=/usr/local/mysql–with-mysqli=/usr/local/mysql--with-iconv-dir=/usr/local--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir--enable-xml--enable-discard-path--enable-safe-mode--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--with-curl--with-curlwrappers--enable-mbregex--enable-fastcgi--enable-force-cgi-redirect--enable-mbstring--with-mcrypt--disable-ipv6--enable-soap--with-openssl--with-gettext--disable-rpath

(编译时间较长,请耐心等待)

##sed-i's#-lz-lm-lxml2-lz-lm-lxml2-lz-lm-lcrypt#&-liconv#'Makefile//好像这个版本的没有这个

make

makeinstall

cpphp.ini-development/usr/local/php/etc/php.ini

phpfpm

./configure--prefix=/usr/local/php5310--with-config-file-path=/usr/local/php5310/etc--with-mysql=/usr/local/mysql--with-mysqli=/usr/local/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-discard-path --enable-safe-mode--enable-bcmath --enable-shmop --enable-sysvsem--enable-inline-optimization --with-curl --with-curlwrappers--enable-mbregex --enable-fastcgi --enable-fpm--enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd--enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl--enable-sockets

makeZEND_EXTRA_LIBS='-liconv'

makeinstall

cpphp.ini-dist /usr/local/php/etc/php.ini

centosapache

./configure--prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc--with-mysql=/usr/local/mysql--with-mysqli=/usr/local/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-discard-path --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

六、编译安装PHP5扩展模块

复制内容到剪贴板代码:

cd ext/gd/

/usr/local/php/bin/phpize

./configure--with-jpeg-dir--with-png-dir--with-zlib-dir--with-ttf--with-freetype-dir--with-php-config=/usr/local/php/bin/php-config

make

makeinstall

cd../../

、对php进行一些设置,并且为安装nginx做一些准备工作。

1、修改php.ini文件

手工修改:查找/usr/local/php/etc/php.ini中的extension_dir="./"

修改为extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

并在此行后增加以下几行,然后保存。

复制内容到剪贴板代码:extension= "gd.so"

自动修改:若嫌手工修改麻烦,可执行以下shell命令,自动完成对php.ini文件的修改:

复制内容到剪贴板代码:#sed -i 's#extension_dir = "./"#extension_dir ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension= "gd.so"\n#' /usr/local/php/etc/php.ini  

2、创建www用户和组,以及其使用的目录。

复制内容到剪贴板代码:/usr/sbin/groupaddwww -g 48/usr/sbin/useradd -u 48 -g www www

mkdir/var/www

chmod+w/var/www/

chown -R www:www /var/www/

儿、安装Nginx1.2.0

##这一步安装可能有问题1、安装Nginx所需的pcre库。

复制内容到剪贴板代码:

tarzxvf pcre-8.30.tar.gz cd pcre-8.30/

./configure

make&&makeinstall

cd ../..

2、安装Nginx。

复制内容到剪贴板代码:

tarzxvfnginx-1.2.0.tar.gz

cdnginx-1.2.0/

./configure--user=nginx --group=www --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module--with-pcre=/home/xuefen/tar/lnmp/pcre-8.30

#--with-pcre=/ pcre要用源码的目录,我看它代码是找./cofigure

make

makeinstall

cd ../  

3、创建Nginx日志目录。

复制内容到剪贴板代码:

chmod+w/usr/local/nginx/logs

chown -R nginx:www/usr/local/nginx/logs/

4、创建Nginx配置文件。更改/usr/local/nginx/conf/目录中的nginx.conf文件。

nano/usr/local/nginx/conf/nginx.conf

以下是参考配置

user nginxwww;

worker_processes5;

error_log/usr/local/nginx/logs/nginx_error.logcrit;

#pidlogs/nginx.pid;

#Specifiesthevalueformaximumfiledescriptorsthatcanbeopenedbythisprocess.

worker_rlimit_nofile51200;

events

{

useepoll;

worker_connections51200;

}

http

{

includemime.types;

default_typeapplication/octet-stream;

charsetutf-8;

server_names_hash_bucket_size128;

#sendfileon;

#tcp_nopushon;

keepalive_timeout60;

tcp_nodelayon;

gzipon;

gzip_min_length1k;

gzip_buffers48k;

gzip_http_version1.1;

gzip_typestext/plainapplication/x-javascripttext/csstext/htmlapplication/xml;

server

{

listen80;

server_nameservername.com;

indexindex.htmlindex.htmindex.php;

root/usr/local/webserver/webdata;

if(-d$request_filename)

{

rewrite^/(.*)([^/])$http://$host/$1$2/permanent;

}

location~.*.php?$

{

root /var/www;

fastcgi_pass 127.0.0.1:9999;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;

include fastcgi_params;

}

log_formataccess'$remote_addr-$remote_user[$time_local]"$request"'

'$status$body_bytes_sent"$http_referer"'

'"$http_user_agent"$http_x_forwarded_for';

access_log/usr/local/webserver/logs/access.logaccess;

}

server

{

listen80;

server_namestatus.servername.com;

location/{

stub_statuson;

access_logoff;

}

}

}

保存,退出nano。

十一、安装zend

复制内容到剪贴板代码:

tarzxvfZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

cdZendOptimizer-3.3.3-linux-glibc23-i386

./install

在询问php.ini的路径的时候,填入.

复制内容到剪贴板代码:/usr/local/webserver/php/etc

web服务器选择不是apache十二、reboot你的机器。

1.5.8nginx 防盗链

一般的防盗链如下:

location~* .(gif|jpg|png|swf|flv)$ {

valid_referersnone blocked server_names *.bnxb.com www.bnxb.com;

if($invalid_referer) {

rewrite^/ http://www.bnxb.com/403.html;

#return404;

}

}

1.5.9nginx 虚拟目录

Nginx的目录如果是在网站根下建立的话,就可以直接当成目录访问,实现虚拟目录的效果,如果另外

指一个目录建立网站的虚拟目录的话,需要用到以下方法来实现。

nginx虚拟目录配置有两种方法alias 与root。虚拟目录的概念与其它的Web 应用一样。

最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有

location指定名称的同名目录。另外,根据前文所述,使用alias 标签的目录块中不能使用rewrite

的break。

示例1:

location/abc/ {

alias/home/html/abc/;

}

在这段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。

示例2:

这段配置亦可改成

location/abc/ {

root/home/html/;

}

/*是abc 的上级目录*/

示例3:

把alias 的配置改成:

location/abc/ {

alias/home/html/def/;

}

那么nginx将会从/home/html/def/取数据,这段配置还不能直接使用root 配置,如果非要配置,只

有在/home/html/下建立一个def->abc 的软link(快捷方式)了。

说明:

1、使用 alias时目录名后面一定要加/

2、 nginx、 resin当虚拟目录名与真实目录同名时,虚拟目录比真实目录优先级要高。

4.配置开机自动启动 Nginx+ PHP

vi/etc/rc.local

加入以下内容:

ulimit-SHn 51200

/usr/local/php/sbin/php-fpmstart

/usr/local/nginx/sbin/nginx

  1.  
    1.  
      1. 设置mysql开机自动启动服务

        cp./support-files/mysql.server/etc/rc.d/init.d/mysqld

        chkconfig--addmysqld

        chkconfig --level 345 mysqld on

5.5.4 打开防火墙80端口

写入规则,保存并重启服务

iptables -I INPUT -p tcp--dport 80 -j ACCEPT

/etc/rc.d/init.d/iptablessave

/etc/init.d/iptables restart

查看防火墙信息/etc/init.d/iptablesstatus

如果显示以下类似信息,即表示已经打开了80端口

1   ACCEPT     tcp  -- 0.0.0.0/0           0.0.0.0/0          tcp dpt:80

 5.5.5 编写nginx启动服务

cd /etc/init.d

vim nginx

输入以下代码并保存

保存后,设置权限,并添加到启动服务列表中

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

chkconfig --level 345 nginx on

service nginx start

5.6.5 安装php-fpm

cp/opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf

vim/opt/php/etc/php-fpm.conf

修改以下地方

[global]

pid=run/php-fpm.pid-p

error_log=log/php-fpm.log

emergency_restart_threshold=10

emergency_restart_interval=1m

process_control_timeout=5s

pm.start_servers=20

pm.min_spare_servers=5

pm.max_spare_servers=35

[www]

user=www

group =www

5.6.6 修改nginx,支持php

vim/opt/nginx/conf/nginx.conf

找到并修改以下代码

location ~ \.php${

roothtml;

fastcgi_pass127.0.0.1:9999;

fastcgi_indexindex.php;

fastcgi_paramSCRIPT_FILENAME/data/www$fastcgi_script_name;

includefastcgi_params;

        }

5.6.7将php-fpm作为服务运行

cd /usr/local/src/php-5.3.8

cp./sapi/fpm/init.d.php-fpm/etc/init.d/php-fpm

chmod700/etc/init.d/php-fpm

chkconfig--addphp-fpm

chkconfig--level345php-fpmon

服务方式启动php-fpm

service php-fpm restart

相关推荐