系统环境CentOS6.5
这里通过挂载光盘至本地搭建yum源
[root@localhost ~]# mount /dev/cdrom /mnt [root@localhost ~]# vim /etc/yum.repos.d/Centos-Base.repo [centos] name=centos baseurl=file:///mnt/ enable=1 gpgcheck=0 gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-6
一、编译安装Apache
关闭selinux
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
添加防火墙规则,允许80端口和3306端口访问
[root@localhost ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
修改主机名
[root@localhost ~]# sed -i 's/HOSTNAME=localhost.localdomain/HOSTNAME=web.lnmp.com/g' /etc/sysconfig/network [root@localhost ~]# vim /etc/hosts 127.0.0.1 web web.lamp.com localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@localhost ~]# vim /etc/sysconfig/network NETWORKING=YES HOSTNAME=web [root@localhost ~]# reboot
建立http服务用户组
[root@localhost ~]# groupadd www [root@localhost ~]# useradd -M -s /sbin/nologin -g www www
1、解决依赖关系
[root@web ~]# yum install gcc gcc-c++ openssl openssl-devel autoconf
编译安装apr(The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementations. The primary goal is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.)
[root@web ~]# tar xf apr-1.5.1.tar.bz2 [root@web ~]# cd apr-1.5.1 [root@web apr-1.5.1~]# ./configure --prefix=/usr/local/apr [root@web apr-1.5.1~]# make && make install
编译安装apr-util
[root@web ~]# tar xf apr-util-1.5.3.tar.bz2 [root@web ~]# cd apr-util-1.5.3 [root@web apr-util-1.5.3~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@web apr-util-1.5.3~]# make && make install
安装依赖包pcre-devel
[root@web ~]# yum install pcre-devel
编译安装httpd
[root@web ~]# tar xf httpd-2.4.9.tar.bz2 [root@web ~]# cd httpd-2.4.9 [root@web httpd-2.4.9~]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-rewrite --enable-cgi --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all [root@web httpd-2.4.9~]# make && make install
在/etc/profile.d目录下创建httpd.sh环境变量文件
[root@web ~]# echo "export PATH=$PATH:/usr/local/apache/bin" > /etc/profile.d/httpd.sh [root@web ~]# source /etc/profile
httpd的测试与启动
[root@web ~]# apachectl -t AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using web.lamp.com. Set the 'ServerName' directive globally to suppress this message Syntax OK
编辑httpd.conf文件,搜索"/ServerName",添加ServerName localhost:80,修改user和group
[root@web ~]# vim /usr/local/apache/conf/httpd.conf ServerName localhost:80 user=www group=www [root@web ~]# apachectl start [root@web ~]# netstat -anputl |grep :80 tcp 0 0 :::80 :::* LISTEN 1381/httpd
利用浏览器访问
以上httpd基本服务已经搭建成功。
下面注释掉中心主机,创建基于域名的虚拟主机(根据个人习惯创建虚拟主机文件)。
[root@web ~]# vim /usr/local/apache/conf/httpd.conf include conf/extra/vhost/*.conf [root@web ~]# mkdir -pv /usr/local/apache/conf/extra/vhost [root@web ~]# vim /usr/local/apache/conf/extra/vhost/a.conf <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache/htdocs/a.com" ServerName www.a.com ErrorLog "logs/a.com.error.log" CustomLog "logs/a.com.access.log" combined <Directory "/usr/local/apache/htdocs/a.com"> Options Indexes FollowSymLinks DirectoryIndex index.html index.php index.htm AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>
这里可以再定义一个虚拟主机禁止通过服务器IP地址访问网站,apache虚拟主机默认情况下ip地址方式访问对应第一个虚拟主机,所以可以先建一个指向错误页面的虚拟主机,达到禁止用ip访问网页的目的
方法一:在上面的*.conf文件最上面,加入以下代码
<VirtualHost *:80> ServerName 192.168.0.250 <Location /> Order Allow,Deny Deny from all </Location> </VirtualHost>
方法二:在上面的*.conf文件最上面,加入以下代码
<VirtualHost *:80> DocumentRoot "/www/error" ServerName 192.168.0.250 </VirtualHost>
最后重启httpd服务
二、编译安装mysql
先安装相关的依赖包
[root@web ~]# yum install cmake ncurses ncurses-devel
创建mysql用户组,创建数据库数据存放目录并指定属主组
[root@web ~]# groupadd -r mysql [root@web ~]# useradd -g mysql -s /sbin/nologin -M -r mysql [root@web ~]# mkdir -pv /mysql/data [root@web ~]# chown -R mysql.mysql /mysql/data
安装mysql-5.6.16
该版本已经不再使用./configure,而使用cmake命令
cmake指定编译选项的方式不同于make,其实现方式对比如下
./configure 对应的是 cmake .
./configure --help 对应的是 cmake . -LH 或者是 ccmake .
[root@web ~]# tar xf mysql-5.6.16.tar.gz [root@web ~]# cd mysql-5.6.16 [root@web mysql-5.6.16~]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=bundled -DWITH_ZLIB=bundled -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci [root@web mysql-5.6.16~]# make && make install
出现错误需要删除CMakeCache.txt
,才能再次cmake
复制mysql服务脚本和mysql配置文件
[root@web mysql-5.6.16~]# cp support-files/mysql.server /etc/init.d/mysqld [root@web mysql-5.6.16~]# chmod +x /etc/init.d/mysqld [root@web mysql-5.6.16~]# chkconfig --add mysqld [root@web mysql-5.6.16~]# chkconfig mysqld on
修改my.cnf文件
[root@web mysql-5.6.16~]# cp support-files/my-default.cnf /etc/my.cnf [root@web mysql-5.6.16~]# vim /etc/my.cnf datadir = /mysql/data
初始化mysql
[root@web mysql-5.6.16~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/mysql/data --user=mysql
启动mysql服务
[root@web mysql-5.6.16~]# service mysqld start
将mysql相关命令添加至环境变量中
[root@web mysql-5.6.16~]# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh [root@web mysql-5.6.16~]# source /etc/profile
输出mysql库文件
[root@web mysql-5.6.16~]# echo "/usr/local/mysql/lib/" > /etc/ld.so.conf.d/mysql.conf [root@web mysql-5.6.16~]# ldconfig -v
输出mysql的头文件到系统头文件
[root@web mysql-5.6.16~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
输出mysql的帮助文档
[root@web mysql-5.6.16~]# vim /etc/man.config MANPATH /usr/local/mysql/man
给root用户设置密码
[root@web mysql-5.6.16~]# mysqladmin -u root password $mysqlrootpwd
mysql基础安装已完成,通过netstat测试端口,以及查看mysql.sock文件。
三、编译安装PHP
(1). 为支持apache的worker或event这两个MPM,编译时可使用--enable-maintainer-zts选项。
(2). 如果使用PHP5.3以上版本,为了链接MySQL数据库,可指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。 mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。
[root@web mysql-5.6.16~]# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd [root@web mysql-5.6.16~]# make && make install
安装相关的依赖包
安装图片资源软件
[root@web ~]# yum install gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
安装libxml(扩展标记语言)库
[root@web ~]# yum install libxml2 libxml2-devel
安装bzip2压缩库
[root@web ~]# yum install bzip2 bzip2-devel
安装mcrypt加密库
[root@web ~]# tar zxvf libmcrypt-2.5.6.tar.gz [root@web ~]# cd libmcrypt-2.5.6 [root@web libmcrypt-2.5.6~]# ./configure [root@web libmcrypt-2.5.6~]# make && make install [root@web libmcrypt-2.5.6~]# /sbin/ldconfig [root@web libmcrypt-2.5.6~]# cd libltdl [root@web libltdl~]# ./configure --enable-ltdl-install [root@web libltdl~]# make && make install
[可选] libiconv(对文本进行编码间的转换,用来处理中各种编码之间的转换)
[root@web ~]# tar zxvf libiconv-1.14.tar.gz [root@web ~]# cd libiconv-1.14 [root@web libiconv-1.14~]# ./configure [root@web libiconv-1.14~]# make && make install
[可选] mhash(哈希函数库)
[root@web ~]# tar zxvf mhash-0.9.9.9.tar.gz [root@web ~]# cd mhash-0.9.9.9 [root@web mhash-0.9.9.9~]# ./configure [root@web mhash-0.9.9.9~]# make && make install
编译安装php
[root@web ~]# tar xf php-5.5.10.tar.bz2 [root@web ~]# cd php-5.5.10 [root@web php-5.5.10~]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts [root@web php-5.5.10~]# make && make install
复制配置文件
[root@web php-5.5.10~]# cp php.ini-production /usr/local/php/etc/php.ini
整合httpd和php
[root@web php-5.5.10~]# vim /usr/local/apache/conf/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html 修改为:
DirectoryIndex index.php index.html
重启httpd服务
编写phpinfo测试文件
[root@web php-5.5.10~]# vim /usr/local/apache/htdocs/index.php <?php phpinfo(); ?>
如果上述报时间错误,需要修改php.ini参数
[root@web php-5.5.10~]# vim /etc/php.ini date.timezone = "PRC"
php格式有时候不一致,可能需要开启short_open_tag,将其至为On就行了
对php和mysql的连接进行测试,编写一下测试内容
[root@web php-5.5.10~]# vim /usr/local/apache/htdocs/index.php <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?>
编译安装xcache
XCache 是一个国人开发的又快又稳定的 PHPopcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过(在 linux 上)测试并支持所有现行 PHP 分支的最新发布版本。
[root@web ~]# tar xf xcache-3.1.0.tar.gz [root@web ~]# cd xcache-3.1.0 [root@web xcache-3.1.0~]# /usr/local/php/bin/phpize [root@web xcache-3.1.0~]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [root@web xcache-3.1.0~]# make && make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20121212/ [root@web xcache-3.1.0~]# mkdir /etc/php.d [root@web xcache-3.1.0~]# cp xcache.ini /etc/php.d/ [root@web xcache-3.1.0~]# vim /etc/php.d/xcache.ini [xcache-common] ;; non-Windows example: extension = /usr/local/php/lib/php/extensions/no-debug-zts-20121212/xcache.so ;; Windows example: ; extension = php_xcache.dll
再次重启httpd服务,查看效果
四、启用并查看服务器的状态
mod_status模块可以让管理员查看服务器的执行状态,它通过一个HTML页面展示了当前服务器的统计数据。这些数据通常包括但不限于:处于工作状态的worker进程数;空闲状态的worker进程数;当前服务器总共发送的字节数;
每个worker的状态,包括此worker已经响应的请求数,及由此worker发送的内容的字节数;
平均每秒钟响应的请求数、平均每秒钟发送的字节数、平均每个请求所请求内容的字节数;
服务器自上次启动或重启以来至当前的时长;
启用状态页面的方法很简单,只需要在主配置文件中添加如下内容即可:
[root@web ~]# vim /usr/local/apache/conf/httpd.conf <Location /server-status> SetHandler server-status Require all granted </Location>
通过http://ip/server-status访问即可得到状态
以上就是LAMP的基本安装搭建过程。