> 文档中心 > LAMP及论坛搭建纯实操

LAMP及论坛搭建纯实操

目录

前言

一、编译安装Apache

1.1 关闭防火墙,将安装Apache所需的软件包传到/opt/目录下

1.2 安装环境依赖包

 1.3 配置软件模块

 1.4 编译及安装

 1.5 优化配置文件路径

 1.6 添加httpd系统服务

 1.7 修改httpd 服务配置文件

 1.8 浏览器访问验证

 二、编译安装mysqld服务

2.1 将安装mysql 所需软件包传到/opt目录下

2.2 安装环境依赖包

 2.3 配置软件模块

 2.4 编译及安装

 2.5 创建mysql用户

2.6 修改mysql 配置文件

 2.7 更改mysql安装目录和配置文件的属主属组

2.8 设置路径环境变量

2.9 初始化数据库

2.10 添加mysqld系统服务

2.11 修改mysql 的登录密码

2.12 授权远程登录

 三、编译安装PHP 解析环境

3.1 将安装PHP 所需软件包传到/opt目录下

3.2 安装GD库和GD库关联程序,用来处理和生成图片

3.3 配置软件模块

3.4 编译及安装

3.5 复制模版文件作为PHP 的主配置文件,并进行修改

3.6 优化把PHP

3.7 修改httpd 服务的配置文件,让apache支持PHP

3.8 验证PHP 测试页

四、安装论坛

4.1 创建数据库,并进行授权

4.2 解压论坛压缩包

4.3 更改论坛目录的属主

4.4 浏览器访问验证

总结


前言

因篇幅问题,我将LAMP的原理和实操分开,本篇为实操部分,原理部分可去我的主页翻看。

链接:https://pan.baidu.com/s/1DJAwLc4vo3N06QsybI0V_w 
提取码:lsna 
本实验所需的软件包

1.实验开始前,对虚机做一些设置,我设置内存4G,处理器一共6核,这样可以提高mysql的编译效率。

 

 2.再检查磁盘剩余的大小,整个项目大概需要十几个G,如果不够提早进行扩容

关于如何扩容我就不再单独写的,我再搭建过程的遇到磁盘空间不够搭建失败的问题,然后百度到了扩容方法,直接把连接放在这里 

centos7扩容根目录(/dev/mapper/centos-root) - 知乎

一、编译安装Apache

1.1 关闭防火墙,将安装Apache所需的软件包传到/opt/目录下

systemctl stop firewalldsystemctl disable firewalldsetenforce 0

1.2 安装环境依赖包

使用网络源还是本地仓库都可

 yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl

 1.3 配置软件模块

#解压软件包cd /opt/tar zxvf apr-1.6.2.tar.gztar zxvf apr-util-1.6.0.tar.gztar jxvf httpd-2.4.29.tar.bz2#apr-1.6.2目录和apr-util-1.6.0目录,移动到/opt/httpd-2.4.29/srclib/目录下mv apr-1.6.2 /opt/httpd-2.4.29/srclib/aprmv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util #切换至httpd源代码包的释放目录,运行configure脚本,指定安装路径和安装模块 cd /opt/httpd-2.4.29/ ./configure \ > --prefix=/usr/local/httpd \  > --enable-so \                > --enable-rewrite \ > --enable-charset-lite \ > --enable-cgi./configure \--prefix=/usr/local/httpd \#指定将 httpd 服务程序的安装路径--enable-so \#启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力--enable-rewrite \#启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护--enable-charset-lite \#启动字符集支持,以便支持使用各种字符集编码的页面--enable-cgi#启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力

 

 1.4 编译及安装

make -j 6 && make install#make -j 6  表示开6核同时进行编译,大家根据自己的核数选择

 1.5 优化配置文件路径

