目录
LAMP概述
LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。
各组件作用
L:(平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台) 。
A:(前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容。
M:(后台)MySQL:作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。
P:(中间连接)PHP/Perl/Python:作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。
编译安装的优点
1、具有较大的自由度,功能可定制
2、可及时获得最新的软件版本
3、普遍适用于大多数Linux版本,便于一直使用
各组件安装顺序
在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序,PHP环境的安装一般放到最后安装,负责沟通 Web 服务器和数据库系统以协同工作。
实验过程:
编译安装阿帕奇 httpd 并配置服务
tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2
#解压 这三个安装包
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
#移动到 对应文件夹
提前安装解决依赖关系
yum -y install \
gcc \ #C语言的编译器
gcc-c++ \ #C++的编译器
make \ #源代码编译器(源代码转换成二进制文件)
pcre \ #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \ #perl的接口开发包
expat-devel \ #用于支持网站解析HTML、XML文件
perl #perl语言编译器
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \ #指定 httpd 服务程序的安装路径
--enable-so \ #启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \ #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \ #启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi #启用CGI(通用网关接口)脚本程序支持,便于增强网站的外部扩展应用访问能力
安装:
make && make install -j8
#编译make,注:-j8是指我用8颗内核运行这个安装程序,不能比自己电脑的内核高
配置httpd
[root@localhost bin]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
#拷贝模板
chkconfig --add httpd //将httpd加入到SERVICE管理器
#做两条软链接,方便使用
[root@localhost bin]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost bin]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
#注意关闭防火墙 安全保护
[root@localhost bin]# systemctl stop firewalld.service
[root@localhost bin]# setenforce 0
#检查语法
httpd -t 或 apachectl -t
安装MYSQL
yum -y install \
gcc \ #编译语言,翻译官
gcc-c++ \
ncurses \ #字符终端下图形互动功能的动态库
ncurses-devel \ #ncurses开发包
bison \ #语法分析器
cmake \ #mysql需要用cmake编译安装
autoconf #是一个用于生成可以自动配置软件源代码包以适应多种unix类系统的shell脚本工具。
tar xzvf mysql-5.6.26.tar.gz -C /opt #解压到opt目录
cd /opt/mysql-5.6.26/ 到解压包下 ls看看cmake 有没有
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf-8
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认使用的字符集校对规则
-DEXTRA_CHARSETS=all \ #指定支持其他字符集编码
-DSYSCONFIDIR=/etc \ #/etc/mysql --->系统中有一个默认的配置/etc/my.cnf
-DMYSQL_DATADIR=/home/mysql/ \ #数据文件
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock #指定连接数据库的通讯文件(启动数据库的时候会生成)
make && make install -j8 #开始安装
[root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
#将这个文件下的my-default.cnf复制到/etc改名为/my.cnf
[root@localhost mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.6.26]# chmod 755 /etc/init.d/mysqld
#更改它的执行权限
[root@localhost mysql-5.6.26]# chkconfig --add /etc/init.d/mysqld
#再添加命令
[root@localhost mysql-5.6.26]# chkconfig mysqld --level 35 on
#设置运行级别3和5的时候开机自启
[root@localhost mysql-5.6.26]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
#将/usr/local/mysql/bin路径下的命令全部放进/etc/profile里
[root@localhost mysql-5.6.26]# source /etc/profile
#刷新
[root@localhost mysql-5.6.26]# echo $PATH #查看系统环境
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
[root@localhost mysql-5.6.26]# useradd -s /sbin/nologin mysql
#新建一个mysql用户
[root@localhost mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/
#更改一下这个用户的属组属主
[root@localhost mysql-5.6.26]# ll -d /usr/local/mysql/
drwxr-xr-x. 13 mysql mysql 213 11月 3 13:45 /usr/local/mysql/
[root@localhost mysql-5.6.26]# /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
#初始化配置
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock #做软连接
配置MySQL
[root@localhost mysql-5.6.26]# vim /etc/init.d/mysqld
46 basedir=/usr/local/mysql
47 datadir=/home/mysql
[root@localhost mysql-5.6.26]# ss -ntap |grep "3306"
LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=93293,fd=10))
#验证MySQL是否启动
设置MySQL账户
安装PHP
php 处理动态请求,在此处他是一个后台的代码程序,不是一个服务(所以不需要启动脚本)
安装GD库和GD库关联程序,用来处理和生成图片
yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
cd /opt #到opt目录下
tar xjvf php-5.6.11.tar.bz2 #解压安装包
cd php-5.6.11
./configure \
--prefix=/usr/local/php5 \
--with-gd \ #激活gd 库的支持
--with-zlib \ #支持zlib功能,提供数据压缩功能的函式库
--with-apxs2=/usr/local/httpd/bin/apxs \ #指定httpd服务提供的apxs模块支持程序的文件位置
#用于指定Apache可以加载/识别对应的功能模块,此处可以让php服务模块直接提供给apache加载使用
--with-mysql=/usr/local/mysql \ #关联数据库
--with-config-file-path=/usr/local/php5 \ #指定配置文件
--enable-mbstring #启用多字节字符串功能,以便支持中文等代码
为了可以httpd mysql 对接,为了可以更好的处理动态请求
./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring
make && make install -j4 #安装
#优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php5/bin/* /usr/local/bin/
#修改Apache配置文件让Apache支持PHP
vi /etc/httpd.conf
#添加index.php
255 <IfModule dir_module>
256 DirectoryIndex index.html index.php
257 </IfModule>
#在392行下方插入一下内容,让Apache可以支持.php的网页文件
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
##检查156行默认支持php5的模块是否存在
---->wq
#创建、编辑php页面文件
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
<?php
phpinfo();
?>
#重启服务
service httpd stop
service httpd start
restart --> stop start
在浏览器上输入 http://192.168.159.103/index.php 测试
成功的话会出现下图
安装论坛
#建立连接
[root@localhost php5]# mysql -u root -p
Enter password: #输入密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.26 Source distribution
Copyright (c) 2000, 2015, 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 bbs;
Query OK, 1 row affected (0.00 sec)
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected (0.01 sec)
#刷新一下数据库
mysql> flush privileges;
#可以用show看一下创建的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs | #比上面多了一个bbs
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> exit
Bye
[root@localhost php5]# cd /opt/
[root@localhost opt]#
[root@localhost opt]# ls
apr-1.6.2.tar.gz httpd-2.4.29 mysql-5.6.26.tar.gz
apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 php-5.6.11
Discuz_X2.5_SC_UTF8.zip mysql-5.6.26 php-5.6.11.tar.bz2
[root@localhost opt]# unzip /opt/Discuz_X2.5_SC_UTF8.zip -d /opt/dis
[root@localhost opt]# cd dis/
[root@localhost dis]# ls
readme upload utility
[root@localhost dis]# cp -r upload/ /usr/local/httpd/htdocs/bbs
#在网页上输入 http://192.168.159.103/bbs/install/
#得到下图
#图上有红叉是权限问题,进去看看
[root@localhost dis]# cd /usr/local/httpd/htdocs/bbs
[root@localhost bbs]# ll
总用量 76
-rw-r--r--. 1 root root 2603 11月 3 15:18 admin.php
drwxr-xr-x. 11 root root 163 11月 3 15:18 api
-rw-r--r--. 1 root root 727 11月 3 15:18 api.php
drwxr-xr-x. 2 root root 23 11月 3 15:18 archiver
drwxr-xr-x. 2 root root 90 11月 3 15:18 config
-rw-r--r--. 1 root root 922 11月 3 15:18 connect.php
-rw-r--r--. 1 root root 253 11月 3 15:18 cp.php
-rw-r--r--. 1 root root 106 11月 3 15:18 crossdomain.xml
drwxr-xr-x. 13 root root 216 11月 3 15:18 data
-rw-r--r--. 1 root root 5558 11月 3 15:18 favicon.ico
-rw-r--r--. 1 root root 2110 11月 3 15:18 forum.php
-rw-r--r--. 1 root root 823 11月 3 15:18 group.php
-rw-r--r--. 1 root root 1223 11月 3 15:18 home.php
-rw-r--r--. 1 root root 5448 11月 3 15:18 index.php
drwxr-xr-x. 5 root root 64 11月 3 15:18 install
-rw-r--r--. 1 root root 1040 11月 3 15:18 member.php
-rw-r--r--. 1 root root 1381 11月 3 15:18 misc.php
-rw-r--r--. 1 root root 1757 11月 3 15:18 plugin.php
-rw-r--r--. 1 root root 985 11月 3 15:18 portal.php
-rw-r--r--. 1 root root 582 11月 3 15:18 robots.txt
-rw-r--r--. 1 root root 1158 11月 3 15:18 search.php
drwxr-xr-x. 10 root root 168 11月 3 15:18 source
drwxr-xr-x. 6 root root 72 11月 3 15:18 static
drwxr-xr-x. 3 root root 38 11月 3 15:18 template
drwxr-xr-x. 6 root root 92 11月 3 15:18 uc_client
drwxr-xr-x. 13 root root 241 11月 3 15:18 uc_server
-rw-r--r--. 1 root root 1691 11月 3 15:18 userapp.php
#加上权限
[root@localhost bbs]# chown -R daemon ./config/
[root@localhost bbs]# chown -R daemon ./data/
[root@localhost bbs]# chown -R daemon ./uc_client/
[root@localhost bbs]# chown -R daemon ./uc_server/data/
#再次查看
[root@localhost bbs]# ll
总用量 76
-rw-r--r--. 1 root root 2603 11月 3 15:18 admin.php
drwxr-xr-x. 11 root root 163 11月 3 15:18 api
-rw-r--r--. 1 root root 727 11月 3 15:18 api.php
drwxr-xr-x. 2 root root 23 11月 3 15:18 archiver
drwxr-xr-x. 2 daemon root 90 11月 3 15:18 config
-rw-r--r--. 1 root root 922 11月 3 15:18 connect.php
-rw-r--r--. 1 root root 253 11月 3 15:18 cp.php
-rw-r--r--. 1 root root 106 11月 3 15:18 crossdomain.xml
drwxr-xr-x. 13 daemon root 216 11月 3 15:18 data
-rw-r--r--. 1 root root 5558 11月 3 15:18 favicon.ico
-rw-r--r--. 1 root root 2110 11月 3 15:18 forum.php
-rw-r--r--. 1 root root 823 11月 3 15:18 group.php
-rw-r--r--. 1 root root 1223 11月 3 15:18 home.php
-rw-r--r--. 1 root root 5448 11月 3 15:18 index.php
drwxr-xr-x. 5 root root 64 11月 3 15:18 install
-rw-r--r--. 1 root root 1040 11月 3 15:18 member.php
-rw-r--r--. 1 root root 1381 11月 3 15:18 misc.php
-rw-r--r--. 1 root root 1757 11月 3 15:18 plugin.php
-rw-r--r--. 1 root root 985 11月 3 15:18 portal.php
-rw-r--r--. 1 root root 582 11月 3 15:18 robots.txt
-rw-r--r--. 1 root root 1158 11月 3 15:18 search.php
drwxr-xr-x. 10 root root 168 11月 3 15:18 source
drwxr-xr-x. 6 root root 72 11月 3 15:18 static
drwxr-xr-x. 3 root root 38 11月 3 15:18 template
drwxr-xr-x. 6 daemon root 92 11月 3 15:18 uc_client
drwxr-xr-x. 13 root root 241 11月 3 15:18 uc_server
-rw-r--r--. 1 root root 1691 11月 3 15:18 userapp.php
#刷新一下网站
下一步后会遇到一点小问题
[root@localhost bbs]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.26 Source distribution
Copyright (c) 2000, 2015, 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> select user,host from mysql.user;
+---------+-----------------------+
| user | host |
+---------+-----------------------+
| bbsuser | % |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+---------+-----------------------+
7 rows in set (0.00 sec)
#将空白的用户删除
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)
#刷新一下
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#再次查看
mysql> select user,host from mysql.user;
+---------+-----------------------+
| user | host |
+---------+-----------------------+
| bbsuser | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
| root | localhost.localdomain |
+---------+-----------------------+
5 rows in set (0.00 sec)
mysql>
mysql> exit
Bye
#回到网页点击下一步
论坛搭建完成!