转自:https://blog.51cto.com/13760226/2344592

最新版LAMP架构+Discuz论坛

LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台。
这个架构经过了漫长时间的考验,但随着时间更迭,各个软件也进行了版本的更新升级,因为公司也有Discuz论坛,但版本比较老,所以想着搭建一套最新版的论坛。下面就为大家介绍当下最新版的LAMP+Discuz论坛。

系统环境介绍

系统 IP地址 内存 cpu
centos7.6 192.168.70.133 5G 4核

使用软件包地址
http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.37.tar.gz
http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz
http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
http://am1.php.net/distributions/php-7.3.1.tar.gz
discuz论坛包https://pan.baidu.com/s/14ZPFy35pnpYpKeePDFoArw 密码:2olg
mysql解压版https://pan.baidu.com/s/11b_ccrosT0IPdnXhRrU4yQ 
密码:ruh5

一、搭建httpd2.4.37

1、安装环境依赖包

yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
libxml2-devel \
openssl \
openssl-devel \
bzip2-devel

2、解压httpd2.4.37

[root@localhost opt]# tar zxf httpd-2.4.37.tar.gz

3、解压apr-1.6.5、apr-util-1.6.1到httpd-2.4.37/srclib/目录中并更名

[root@localhost opt]# tar zxf apr-1.6.5.tar.gz -C httpd-2.4.37/srclib/ 
[root@localhost opt]# tar zxf apr-util-1.6.1.tar.gz -C httpd-2.4.37/srclib/
[root@localhost opt]# cd httpd-2.4.37/srclib/
[root@localhost srclib]# mv apr-1.6.5/ apr
[root@localhost srclib]# mv apr-util-1.6.1/ apr-util
[root@localhost srclib]# ls
apr apr-util Makefile.in
以上步骤将apr-1.65和apr-util-1.61包解压并且放到了httpd2.4.37/srclib/下并且更名为apr和apr-util

4、编译

[root@localhost srclib]# cd /opt/httpd-2.4.37/
[root@localhost httpd-2.4.37]# 
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-expires \
--enable-rewrite \
--enable-charset-lite \
--with-mpm=event \
--enable-mpms-shared=all \
--enable-so \
--enable-modules=most \
--enable-cgi \
--quiet

编译注解
--enable-deflate   #压缩模块
--enable-expires  #缓存模块
--enable-so   #让apache核心装载DSO
--enable-mods-shared=most  #采用动态编译进来大多数模块
--enable-modules=most  #安装大多数模块
--enable-modules-shared=most  #安装大多数共享模块
--enable-mpms-shared=all  #支持全部多道处理方式
--with-mpm=prefork  #prefork工作模式,派生子进程提供服务
--enable-cgi 启动CGI脚本支持,便于扩展网站的用于访问能力
--enable-rewirte :支持URL重写
--with-mpm=worker  #worker工作模式,核心线程处理,使用于使用人群少的场景
--with-mpm=event  Apache最新的工作模式,它和worker模式很像
优点:不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题(HTTP的Keepalive方式能减少TCP连接数量和网络负载),在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理
--quiet 安静的输出编译信息

5、正式安装

[root@localhost httpd-2.4.37]# make && make install

6、修改配置文件

[root@localhost httpd-2.4.37]# cd /usr/local/httpd/conf/
[root@localhost conf]# vim httpd.conf #去掉如下行的注释
LoadModule include_module modules/mod_include.so #服务器端的包过滤
LoadModule logio_module modules/mod_logio.so #修改日志格式需要开启
LoadModule filter_module modules/mod_filter.so #过滤器模块
LoadModule rewrite_module modules/mod_rewrite.so #重写模块
LoadModule deflate_module modules/mod_deflate.so #压缩模块
LoadModule expires_module modules/mod_expires.so #缓存模块


