目录
前言
LAMP (Linux- Apache-MySQL-PHP〉网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,PHP(或Perl、Python)编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
一、LAMP概述
Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。
1、各个部分的作用
L(Linux):LAMP架构的基础,提供用于支撑Web站点的操作系统。
A(Apache网站服务):LAMP架构的前端,向用户提供网站服务、发送网页、图片等文件内容
M(Mysql数据库服务):LAMP架构的后端,存储各种账号信息、产品信息、客户资料、业务数据等,其他程序可以通过SQL语句进行查询、更改。
P(PHP/Perl/Python编程语言):负责解释动态网页文件,提供Web应用程序开发和运行环境。
二、LAMP的安装
1、LAMP安装顺序
Linux系统—》Apache服务器—》Mysql数据库—》PHP环境
(PHP—般放在最后,其他的没有严格要求)
2、编译安装Apache httpd服务
2-1、关闭防火墙,将安装Apache所需软件包传到/opt目录下
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
2-2、安装环境依赖包
yum -y install \
gcc \ #C语言的编译器
gcc-c++ \ #C++的编译器
make \ #源代码编译器(源代码转换成二进制文件)
pcre \ #pcre是一个Perl函数库,包括perl兼容的正则表达式库
pcre-devel \ #perl的接口开发包
expat-devel \ #用于支持网站解析HTML、XML文件
perl #perl语言编译
yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl
2-3、配置软件模块
[root@localhost opt]# tar zxf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar jxf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util
[root@localhost opt]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \ #指定httpd服务程序的安装路径
--enable-so \ #启用动态加载模块支持,使httpd具备进一步扩展功能的能力
--enable-rewrite \ #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \ #启用字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi #启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力
2-4、编译及安装
make -j 2 && make install #make -j 2 表示用2核同时进行编译,速度快一些
2-5、优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
2-6、添加httpd 系统服务
vim /lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
systemctl start httpd.service
systemctl enable httpd.service
2-7、修改httpd服务配置文件
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
--52行--修改
Listen 192.198.159.80:80 #自己服务器的IP
--197行--取消注释,修改
ServerName www.ss.com:80 #域名自己设置
--221行--默认首页存放路径 #无需修改
DocumentRoot "/usr/local/httpd/htdocs"
--255行--默认首页文件名设置 #无需修改
DirectoryIndex index.html
[root@localhost httpd-2.4.29]# httpd -t 或 apachectl -t #检查配置文件的配置项是否有误
[root@localhost httpd-2.4.29]# cat /usr/local/httpd/htdocs/index.html
[root@localhost httpd-2.4.29]# systemctl restart httpd.service
[root@localhost httpd-2.4.29]# netstat -natp | grep 80
2-8、访问验证
[root@localhost httpd-2.4.29]# echo "192.168.159.80 www.ss.com" >> /etc/hosts
3、编译安装mysqld服务
3-1、将安装mysql所需软件包传到/opt目录下
3-2、安装环境依赖包
yum -y install \
gcc \
gcc-c++ \
ncurses \ #字符终端下图形互动功能的动态库
ncurses-devel \ #ncurses开发包
bison \ #语法分析器
cmake #mysql需要用cmake编译安装
yum -y install \
gcc \
gcc-c++ \
ncurses \
ncurses-devel \
bison \
cmake
3-3、配置软件模块
tar zxf mysql-boost-5.7.20.tar.gz
tar zxf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
注意:如果在CWAKE的过程中有报错,当报错解决后,需要把源码目录中的CNakeCache.txt文件删除,然后再重新CNKE,否则错误依旧
3-4、编译及安装
make -j 2 && make install
3-5、创建mysql用户
[root@www mysql-5.7.20]# useradd -M -s /sbin/nologin mysql
3-6、修改mysql配置文件
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
3-7、更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql
chown mysql:mysql /etc/my.cnf
3-8、设置路径环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/
source /etc/profile
echo $PATH
3-9、初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
3-10、添加mysqld系统服务
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3306
3-11、修改mysql的登录密码
mysqladmin -u root -p password "123456"
3-12、授权远程登录
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by '123456';
show databases;
4、编译安装PHP解析环境
4-1、将PHP所需软件包传到/opt目录下
4-2、安装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
4-3、配置软件模块
tar jxf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/
./configure \
--prefix=/usr/local/php7 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
4-4、编译及安装
make && make install
4-5、.复制模版文件作为PHP的主配置文件,并进行修改
cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
vim /usr/local/php7/php.ini
--939行--取消注释,修改
date.timezone = Asia/Shanghai
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
4-6、优化把PHP的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php7/bin/* /usr/local/bin/
php -m
4-7、修改httpd服务的配置文件,让apache支持PHP
vim /etc/httpd.conf
---156行---- 检查支持php7的模块是否存在
LoadModule php7_module modules/libphp7.so
--256行--修改首页文件名设置
DirectoryIndex index.html index.php
--393行--插入以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
4-8、.验证PHP测试页
rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
systemctl restart httpd.service
5、安装论坛
5-1、将论坛所需软件包传到/opt目录下
5-2、创建一个数据库
mysql -uroot -p123456
mysql> CREATE DATABASE bbs;
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码
mysql>flush privileges;
#刷新数据库
5-3、解压并配置
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
#解压论坛压缩包
cd /opt/dis
cd dir_SC_UTF8/
cp -r upload/ /usr/local/httpd/htdocs/bbs
#上传站点更新包
cd /usr/local/httpd/htdocs/bbs
#切换论坛目录
chown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data
#更改论坛目录属主
5-4、下面测试数据库工作是否正常
mysql -u root -p
CREATE DATABASE sky;
GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';
flush privileges;
vim /usr/local/http/htdocs/index.php
<?php
$link=mysql_connect('192.168.226.128','skyuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
5-5、如遇到报错信息如下
Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /data/www/install/index.php:12 Stack trace: #0 {main} thrown in /data/www/install/index.php on line 12
解决方法
#致命错误:未捕获错误:未定义的函数的调用set_magic_quotes_runtime(),在这个文件的第12行,找到该路径下的index.php这个文件打开,查找set_magic_quotes_runtime
#切换目录
cd /usr/local/httpd/htdocs/bbs/install
vim index.php进行编辑
//把
@set_magic_quotes_runtime(0);
//替代成
@ini_set("magic_quotes_runtime",0);
故障问题已解决
测试验证结果正常,论坛网站能正常打开
总结
LAMP架构的网站具有性能出色、成本低廉、部署灵活、快速开发、安全稳定等特点,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用LAMP架构是一个不错的方案。