LAMP 环境搭建
一、MySQL 部署安装
1. MySQL下载
官方下载地址:http://dev.mysql.com/downloads/mysql/#downloads
镜像文件下载:https://downloads.mysql.com/archives/community/
1.1 下载MySQL安装程序
cd /usr/local/src/
wget ftp://ftp.stu.edu.tw/pub/Unix/Database/Mysql/Downloads/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz
1.2 初始化安装
#### 解压安装包
tar zxvf /usr/local/src/mysql-5.1.73-linux-i686-glibc23.tar.gz
#### 移动解压的安装文件到/usr/local 目录下,并修改名称为mysql
mv mysql-5.1.73-linux-i686-glibc23 /usr/local/mysql
#### 建立MySQL账户
useradd -s /sbin/nologin mysql
#### 创建数据存放目录
mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
#### 初始化数据库
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
#### user 定义数据库的所属主,datadir 定义数据库数据存放位置,建议放到大空间的分区上,这个目录需要创建
#### 这一步骤很关键,出现两个“OK” 说明执行正确。
1.3 修改配置、启动文件等
#### 拷贝配置文件
cp support-files/my-large.cnf /etc/my.cnf
#### 拷贝启动脚本文件、并修改属性
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
#### 修改启动脚本文件
vim /etc/init.d/mysqld
修改以下参数修("basedir"MySQL的安装程序目录;"datadir"MySQL数据存放目录,前面初始化数据库时定义的目录)
basedir=/usr/local/mysql
datadir=/data/mysql
1.4 启动
将启动脚本加入系统服务项,设置开机启动、并开启服务
添加服务:chkconfig --add mysqld
设置开机启动:chkconfig mysqld on
启动MySQL:service mysqld start
如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err
检查MySQL是否启动:ps aux |grep mysqld
二、Apache 部署安装
1. Apache下载
Apache官网下载地址:http://httpd.apache.org/
下载Apache安装程序
cd /usr/local/src/
wget http://apache.fayea.com/httpd/httpd-2.4.37.tar.gz
解压: tar jvxf httpd-2.4.37.tar.bz2
2. 编译安装
2.1 安装依赖库
yum install -y pcre pcre-devel apr apr-devel zlib-devel gcc
2.2 配置编译参数
cd httpd-2.4.37
./configure
--prefix=/usr/local/httpd
--with-included-apr
--enable-so
--enable-deflate=shared
--enable-expires=shared
--enable-rewrite=shared
--with-pcre
--prefix
指定安装位置;
--with-included-apr
apache依赖包 能让httpd跨平台运行;
--enable-so
表示启用DSO;
--enable-deflate=shared
表示共享的方式编译deflate
,后面的参数同理;
--with-pcre
正则相关的运行库。
编译安装: make && make install
以上操作可以使用 echo $? 来检查是否正确执行,返回值为‘0’为正常;否则需要根据错误提示去解决问题。
2.3 相关报错
-
报错:
configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
-
解决方法:
cd /usr/local/src/httpd-2.4.37/srclib
#### 下载 apr
wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz
#### 解压、改名
tar -zxvf apr-1.6.5.tar.gz
mv apr-1.6.5 apr
#### 下载apr-util
wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
#### 解压、改名
tar -zxvf apr-util-1.6.1.tar.gz
mv apr-util-1.6.1 apr-util
#### 参考网址:http://www.cnblogs.com/llius/p/5110628.html
3. Apache 相关参数
-
Apache模块
-
/usr/local/apache/bin/apachectl -M
列出相关模块(-l 列出静态模块、-t查看配置文件是否有语法错误), -
显示的模块名(shared)为动态模块,显示的模块名(static)是静态模块;
-
-
动态(shared)模块文件存放位置
/usr/local/apache/modules/
-
动态模块文件为绿色.so结尾模块文件(动态文件为共享文件)
如:httpd.exp libphp5.so mod_deflate.so mod_expires.so mod_rewrite.so
-
静态(static)模块编译后文件存放位置
/usr/local/apache/bin/httpd
4. 启动Apache
启动:/usr/local/httpd/bin/apachectl start
重启:/usr/local/httpd/bin/apachectl restart
停止:/usr/local/httpd/bin/apachectl stop
重新加载配置:/usr/local/httpd/bin/apachectl graceful
(重新加载配置,没有重新启动进程)
DSO: 是Dynamic Shared Objects(动态共享目标)的缩写,它提供了一种在运行时将特殊格式的代码在程序运行需要时,将需要的部分从外存调入内存执行的方法。Apache 支持动态共享模块,也支持静态模块,静态的话,会把需要的目标直接编译进apache的可执行文件中,相比较动态,虽然省去了加载共享模块的步骤,但是也加大了二进制执行文件的空间,变得臃肿。
三、PHP 部署安装
1. 下载php
PHP官方下载地址:http://php.net/downloads.php
下载php安装程序
cd /usr/local/src
wget http://101.96.10.64/cn2.php.net/distributions/php-5.6.39.tar.gz
解压: tar zxf php-5.6.39.tar.gz
2. 编译安装
2.1 安装依赖库
yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
2.2 配置编译参数
cd php-5.6.39
./configure
--prefix=/usr/local/php
--with-apxs2=/usr/local/httpd/bin/apxs
--with-config-file-path=/usr/local/php/etc
--with-mysql=/usr/local/mysql
--with-pdo-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-libxml-dir --with-gd --with-jpeg-dir
--with-png-dir --with-freetype-dir
--with-iconv-dir --with-zlib-dir
--with-bz2 --with-openssl --with-mcrypt
--enable-soap --enable-gd-native-ttf
--enable-mbstring --enable-sockets --enable-exif
编译安装:make && make install
2.3 相关报错
报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决:
rpm -ivh "https://mirrors.tuna.tsinghua.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm"
yum install -y libmcrypt libmcrypt-devel
因为centos6.x 默认的yum源没有libmcrypt-devel 这个包,所以需要借助第三方yum源。
3. 配置文件
-
PHP配置文件(php.ini) 在
/usr/local/php/etc/
目录下,默认这个配置文件是空的,需要在源文件中拷贝预配置文件然后进行配置修改; -
预配置文件目录:
/usr/local/src/php-5.6.39
,此目录下有两个预配置文件:- 开发使用:
php.ini-development
- 是生产使用
php.ini-production
- 开发使用:
-
正常Web服务器使用直接拷贝:
php.ini-production
文件并命名为php.ini
cp /usr/local/src/php-5.6.39/php.ini-production /usr/local/php/etc/php.ini
-
拷贝后重新加载Apache:
/usr/local/httpd/bin/apachectl graceful
四、Apace结合PHP、验证 LAMP
1. Apache结合PHP
- 编辑Apache主配置文件:
#### 修改主机名
#ServerName www.example.com:80 修改为:ServerName localhost:80
#### 添加PHP解析(AddType application/x-gzip .gz .tgz 在该行下面添加)
AddType application/x-httpd-php .php
#### 增加PHP默认页索引(增加index.php)
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
2. 测试LAMP
2.1 启动Apache
-
检查配置文件是否正确:
/usr/local/httpd/bin/apachectl -t
如果有错误,继续修改httpd.conf, 如果是正确的则显示为Syntax OK
-
启动apache:
/usr/local/httpd/bin/apachectl start
-
查看是否启动:
netstat -lnp |grep httpd
如果有显示下列信息,则启动成功
tcp 0 0 :::80 :::* LISTEN 7667/httpd
2.2 测试WBE界面解析
-
使用curl命令简单测试:
curl localhost
显示以下字样,配置正确
<html><body><h1>It works!</h1></body></html>[root@CentOS-1 ~]#
-
测试是否正确解析PHP,按照下面内容创建PHP页面;
然后使用curl localhost/1.php
测试; 显示php解析正常[root@localhost ~]#
配置正确
#### 创建PHP页面
vim /usr/local/httpd/htdocs/1.php
#### PHP页面内容
<?php
echo "php解析正常";
?>
初次使用浏览器访问我们的web服务的时候,你可能无法访问,这是因为防火墙的缘故。请运行下面的命令:
[root@localhost ~]# iptables -F
这样就可以清除系统默认的防火墙规则,放行80端口。
LAMP环境是搭建好了,这其实仅仅是安装上了软件而已,而具体的配置还是有很多工作要做的呢?也就是说,你虽然搭建出来了环境,但是如果不会配置细节的东西,相当于没有任何工作经验,所以还是多配置配置apache或者php
五、示例:安装 Discuz 论坛
1. 下载、解压安装
#### 创建安装目录
[root@CentOS-1 ~]#mkdir /data/www
[root@CentOS-1 ~]#cd /data/www
#### 下载Discuz安装程序包
[root@CentOS-1 www]#wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
[root@CentOS-1 www]#upzip Discuz_X3.2_SC_GBK.zip
[root@CentOS-1 www]# mv upload/* ./
[root@CentOS-1 www]#rm -rf readme/ uploal/ utility/ Discuz_X3.2_SC_GBK.zip
编辑apache配置文件
[root@CentOS-1 www]# vim /usr/local/httpd/conf/httpd.conf
#### 启用(删除 # ) Include conf/extra/httpd-vhosts.conf
#### 修改配置参数
<Directory />
AllowOverride none
Require all denied #改为Require all granted
</Directory>
2. 修改配置文件
[root@CentOS-1 www]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
#### 默认有两个样例,删除一个
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com #管理员邮箱,这里删除
DocumentRoot "/data/www" #创建的安装目录位置,这里修改成 /data/www
ServerName www.chenyue.com #域名地址
ServerAlias www.123qwe.com #别名(第二域名)
ErrorLog "logs/dummy-host.example.com-error_log" #错误日志
CustomLog "logs/dummy-host.example.com-access_log" common #访问日志(这里两个个日志线先用#注释掉,不用)
</VirtualHost>
#### 查看修改的配置是否有错误(Syntax OK 配置正确)
/usr/local/httpd/bin/apachectl -t
#### 启动、重新加载apache
/usr/local/httpd/bin/apachectl start
3. WEB 安装界面
浏览器访问,www.chenyue.com/www.123qwe.com (前提需要在电脑的host文件中,指定域名指向服务器地址)
打开浏览器按照提示安装,出现如图提示;修改对应文件夹权限即可
先看一下apache的进程是什么用户
[root@CentOS-1 www]# ps aux |grep http
root 1444 0.0 1.5 30492 12096 ? Ss 21:49 0:00 /usr/local/apache/bin/httpd -k start
daemon 1511 0.0 1.3 30624 10312 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1512 0.0 1.4 31432 11160 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1513 0.0 1.3 30624 10312 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1514 0.0 1.4 31472 11224 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1515 0.0 1.3 30624 10312 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1516 0.0 1.2 30492 9784 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1517 0.0 1.2 30492 9784 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1518 0.0 1.2 30492 9784 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1519 0.0 1.2 30492 9784 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
daemon 1520 0.0 1.2 30492 9784 ? S 22:05 0:00 /usr/local/apache/bin/httpd -k start
root 1522 0.0 0.0 5980 740 pts/0 S+ 22:27 0:00 grep http
这里apache的进程是daemon用户在运行;我们需要将上图中提示的文件夹设置成daemon用户(或者修改文件夹权限是可以的,但是修改后文件夹权限较大不安全;这里修改所属主)
[root@CentOS-1 www]# chown -R daemon config data uc_client/data uc_server/data
刷新浏览器,选择全新安装
出现mysql配置界面,我们先不配置,先将服务器中的mysql配置好,在到这边操作;
4. 配置Mysql
先设置一下Linux MySQL 配置命令mysql
(原配置命令:/usr/local/mysql/bin/mysql
)
[root@CentOS-1 www]# which mysql //查看mysql绝对路径
/usr/bin/mysql //这里的mysql是系统自带的rpm包安装的
[root@CentOS-1 www]# rpm -qf /usr/bin/mysql //查看mysql安装包名
mysql-5.1.71-1.el6.i686
[root@CentOS-1 www]# yum remove mysql //卸载自带的mysql,自带与我们安装的会有冲突,
mysql被删除,配置的话;可以使用绝对路径/usr/local/mysql/bin/mysql
;
或重新指定mysql命令绝对路径,写一个path.sh文件
[root@CentOS-1 www]# vim /etc/profile.d/path.sh
#!/bin/bash
export PATH=$PATH:/usr/local/mysql/bin
~
~
~
[root@CentOS-1 www]# source /etc/profile.d/path.sh //或source !$
现在使用mysql
的配置文件,就是之前自己安装的mysql的配置
[root@CentOS-1 www]# which mysql
/usr/local/mysql/bin/mysql //现在的mysql的绝对路径,是之前自己安装的位置
创建一个库
[root@CentOS-1 www]# mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.1.73-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> create database discuz; //创建数据库的语句
Query OK, 1 row affected (0.00 sec)
mysql> grant all on discuz.* to 'discuz'@'localhost' identified by '1234qwer'; //创建用户名:discuz,密码:1234qwer
Query OK, 0 rows affected (0.00 sec)
mysql> Ctrl-C -- exit!
Aborted
WEB界面输入MySQL配置账户等信息,点击“下一步” 安装即可;