在#LoadModule info_module modules/mod_info.so该行下添加如下优化语句
#连接超时时间
TraceEnable off
Timeout 600
KeepAlive Off
KeepAliveTimeout 20
MaxKeepAliveRequests 100
HostnameLookups Off
ServerSignature Off
ServerTokens Prod
#pid文件格式
#PidFile                        pid/httpd.pid
#防止被点击劫持 SAMEORIGIN为拒绝,ALLOW-FROM为允许
Header always append X-Frame-Options "SAMEORIGIN "
Header always append Frame-Options "SAMEORIGIN"
#设定接收请求的超时时间和最低数据速率
<IfModule reqtimeout_module>RequestReadTimeout header=5-40,MinRate=500 body=20,MinRate=500
</IfModule>
#压缩模块,压缩级别6,可调DeflateCompressionLevel
<IfModule mod_deflate.c>DeflateCompressionLevel 6SetOutputFilter DEFLATEAddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascriptapplication/x-httpd-phpAddOutputFilterByType DEFLATE *.jsAddOutputFilterByType DEFLATE *.cssAddOutputFilterByType DEFLATE *.htmAddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscriptapplication/javascript application/x-javascriptAddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphpSetEnvIfNoCase Request_URI .(?:gif|jpeg|png)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:exe|tgz|zip|bz2|sit|rar)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
</IfModule>
#缓存模块
<IfModule mod_expires.c>ExpiresActive OnExpiresDefault                                      A86400ExpiresByType   image/x-icon                        A2592000ExpiresByType   application/x-javascript            A2592000ExpiresByType   text/css                            A2592000ExpiresByType   image/gif                           A604800ExpiresByType   image/png                           A604800ExpiresByType   image/jpeg                          A604800ExpiresByType   text/plain                          A604800ExpiresByType   application/x-shockwave-flash       A604800ExpiresByType   video/x-flv                         A604800ExpiresByType   application/pdf                     A604800ExpiresByType   text/html                           A900
</IfModule>
#工作模式
<IfModule mpm_prefork_module>ServerLimit     1200StartServers        5MinSpareServers     5MaxSpareServers     10MaxRequestWorkers   1200MaxConnectionsPerChild   2000
</IfModule><IfModule mpm_worker_module>ServerLimit     20StartServers        3MinSpareThreads     75MaxSpareThreads     100 ThreadsPerChild     64MaxRequestWorkers   1280MaxConnectionsPerChild   20000
</IfModule><IfModule mpm_event_module>ServerLimit     20StartServers        3MinSpareThreads     75MaxSpareThreads     100 ThreadsPerChild     64MaxRequestWorkers   1280MaxConnectionsPerChild   20000
</IfModule>#解决中文乱码
<Files ~ "\.html?$">Header set Content-Type "text/html; charset=utf-8"
</Files>

修改ServerName,去掉注释并进行修改
ServerName www.bbstest.com:80

7、创建httpd命令软链接并查看配置文件语法正确性

[root@localhost conf]# ln -s /usr/local/httpd/bin/apachectl /usr/bin/httpd
[root@localhost conf]# httpd -t
Syntax OK
[root@localhost conf]# httpd start

这个时候我们可以去网页中访问我们的apache的默认主页了,可以先暂时关闭防火墙和selinux,不然无法访问80端口。因为设置了域名在本地主机中进行解析,方便用域名访问。
windows添加本地解析步骤如下:win+r调出这个界面




保存退出就好了。下面我们就能用我们指定的域名去访问网页了。

到这里httpd就搭建完成了。

安装启动脚本和环境变量

添加配置文件链接
# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
添加二进制命令链接
# ln -s /usr/local/httpd/bin/*  /usr/local/bin添加开机启动脚本
# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
# chkconfig httpd --level 35 on
查看Apache版本
httpd -v
但是在执行:chkconfig --add httpdchkconfig httpd on的时候出现错误:service httpd does not support chkconfig解决办法:打开 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)#chkconfig: 2345 10 90
#description: Activates/Deactivates Apache Web Server加上上面这两行就可以,#必须有其中:2345是设为要启动的运行级别,10是启动优先级,90是杀死进程的优先级,谁优先谁先挂的意思。

二、搭建Mysql5.7

从mysql5.7开始,源码编译的mysql5.7时间巨长,所以我使用公司mysql5.7的解压版,但这里我会为大家提供mysql5.7编译的链接☛源码编译mysql5.7

这是我公司安装mysql5.7的一下相关操作和优化
[root@localhost conf]# cd /opt/
[root@localhost opt]# tar zxf mysql-5.7.21-linux-glibc2.12-x86_64.tgz
[root@localhost opt]# mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql   #这里是更名解压包为mysql,方便配置文件修改
[root@localhost opt]# vim /etc/my.cnf  #删除里面原有的内容,加入如下
[client]
port = 3306
socket = /tmp/mysql.sock[mysqld]character-set-server = utf8mb4
skip_name_resolve = 1
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /opt/mysql/     #从这行到realy-log行,修改路径为mysql存放位置的路径
datadir = /opt/mysql/data
log-error = /opt/mysql/data/log-error.log
pid-file = /opt/mysql/data/mysql.pid
innodb_data_home_dir = /opt/mysql/data
slow-query-log-file=/opt/mysql/data/slow.log
relay-log-index = /opt/mysql/data/relaylog
relay-log-info-file = /opt/mysql/data/relaylog
relay-log = /opt/mysql/data/relaylogopen_files_limit = 10240
table_open_cache = 2048
back_log = 300
max_connections = 10000
max_connect_errors = 20
explicit_defaults_for_timestamp = 1
max_allowed_packet = 64M
thread_cache_size = 300
query_cache_size = 256M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = InnoDB
thread_stack = 512K
transaction_isolation = READ-COMMITTED
tmp_table_size = 256M
max_heap_table_size = 256M
key_buffer_size = 2G
sort_buffer_size = 2M
join_buffer_size = 6M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 15G
myisam_repair_threads = 1
interactive_timeout = 1800
wait_timeout = 28800
innodb_data_file_path = ibdata1:120M;ibdata2:200M;ibdata3:200M:autoextend
innodb_buffer_pool_size = 2G
innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_purge_threads = 0
slow_query_log = 1
long_query_time = 3
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
#slave-skip-errors = 1032,1062,1026,1114,1146,1048,1396
server-id = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysqldump]
quick
max_allowed_packet = 64M

