zoukankan      html  css  js  c++  java
  • Linux_源码搭建LAMP环境(一)

    主机环境:CentOS 5.5


    安装时选择base,下面一步步安装需要的组件。


    1.更新系统

    # 启用EPEL支持

    su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm'

    # 增加RMPFusion仓库

    su -c 'rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm'

    # 更新系统

    sudo yum update


    2.下载相关的源码包

    现在apache,php,mysql的源代码包,

    推荐下载下phpMyAdmin,确实挺好用的。


    3.安装相关的组件


    因为我是要做meidiawiki的,所以组件有可能有些你是不需要的,

    看个人需要安装吧

    # 安装sendmail,

    yum install sendmail sendmail-*

    # Base安装,竟然不会装gcc,太过分了

    yum install make
    yum install gcc gcc-c++

    yum install libxml2 libxml2-devel

    # 安装libmcrypt,不然登录phpmyadmin的时候会报找不到libmcrypt的

    yum install libmcrypt libmcrypt-devel mhash
    yum install libtool-ltdl libtool-ltdl-devel

    # 如果直接用apr-*,会依赖安装mysql,要小心

    sudo yum install apr apr-devel apr-util apr-util-devel
    yum install ncurses ncurses-*

    # 我添加的一些

    sudo yum install openssl openssl*

    sudo yum install curl curl-devel

    # 前面做了的话,这个应该会已经安装了的

    sudo yum install expat expat-devel

    # 这个应该也默认安装了

    sudo yum install gzip

    # 这个也默认安装了的

    sudo yum install zlib zlib-devel

    sudo yum install libpng libpng-devel

    # freetype和libjpeg已经默认安装了,

    # 装下devel,这里即使不装下面安装gd的时候会以来安装的

    sudo yum install freetype freetype-devel libjpeg libjpeg-devel

    # 安装了gd后,会依赖安装fontconfig-devel,

    # freetype-devel, libjpeg-devel

    sudo yum install gd gd-*

    sudo yum install libxslt libxslt-devel


    4.安装MySQL


    1.下载解压源代码包。

    我的是mysql 5.1.48版本的。


    2.添加mysql用户和组

    [root@tigertall mysql-5.1.48]#groupadd  mysql
    [root@tigertall mysql-5.1.48]#useradd -g mysql  mysq


    3.编译安装

    [root@tigertall mysql-5.1.48]# ./configure --enable-assembler \

    --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static \

    --with-charset=utf8 --with-collation=utf8_general_ci \

    --with-extra-charsets=complex --enable-local-infile --disable-shared \

    --with-plugins=all --with-mysqld-user=mysql --with-pthread \

    --enable-thread-safe-client


    然后,编译安装

    [root@tigertall mysql-5.1.48]make && make install

    编译配置指令的意思是,

    --enable-assembler 

      # 启用寄存器模式

    --with-client-ldflags=-all-static

      #为客户端编译静态程序

    --with-mysqld-ldflags=-all-static

      #为服务器端编译静态程序

    --with-charset=utf8

      #数据库编码使用utf8,默认的是latin1,可以设置的是

      #binary armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257
      #cp850 cp852 cp866 cp932 dec8 eucjpms euckr gb2312 gbk geostd8
      #greek hebrew hp8 keybcs2 koi8r koi8u
      #latin1 latin2 latin5 latin7 macce macroman
      #sjis swe7 tis620 ucs2 ujis utf8

    --with-collation =

      #数据库校验规则,--with-carset要和withc-collation一起使用才有效。

      #要想更改字符集和校对规则,要同时使用--with-charset和--with-collation选项。

      #校对规则必须是字符集的合法校对规则。参见下面的链接

    --with-extra-charsets=complex 

      #增加对复杂编码的支持(可选,none, complex, all)

    --with-plugins=all

      #安装所有插件,默认不安装,可以使用一系列逗号分隔符来描述要安装的内容。

      #可用的配置为 none max max-no-ndb all

      #可用的插件为 partition daemon_example
      #ftexample archive blackhole csv example federated
      #heap ibmdb2i innobase innodb_plugin myisam myisammrg
      #ndbcluster.

    --with-mysqld-user=mysql 

      #指定mysql守护进程的启动用户

    --disable-shared

      # 禁用共享库

    --with-pthread 

      #强制使用pthread库

    --enable-thread-safe-client 

      #如果客户端使用多线程,那么应该使用此选项以编译线程安全的客户端


    还有一些编译指令是,

    --prefix=/usr/local/mysql  # 不说了

    --with-tcp-port=3306

      #mysqld守护进程使用的端口,默认就是3306

    --with-unix-socket-path=/tmp/mysql.sock

      #unix套接字库路径,默认是/tmp/mysql.sock

    --with-debug 和 --with-debug=full 

      #生成调试代码和库 witout-debug关闭调试

    关于字符集和编码参见:

    msql 5.1参考手册,第10章:字符集支持


    4.一些问题

    a).执行编译配置的时候报错

    /bin/rm: cannot remove `libtoolt‘: No such file or directory

    网上搜寻后,解决问题。具体方法是:

    在执行./configure 之前,先执行:

    # autoreconf –force –install
    # libtoolize –automake –force
    # automake –force –add-missing
    # ./configure –prefix=/usr/local/mysql/ –datadir=/var/lib/mysql

    这次,不再出错了,问题解决。(好像只要执行完第一命令后,在./configure 就不会报错了。)


    5.Mysql安装后的设置

    在Unix上安装MySQL后,需要初始化授权表、启动服务器,并确保服务器工作正常。

    你还要让服务器随系统的启动和停止自动启动和停止。应当为授权表中的账户指定密码。

    1.切换到mysql的安装后路径,这里是

    cd /usr/local


    2.初始化授权表

    运行mysql_install_db程序设置含有确定如何让用户连接服务器的权限的初始MySQL授权表。

    如果你使用的分发版类型不能运行程序,你需要执行该步骤。

    典型,只有首次安装MySQL时,才需要运行mysql_install_db

    因此如果你升级已有的安装你可以跳过该步骤,

    mysql_install_db不会覆盖已有的授权表,因此可以在任何环境下安全运行。

    要想初始化授权表, 使用下面的一个命令:

    shell> bin/mysql_install_db --user=mysql

    mysql_install_db脚本创建数据目录、拥有所有数据库权限的mysql数据库

    和可以用来测试MySQL的test数据库。脚本为root账户和匿名用户账户创建授权表条目。

    账户一开始没有密码。简单说,这些权限允许MySQL root用户执行任何操作,

    允许任何人使用test名创建或使用数据库或用test_启动。

    一定要确保由mysql登录账户拥有数据库目录和文件,以便在以后运行时 服务器具有读、写访问权限。

    为此,如果你用root用户运行mysql_install_db,应当使用--user选项。

    否则,当以mysql登录时,应当执行脚本,你可以省略命令中的--user选项。

    mysql_install_db在mysql数据库中创建几个表,包括user、db、host、

    tables_priv、columns_priv和func以及其它。


    3.启动mysql服务器

    [root@tigertall local]# bin/mysqld_safe --user=mysql &
    [1] 27463
    [root@tigertall local]# 100719 02:59:05 mysqld_safe Logging to '/usr/local/var/tigertall.local.com.err'.
    100719 02:59:05 mysqld_safe Starting mysqld daemon with databases from /usr/local/var

    一定要让MySQL服务器使用非权限(non-root)登录账户运行。

    为此,如果你以系统root运行mysql_safe,应当使用--user选项。

    否则,你应当用mysql登录到系统来执行脚本,这样可以省略命令中的--user选项。


    4.使用mysqladmin验证服务器在运行中。

    以下命令提供了简单的测试,可检查服务器是否已经启动并能响应连接:

    [root@tigertall local]# bin/mysqladmin version          

    [root@tigertall local]# bin/mysqladmin variablesy

    验证关闭和重启服务器:

    [root@tigertall local]# bin/mysqladmin -u root shutdown

    [root@tigertall local]# bin/mysqld_safe --user=mysql --log &


    5.安装自动启动守护

    [root@tigertall local]# cp /usr/local/share/mysql/mysql.server /etc/init.d/mysql

    [root@tigertall local]# chmod +x /etc/init.d/mysql

    使用chkconfig设置守护进程的启动:

    [root@tigertall local]#chkconfig --level 345 mysql on

    在FreeBSD中,启动脚本通常应当位于/usr/local/etc/rc.d/。

    手册的rc(8)页内说明只有该目录脚本的基本名匹配*.sh shell文件名模式,脚本才会执行。

    目录内的其它文件或目录将被忽略掉。换句话说,在FreeBSD中,应当将mysql.server

    脚本安装为 /usr/local/etc/rc.d/mysql.server.sh以便自动启动。

    前面设置的另一种情况是,一些操作系统启动时也使用/etc/rc.local或

    /etc/init.d/boot.local来启动其它服务。要想使用该方法启动MySQL

    ,你可以在相应启动文件后面追加一条命令:

    /bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

    来安装启动脚本。


    6.安装配置文件

    [root@tigertall local]# cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf

    目录/usr/local/share/mysql下有不同的配置文件,我用的是small,

    其他还有medium,huge等等,可以根据自己的情况来处理。


    下面的表显示了服务器和每个启动脚本从选项文件读取哪个选项组:



    脚本



    选项组



    mysqld



    [mysqld],[server],[mysqld-major-version]



    mysql.server



    [mysqld],[mysql.server],[server]



    mysqld_safe



    [mysqld],[server],[mysqld_safe]



    [mysqld-major-version]意味着名为[mysqld-5.0]的组,

    [mysqld-5.1]用于版本为5.0.x、5.1.x等的服务器。

    该特性可以用来指定只被给定发布系列的服务器读取的选项。

    为了向后兼容,mysql.server还读取[mysql_server]组,

    mysqld_safe还读取[safe_mysqld]组。

    然而,当使用MySQL 5.1时,你应当更新选项文件,使用[mysql.server]和[mysqld_safe]组。


    7.其他

    到了这里,mysql应该是可用的了,之后就是设置密码之类的了。

    其他一些常见问题,请参考mysql安装手册中

    2.9.2.3. 启动MySQL服务器以及其故障诊断和排除

    这篇文章也是按照手册的指导来写的,感觉官方的文档真的很不错。


    8.修改root用户密码

    [root@tigertall local]# mysql -u root

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');

    mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

    用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是你指定匿名账户密码的主机名。


    要想使用mysqladmin为root账户指定密码,执行下面的命令:

    [root@tigertall local]# mysqladmin -u root password "newpwd"

    [root@tigertall local]# mysqladmin -u root -h host_name password "newpwd"

    上述命令适用于Windows和Unix。用服务器主机名替换第二个命令中的host_name

    不一定需要将密码用双引号引起来,但是你如果密码中包含空格或专用于命令解释的其它字符,

    则需要用双引号引起来。


    你还可以使用UPDATE直接修改user表。

    下面的UPDATE语句可以同时为两个root账户指定密码:

    [root@tigertall local]# mysql -u root

    mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')

          ->  WHERE User = 'root'

    mysql> FLUSH PRIVILEGES;


    设置完密码后,当你连接服务器时你必须提供相应密码。

    例如,如果你想要用mysqladmin关闭服务器,可以使用下面的命令:

    [root@tigertall local]# mysqladmin -u root -p shutdown

    Enter password: (enter root password here)


    6.安装Apache

    1.下载Apache源代码包,解压缩安装
      我使用的版本是httpd-2.2.15

    2.编译安装
    [gaohu@tigertall httpd-2.2.15]$ ./configure --with-included-apr \

    --with-mpm=worker \

    --enable-deflate --enable-cache --enable-disk-cache \

    --enable-file-cache --enable-mem-cache --enable-rewrite \
    --enable-so --enable-speling --enable-ssl --with-apr \

    --with-apr-util --with-ssl --with-z \
    --enable-modules=all --enable-mods-shared=all 


    编译安装

    [gaohu@tigertall httpd-2.2.15]make && sudo make install


    编译指令的说明如下
    --prefix=/usr/local/apache2

      //Apache的安装目录。
    --enable-module=so

      //打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
    --enable-deflate=shared //支持网页压缩
    --enable-expires=shared //支持 HTTP 控制
    --enable-rewrite=shared //支持 URL 重写
    --enable-cache //支持缓存
    --enable-file-cache //支持文件缓存
    --enable-mem-cache //支持记忆缓存
    --enable-disk-cache //支持磁盘缓存
    --enable-static-support //支持静态连接(默认为动态连接)
    --enable-static-htpasswd

      //使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
    --enable-static-htdigest

      //使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
    --enable-static-rotatelogs

      //使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
    --enable-static-logresolve

      //使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
    --enable-static-htdbm

      //使用静态连接编译 htdbm - 操作 DBM 密码数据库
    --enable-static-ab

      //使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
    --enable-static-checkgid

      //使用静态连接编译 checkgid
    --disable-cgid

      //禁止用一个外部 CGI 守护进程执行CGI脚本
    --disable-cgi //禁止编译 CGI 版本的 PHP
    --disable-userdir //禁止用户从自己的主目录中提供页面
    --with-mpm=worker // 让apache以worker方式运行
    --enable-authn-dbm=shared // 对动态数据库进行操作。Rewrite时需要。


    按照apache官方文档的说法,--enable-mods-shared=all并不会启用

    所有的额外模块,要想把所有的模块都安装,应该使用

    --enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache

             file_cache authnz_ldap charset_lite dav_lock disk_cache"

    对 --enable-modules也是一样的。呵呵,好强大。


    4.安装之后的测试

    启动apache服务程序:

    [gaohu@tigertall ~]$ sudo /usr/local/apache2/bin/apachectl  start

    或者是

    [gaohu@tigertall ~]$ sudo /usr/local/apache2/bin/httpd -k start

    打开浏览器,访问下http://127.0.0.1/

    应该会出现"It works!"的成功信息了。


     

    5.配置apache

    [gaohu@tigertall ~]$ sudo vi /usr/local/apache2/conf/httpd.conf

    找到“AddType application/x-gzip .tgz”这一行,在下面添加:
      AddType application/x-httpd-php .php
      AddType application/x-httpd-php-source .phps
    找到“DirectoryIndex index.html”,改为:
      DirectoryIndex index.php index.html
    找到“#ServerName”,去掉注释的#号。

    将所有“AllowOverride None”,改为:
      AllowOverride All


    配置apache开机启动有两种方法,一种是作为服务,另一种是作为开机启动程序

    a)作为服务:
    [gaohu@tigertall ~]$ sudo cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd 
    [gaohu@tigertall ~]$ sudo vi /etc/rc.d/init.d/httpd

    找到“#!/bin/sh”,另起一行,增加:
      # chkconfig: 35 70 30
      # description: Apache
    继续:

    [gaohu@tigertall ~]# su -

     [root@tigertall ~]# chkconfig --add httpd

    [root@tigertall ~]# chkconfig --level 345 httpd start

    [root@tigertall ~]# service httpd start

    上面两句是Linux的服务定义格式,

    chkconfig 35 70 30 定义了服务运行在345环境下的优先级,越小则优先级越高。

    可以自己定义几个数字。

    description一定要提供,就是一个服务描述而已,只能为英文。

    b)作为启动程序:

    在/etc/rc.d/rc.local文件中加入一行并保存:

    /usr/local/apache2/bin/apachectl start

     

    7.安装PHP

    1.下载源代码包,解压。
    我是用的版本是php-5.3.2。

    2.安装一些需要的小组件
    [gaohu@tigertall ~]$ sudo yum install net-snmp net-snmp-utils
    [gaohu@tigertall ~]$ sudo yum install aspell-devel
    [gaohu@tigertall ~]$ sudo yum install bzip2 bzip2-libs bzip2-devel

    3.编译安装
    [gaohu@tigertall ~]$ cd php-5.3.2
    [gaohu@tigertall php-5.3.2]$ ./configure \

    --with-apxs2=/usr/local/apache2/bin/apxs \

    --enable-safe-mode  --with-openssl --with-zlib --enable-bcmath \
    --with-bz2 --enable-calendar --with-curl --enable-ftp  \

    --with-gd --enable-gd-native-ttf --with-mhash --with-mcrypt \

    --with-ldap --with-ldap-sasl --enable-mbstring --with-mysql \

    --with-mysql-sock --with-mysqli --enable-pcntl --with-pspell \

    --enable-shmop --enable-soap --enable-sockets --enable-sqlite-utf8 \

    --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-xsl \

    --with-xmlrpc --enable-zip

     

    编译安装

    [gaohu@tigertall php-5.3.2]$ make && sudo make install

    编译指令具体的意义参见./configure --help,还算容易明白的,我按照自己的感觉选了几个。按自己需要来吧。

     

    4.安装后的配置

    从php的源代码目录复制一份配置,作为修改的基础。 

     [gaohu@tigertall php-5.3.2]$ sudo cp php.ini-production /usr/local/lib/php.ini

    默认的情况下:

    php.ini        /usr/local/lib

    my.cnf         /etc

    httpd.conf     /usr/local/apache2/conf/

    这个从下面的phpinfo的测试也可以看出来。

    要改变配置文件的位置,需要在编译的时候指定。


    5.php支持测试

    [gaohu@tigertall php-5.3.2]$ sudo vi /usr/local/apache2/htdocs/phpinfo.php

    增加以下内容:

    <?php
      phpinfo();
    ?>

    然后访问 http://your-web-server/phpinfo.php

    查看输出信息,应该有php的信息了。

     

     

    基本的LAMP安装就是这样子了,记下来以后做个参考。

     

    ----<20100719 高虎 于杭州 博客园>



  • 相关阅读:
    [日本语]自动词和他动词区别的重要性
    [日本语]授受关系动词总结
    [日本语]至少すくなく(と)も
    python3: 文件与IO
    python3: 迭代器与生成器(1)
    python3: 数字日期和时间(2)
    python3: 数字日期和时间(1)
    python3: 字符串和文本(4)
    Python Frame
    python3: 字符串和文本(3)
  • 原文地址:https://www.cnblogs.com/tigertall/p/1780364.html
Copyright © 2011-2022 走看看