把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/httpd/conf/httpd.conf /etc/ln -s /usr/local/httpd/bin/* /usr/local/bin/

 1.6 添加httpd系统服务

方法一:cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd#用于service服务管理chmod +x /etc/init.d/httpdvi /etc/init.d/httpd#!/bin/bash#在第一行前插入新行,添加此三行内容# chkconfig: 35 85 21#35级别自动运行  第85个启动 第21个关闭# description: Apache is a World Wide Web serverchkconfig --add httpd     #将httpd服务加入到service管理器systemctl start httpd.service或service httpd start方法二: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#PID文件位置ExecStart=/usr/local/bin/apachectl $OPTIONS#服务的运行命令ExecReload=/bin/kill -HUP $MAINPID#根据PID重载配置[Install]#服务安装的相关设置WantedBy=multi-user.target#设置为多用户systemctl start httpd.servicesystemctl enable httpd.service

 1.7 修改httpd 服务配置文件

vim /etc/httpd.conf--52行--修改Listen 192.168.109.132:80   #根据自己的IP地址设置--197行--取消注释,修改ServerName www.stevelu.com:80   #域名自拟--221行--默认首页存放路径DocumentRoot "/usr/local/httpd/htdocs"--255行--默认首页文件名设置DirectoryIndex index.htmlhttpd -t  或 apachectl -t#检查配置文件的配置项是否有误cat /usr/local/httpd/htdocs/index.htmlsystemctl restart httpd.service

 

 1.8 浏览器访问验证

netstat -anpt | grep 80echo "192.168.109.132 www.stevelu.com" >> /etc/hostshttp://192.168.109.132http://www.stevelu.com

 

 

 二、编译安装mysqld服务

2.1 将安装mysql 所需软件包传到/opt目录下

mysql-5.7.17.tar.gzboost_1_59_0.tar.gz#支持c++的运行库

 

2.2 安装环境依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake gcc#C语言的编译器 gcc-c++   #C++的编译器 ncurses                 #字符终端下图形互动功能的动态库 ncurses-devel           #ncurses开发包 bison                   #语法分析器 cmake                   #mysql需要用cmake编译安装

 2.3 配置软件模块

#解压tar zxvf mysql-5.7.17.tar.gztar zxvf boost_1_59_0.tar.gzcd /optmv boost_1_59_0 /usr/local/boost#重命名cd /opt/mysql-5.7.17/cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \#指定mysql的安装路径-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径-DSYSCONFDIR=/etc \ #指定配置文件的存储路径-DSYSTEMD_PID_DIR=/usr/local/mysql \     #指定进程文件的存储路径-DDEFAULT_CHARSET=utf8  \  #指定默认使用的字符集编码,如 utf8-DDEFAULT_COLLATION=utf8_general_ci \#指定默认使用的字符集校对规则-DWITH_EXTRA_CHARSETS=all \#指定支持其他字符集编码-DWITH_INNOBASE_STORAGE_ENGINE=1 \#安装INNOBASE存储引擎-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \      #安装BLACKHOLE存储引擎 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \     #安装FEDERATED存储引擎 -DMYSQL_DATADIR=/usr/local/mysql/data \  #指定数据库文件的存储路径-DWITH_BOOST=/usr/local/boost \   #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost-DWITH_SYSTEMD=1#生成便于systemctl管理的文件存储引擎选项:MYISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)----------------------------------------------------------------------------------------------------------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 \-DWITH_EMBEDDED_SERVER=OFF

 2.4 编译及安装

make -j 6 && make install#还是根据自己的情况选择核数

 贴一张过程图,个人觉得很帅,理科生的审美吧可能是

 

 2.5 创建mysql用户

useradd -M -s /sbin/nologin  mysql

2.6 修改mysql 配置文件

 直接将原文件内容删除(ggdG),把下面内容加进去

vim /etc/my.cnf#删除原配置项,再重新添加下面内容[client]#客户端设置port = 3306socket = /usr/local/mysql/mysql.sock[mysql]#服务端设置port = 3306socket = /usr/local/mysql/mysql.sockauto-rehash#开启自动补全功能[mysqld]#服务全局设置user = mysql#设置管理用户basedir=/usr/local/mysql#指定数据库的安装目录datadir=/usr/local/mysql/data#指定数据库文件的存储路径port = 3306#指定端口character-set-server=utf8#设置服务器字符集编码格式为utf8pid-file = /usr/local/mysql/mysqld.pid#指定pid 进程文件路径socket=/usr/local/mysql/mysql.sock#指定数据库连接文件bind-address = 0.0.0.0#设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开skip-name-resolve#禁用DNS解析max_connections=2048#设置mysql的最大连接数default-storage-engine=INNODB#指定默认存储引擎max_allowed_packet=16M#设置数据库接收的数据包大小的最大值server-id = 1#指定服务ID号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----------------------------------------------------------------------------------------------------------sql_mode常用值如下:NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常STRICT_TRANS_TABLES在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制NO_AUTO_CREATE_USER禁止GRANT创建密码为空的用户NO_AUTO_VALUE_ON_ZEROmysql中的自增长列可以从0开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错NO_ZERO_IN_DATE不允许日期和月份为零NO_ZERO_DATEmysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告ERROR_FOR_DIVISION_BY_ZERO在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MySQL返回NULLPIPES_AS_CONCAT将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似ANSI_QUOTES启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符----------------------------------------------------------------------------------------------------------[client]port = 3306socket=/usr/local/mysql/mysql.sock[mysql]port = 3306socket = /usr/local/mysql/mysql.sockauto-rehash[mysqld]user = mysqlbasedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport = 3306character-set-server=utf8pid-file = /usr/local/mysql/mysqld.pidsocket=/usr/local/mysql/mysql.sockbind-address = 0.0.0.0skip-name-resolvemax_connections=2048default-storage-engine=INNODBmax_allowed_packet=16Mserver-id = 1sql_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

 2.7 更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/chown mysql:mysql /etc/my.cnf

2.8 设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profilesource /etc/profile

2.9 初始化数据库

cd /usr/local/mysql/bin/./mysqld \--initialize-insecure \#生成初始化密码为空--user=mysql \ #指定管理用户--basedir=/usr/local/mysql \ #指定数据库的安装目录--datadir=/usr/local/mysql/data#指定数据库文件的存储路径----------------------------------------------------------------------------------------------------------cd /usr/local/mysql/bin/./mysqld \--initialize-insecure \--user=mysql \--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/data

2.10 添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/#用于systemctl服务管理systemctl daemon-reload  #刷新识别     systemctl start mysqld.service  #开启服务systemctl enable mysqld  #开机自启动netstat -anpt | grep 3306#查看端口

2.11 修改mysql 的登录密码

mysqladmin -u root -p password "000000" #给root账号设置密码为000000,提示输入的是原始密码(为空)直接回车

2.12 授权远程登录

mysql -u root -pgrant all privileges on *.* to 'root'@'%' identified by '000000';#授予root用户可以在所有终端远程登录,使用的密码是000000,并对所有数据库和所有表有操作权限show databases;#查看当前已有的数据库

 三、编译安装PHP 解析环境

3.1 将安装PHP 所需软件包传到/opt目录下

php-7.1.10.tar.bz2

3.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

3.3 配置软件模块

cd /opttar jxvf php-7.1.10.tar.bz2cd /opt/php-7.1.10/./configure \--prefix=/usr/local/php7 \#指定将 PHP 程序的安装路径--with-apxs2=/usr/local/httpd/bin/apxs \#指定Apache httpd服务提供的apxs 模块支持程序的文件位置--with-mysql-sock=/usr/local/mysql/mysql.sock \#指定mysql 数据库连接文件的存储路径--with-config-file-path=/usr/local/php7#设置 PHP 的配置文件 php.ini 将要存放的位置--with-mysqli \#添加 MySQL 扩展支持 #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定--with-zlib \#支持zlib功能,提供数据压缩--with-curl \#开启curl扩展功能,实现HTTP的Get下载和Post请求的方法--with-gd \#激活gd 库的支持--with-jpeg-dir \#激活jpeg 的支持--with-png-dir \#激活png 的支持--with-freetype-dir \--with-openssl \--enable-mbstring \#启用多字节字符串功能,以便支持中文等代码--enable-xml \#开启扩展性标记语言模块--enable-session \#会话--enable-ftp \#文本传输协议--enable-pdo \#函数库--enable-tokenizer \#令牌解释器--enable-zip#ZIP压缩格式----------------------------------------------------------------------------------------------------------cd /opttar jxvf php-7.1.10.tar.bz2cd /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

 3.4 编译及安装

make -j 6&& make install

3.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--1170行--修改mysqli.default_socket = /usr/local/mysql/mysql.sock--939行--取消注释,修改date.timezone = Asia/Shanghai

3.6 优化把PHP

把可执行程序文件放入路径环境变量的目录中便于系统识别ln -s /usr/local/php7/bin/* /usr/local/bin/php -m #查看PHP 加载了哪些模块

3.7 修改httpd 服务的配置文件,让apache支持PHP

vim /etc/httpd.conf --393行--插入以下内容AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps--255行--修改首页文件名设置DirectoryIndex index.html index.php---检查支持php7的模块是否存在------LoadModule php7_module modules/libphp7.so

 

 3.8 验证PHP 测试页

rm -rf /usr/local/httpd/htdocs/index.htmlvim /usr/local/httpd/htdocs/index.php    systemctl restart httpd.service浏览器访问http://192.168.109.132

 

显示该网页,则说明php配置完成

四、安装论坛

4.1 创建数据库,并进行授权

mysql -u root -pCREATE DATABASE bbs;#创建一个数据库GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码admin123flush privileges;#刷新数据库show databases;

 4.2 解压论坛压缩包

上传论坛的包到opt目录Discuz_X3.4_SC_UTF8.zip

unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/discd /opt/dis/dir_SC_UTF8/cp -r upload/ /usr/local/httpd/htdocs/bbs        #上传站点更新包

4.3 更改论坛目录的属主

ps aux                            #查看发现论坛进程的用户名是daemoncd /usr/local/httpd/htdocs/bbschown -R daemon ./configchown -R daemon ./datachown -R daemon ./uc_clientchown -R daemon ./uc_server/data

4.4 浏览器访问验证

论坛页面访问http://192.168.109.132/bbs----------------------------------------------------------------------------------------------------------数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号数据库名字:bbs数据库用户名:bbsuser数据库密码:admin123管理员账号:admin管理员密码:admin123----------------------------------------------------------------------------------------------------------论坛后台管理员页面http://192.168.109.132/bbs/admin.php

我们也可以用本地浏览器访问

 

总结

注:网页有时候又有缓存,再次验证的时候保险起见,先清除缓存 

LAMP

L:Linux

A:Apache

M:mysql

P:PHP