初始化数据库并启动

ln -s /usr/local/mysql/bin/* /usr/bin #优化命令路径
adduser -s /sbin/nologin mysql #创建mysql用户
mysqld --initialize-insecure #初始化mysql
mysqld_safe & #启动数据库
mysqladmin -uroot -p ‘123123’ #设置数据库密码

三、搭建PHP7.31

搭建之前解决几个小问题,是我编译的时候遇到的

●configure: error: off_t undefined; check your library configuration
解决方法:
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf&&ldconfig -v
●configure: error: Please reinstall the libzip distribution
解决方法
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make
make install
●/usr/local/include/zip.h:59:21: 致命错误:zipconf.h:没有那个文件或目录
解决方法
cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

1、解压

[root@localhost opt]# tar zxf php-7.3.1.tar.gz

2、安装依赖包,因为报错很多因为缺包,所以干脆一起装

yum -y install pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel openldap-servers openldap-client nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel

3、编译

[root@localhost opt]# cd php-7.3.1/
./configure \
--prefix=/usr/local/php7 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-pdo-mysql=/opt/mysql \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
-with-mysqli=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--enable-fpm \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-soap \
--with-libxml-dir \
--with-xmlrpc \
--with-openssl \
--with-mhash \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--enable-mbregex \
--enable-mbregex-backtrack \
--with-onig \
--enable-pdo \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--with-pear \
--enable-opcache

#这里需要注意,从php5.6之后,编译扩展mysql的语句 --with-mysql=path已经不能使用了。应该添加的是如下几条语句。
--with-pdo-mysql=/opt/mysql \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
-with-mysqli=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
扩展指向apache的没变,如下:
--with-apxs2=/usr/local/httpd/bin/apxs

3、安装

make && make install

4、检查httpd.conf文件下有没有php7.so模块,并加以修改

LoadModule php7_module        modules/libphp7.so
添加如下位置添加两行AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps


添加首页识别

5、重启httpd,修改主页信息。

cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# httpd restart
[root@localhost htdocs]# vim index.php #添加如下几行
<?php
phpinfo();
?>

6、网页中查看
www.bbstest.com/index.php

在网页中查找如下内容


有这两个模块说明支持mysql的扩展。

7、php连接mysql

[root@localhost htdocs]# mysql -uroot -p123123
mysql> create database bbs;
mysql> grant all privileges on bbs.* to 'bbsuser'@'192.168.70.%' identified by '123123' with grant option;
mysql> flush privileges;

8、再次修改主页,php连接mysql
vim index.php

<?php
$link=mysqli_connect('192.168.70.133','bbsuser','123123');
if($link) echo "<h1>PHP-link-MYSQL  Success!!</h1>";
else echo "PHP-link-MYSQL Fail!!";
?>

网页中直接刷新网页,出现PHP-link-MYSQL Success!!则连接成功。7以前的php连接语句mysql_connect已经被废弃,现使用mysqli_connect。

这样php连接mysql就OK了,下面搭建discuz论坛。

四、搭建Discuz论坛

1、修改httpd配置文件

vim /usr/local/httpd/conf/httpd.conf #去掉下行的注释
Include conf/extra/httpd-vhosts.conf

2、重启httpd

httpd restart #会报两个warning,不用管

3、设置虚拟目录

cd /usr/local/httpd/conf/extra
[root@localhost extra]# cp httpd-vhosts.conf httpd-vhosts.conf.bk #先备份下

[root@localhost extra]# vim httpd-vhosts.conf  #末行添加如下内容
<VirtualHost *:80>DocumentRoot "/usr/local/httpd/htdocs/data/www"   #这里指定bbs的目录位置,需要创建ServerName www.bbstest.comServerAlias www.bbstest.com</VirtualHost>

4、解压Discuz论坛包

unzip Discuz_X3.3_SC_UTF8.zip
[root@localhost abc]# ls     #会看到如下3个包
Discuz_X3.3_SC_UTF8.zip  readme  upload  utility
cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# mkdir -p data/www/  #创建discuz文件目录
[root@localhost htdocs]# cd data/www/
[root@localhost www]# mv /opt/abc/upload/* .   #移动discuz项目内容到当前目录
chown -R daemon config data uc_client/data uc_server/data/    #改变属主

5、重启httpd,网页中访问
httpd restart 
www.bbstest.com/install








好了,到这里LAMP最新版的Discuz论坛搭建完成了,呼呼~

Apache2.4.37+mysql5.7+PHP7.31最新版LAMP架构+Discuz论坛相关推荐

  1. CentOS7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8

    本篇文章讲解的是在CentOS7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8 一.Apache 1.查看httpd包是否可用 yum list | grep httpd ...

  2. LNMP环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)

    一.安装MySql (本文永久地址:http://woymk.blog.51cto.com/10000269/1917133) mysql的安装请参考 LAMP环境搭建(centos6.9+apach ...

  3. lnmp环境搭建 php7,lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)

    安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...

  4. 安装环境 php5.2 mysql_ubuntu安装配置apache2+php5.2+mysql5环境教程

    apache2+php5.2+mysql5可以说是运行开发php程序不可缺少的,下面将介绍在ubuntu10.04中如何安装. 第一ubuntu10.04 安装apache2.0 在终端输入: sud ...

  5. centos php7.0 mysql_CentOS 7.3 下 安装LNMP(Nginx1.10+MySQL5.7+PHP7.0.20)

    前言:最近总是要安装服务器环境,记录这次CentOS 7.3下安装LNMP(Nginx1.10+MySQL5.7+PHP7.0.20)环境的过程,以备日后使用. 一.准备工作 1. 更新源 # yum ...

  6. mysql2.1.4安装_安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明

    安装Apache2.2.4+Mysql5.0.27+php5.2.1详细安装说明 安装系统: 红帽子企业服务器Redhat Linux5(不安装任何服务) 也可以安装完整版,然后将Apache,mys ...

  7. php5.5 wamp,wamp环境单独安装(windows下apache2.4、mysql5.5、php5.5的版本)

    Apache2.4.10 x86版本 2.VC11的依赖(vc2012 x86) 安装顺序: 1.vc2012(x86版本)  选择vc2012中的"vcredist_x86.exe&quo ...

  8. iis/apache + php5 + mysql5_Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.6安装配置方法

    首先安装Apache, 下载地址: http://www.apache.org/ 如果你是第一次安装就一直下一步不要进地设什么不必要的设置,运行一定会ok! 接下来就是安装php了, 下载地址: ht ...

  9. mysql 5.5.48源码安装_centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc...

    centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc 还剩 5页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲 ...

最新文章

  1. 初识sparklyr—电影数据分析
  2. 非常有趣的古越及吴语-台州话
  3. java 使用 new Date() 和 System.currentTimeMillis() 获取当前 时间戳
  4. MYSQL添加约束的两种方法
  5. CDH5.X完全卸载步骤
  6. Hough(霍夫变换) 基于Opencv2.4.9 和VS2012平台下编写
  7. 一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
  8. 快速给视频批量添加水印,操作简单
  9. Java实现极光推送
  10. 敏捷测试的方法和实践
  11. 腾讯云 鉴权失败,请确认服务器已启用密码鉴权并且账号密码正确? permission denied (publickey,gssapi-keyex,gssapi-with-mic)
  12. python实现单层单向RNN
  13. cad画直线长度与实际不符_cad画规定长度直线的方法步骤图
  14. us、ms、s 单位转换,不会的都是大傻子!!!
  15. 用C#写差异文件备份工具
  16. svn拉取和提交大概步骤
  17. 我的推荐系统入门经验~
  18. 学javaweb要先学java吗_怎么入门Java Web,我应该先学什么?
  19. 苹果cmsv10好看的七色中文二开视频免费模板
  20. android浪漫樱花凋零动态壁纸应用源码

热门文章

  1. CentOS安装Gitea教程
  2. 华为手机量子浏览器自动弹出,手机突然出现量子浏览器怎么卸载
  3. 老猿学5G:融合计费的Nchf和Nchf‘服务化接口消息Nchf_ConvergedCharging_Create、Update、Release和Notify
  4. elementui 表单v-molde是动态的,校验表单字段为必填项
  5. systemverilog——覆盖率
  6. 5场面试4个Offer
  7. 【小组专题三:斐波那契专题】斐波那契 与其20个性质 | 泽肯朵夫表示 | 卢卡斯数 与其8个性质 | 常系数二次线性齐次序列 | 模板与例题
  8. 助力工业物联网,工业大数据之费用事实指标分析及实现【二十四】
  9. 仿照word的界面的滑动菜单(2)(伸缩下拉框)
  10. 关于(void**)的理解