Apache httpd→MySQL→PHP→Install Forum

table of Contents



The LAMP architecture is one of the current mature enterprise website application modes. It refers to a set of systems and related software that work together to provide dynamic website services and application development environments. LAMP is an acronym that specifically includes Linux operating system, Apache web server, MySQL database server, PHP (or Perl, Python) web programming language.


The main functions of each component are as follows:
(Platform) Linux: As the basis of the LAMP architecture, it provides an operating system for supporting Web sites, which can provide better stability and compatibility with the other three components (AMP components also support Windows, Platforms such as UNIX).

(Foreground) Apache: As the front end of the LAMP architecture, it is a powerful and stable web server program that directly provides users with website access, sending web pages, pictures and other file content.

(Back-end) MySQL: As the back-end of the LAMP architecture, it is a popular open source relational database system. In applications such as corporate websites and business systems, various account information, product information, customer information, business data, etc. can be stored in the MySQL database, and other programs can query and change this information through SQL statements.

(Intermediate connection) PHP/Perl/Python: As three programming languages ​​for developing dynamic webpages, it is responsible for interpreting dynamic webpage files, communicating with web servers and database systems to work together, and providing a development and operating environment for web applications. Among them, PHP is a widely used open source multi-purpose scripting language, which can be embedded in HTML, and is especially suitable for Web application development.

When building the LAMP platform, the order of installation of each component is Linux, Apache, MySQL, PHP. There is no strict order for the installation of Apache and MySQL. The installation of the PHP environment is generally placed at the end, responsible for communicating with the Web server and database system to work together.

Two, compile and install Apache httpd service

1. Turn off the firewall, and upload the software packages required to install Apache to the /opt directory

systemctl stop firewalld
systemctl disable firewalld
setenforce 0


The apr component package is used to support cross-platform Apache upper-level applications and provide the underlying interface library, which can effectively reduce the number of concurrent connections, reduce processes, and reduce access congestion.

2. Installation environment dependent packages

yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl      
gcc \ #C language compiler
gcc-c++ \ #C ++'s compiler
\ #source code compiler (source code is converted into binary files) pcre \ #pcre is a Perl library, including perl compatible regular expression library
pcre-devel \ #perl's interface development kit
expat -devel \ #Used to support website parsing HTML and XML files
perl #perl language compiler

3. Configure the software module

cd /opt/
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
tar jxvf httpd-2.4.29.tar.bz2

mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util

cd /opt/httpd-2.4.29/
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
Insert picture description here
–prefix=/usr/local/httpd \ #Specify the installation path of the httpd service program
–enable-so \ #Enable dynamic loading module support, so that httpd has the ability to further expand the function
–enable-rewrite \ #Enable webpage Address rewriting function, used for website optimization, anti-leech and catalog migration maintenance
–enable-charset-lite \ #Enable character set support to support pages that use various character set encodings
–enable-cgi #Enable CGI (Common Gateway Interface) ) Script program support, which is convenient for the external extension of the website and the accessibility of the application

4. Compile and install

make							#make -j 2  表示开2核同时进行编译
make install
Insert picture description here

5. Optimize the configuration file path, and put the executable program file of the httpd service into the directory of the path environment variable to facilitate system identification

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd		#用于service服务管理
chmod +x /etc/init.d/httpd
vi /etc/init.d/httpd
#!/bin/bash												#在第一行前插入新行,添加此三行内容
#chkconfig: 35 85 21									#35级别自动运行  第85个启动 第21个关闭
#description: Apache is a World Wide Web server

chkconfig --add httpd     		#将httpd服务加入到service管理器

systemctl start httpd.service
service httpd start

vim /lib/systemd/system/httpd.service
Description=The Apache HTTP Server						#描述
After=network.target									#描述服务类别
Type=forking											#后台运行方式
PIDFile=/usr/local/httpd/logs/httpd.pid					#PID文件位置
ExecStart=/usr/local/bin/apachectl $OPTIONS				#启动服务
ExecReload=/bin/kill -HUP $MAINPID						#根据PID重载配置

systemctl start httpd.service
systemctl enable httpd.service

7. Modify the httpd service configuration file

vim /etc/httpd.conf
ServerName www.yue.com:80

DocumentRoot "/usr/local/httpd/htdocs"
DirectoryIndex index.html

httpd -t  或 apachectl -t			#检查配置文件的配置项是否有误
cat /usr/local/httpd/htdocs/index.html
systemctl restart httpd.service
Insert picture description here

8. Browser access verification

netstat -anpt | grep 80
echo " www.kgc.com" >> /etc/hosts
Insert picture description here

Three, compile and install mysqld service

1. Transfer the software packages required to install mysql to the /opt directory

cd /opt
boost_1_59_0.tar.gz		#支持c++的运行库

2. Installation environment dependent packages

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. Configure the software module

tar zxvf mysql-5.7.17.tar.gz
tar zxvf boost_1_59_0.tar.gz

cd /opt
mv 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 \						#指定支持其他字符集编码
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \          #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的文件

Storage engine options:
MYISAM, MERGE, MEMORY, and CSV engines are compiled to the server by default and do not need to be explicitly installed.
To statically compile a storage engine to the server, use -DWITH_engine_STORAGE_ENGINE=1. The
available storage engine values ​​are: ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), and PERFSCHEMA (Performance Schema)
Note: If in CMAKE An error was reported during the process. When the error is resolved, you need to delete the CMakeCache.txt file in the source directory, and then re-CMAKE, otherwise the error will remain

4. Compile and install

make -j2 && make install

5. Create a mysql user

useradd -M -s /sbin/nologin  mysql

6. Modify the mysql configuration file

vim /etc/my.cnf								#删除原配置项,再重新添加下面内容
[client]									#客户端设置
port = 3306
socket = /usr/local/mysql/mysql.sock			

[mysql]										#服务端设置
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash									#开启自动补全功能

[mysqld]									#服务全局设置
user = mysql       							#设置管理用户
basedir=/usr/local/mysql					#指定数据库的安装目录
datadir=/usr/local/mysql/data				#指定数据库文件的存储路径
port = 3306									#指定端口
character-set-server=utf8					#设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid		#指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock			#指定数据库连接文件
bind-address =						#设置监听地址,代表允许所有,如允许多个IP需空格隔开
skip-name-resolve							#禁用DNS解析
max_connections=2048						#设置mysql的最大连接数
default-storage-engine=INNODB				#指定默认存储引擎
max_allowed_packet=16M						#设置数据库接收的数据包大小的最大值
server-id = 1								#指定服务ID号

Common values ​​of sql_mode are as follows:
NO_ENGINE_SUBSTITUTIONIf the required storage engine is disabled or not compiled, then an error is thrown. When this value is not set, replace with the default storage engine and throw an exception
STRICT_TRANS_TABLESIn this mode, if a value cannot be inserted into a transaction table, the current operation is interrupted, and there is no restriction on non-transactional tables
NO_AUTO_CREATE_USERProhibit GRANT from creating users with empty passwords
NO_AUTO_VALUE_ON_ZEROThe self-increasing column in mysql can start from 0. By default, the self-increasing column starts from 1, if you insert data with a value of 0, an error will be reported
NO_ZERO_IN_DATEZero days and months are not allowed
NO_ZERO_DATEThe mysql database does not allow the insertion of a zero date, and inserting a zero date will throw an error instead of a warning
ERROR_FOR_DIVISION_BY_ZERODuring INSERT or UPDATE, if the data is divided by zero, an error is generated instead of a warning. By default, MySQL returns NULL when data is divided by zero
ANSI_QUOTESWhen ANSI_QUOTES is enabled, double quotes cannot be used to quote a string because it is interpreted as an identifier

7. Change the owner group of the mysql installation directory and configuration file

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

8. Set the path environment variable

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

9. Initialize the database

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

10. Add mysqld system service

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       #查看端口

11. Modify the mysql login password

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

12. Authorize remote login

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';

show databases;			#查看当前已有的数据库

Fourth, compile and install the PHP parsing environment

1. Transfer the software packages required to install PHP to the /opt directory

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. Configure the software module

cd /opt
tar jxvf php-7.1.10.tar.bz2
cd /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压缩格式

4. Compile and install

make && make install

5. Copy the template file as the main configuration file of PHP and modify it

cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini	
vim /usr/local/php7/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

6. Optimize the PHP executable program file to be placed in the directory of the path environment variable for easy system identification

ln -s /usr/local/php7/bin/* /usr/local/bin/
php -m 			#查看PHP 加载了哪些模块

7. Modify the configuration file of the httpd service to allow Apache to support PHP

vim /etc/httpd.conf 
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php

LoadModule php7_module        modules/libphp7.so

8. Verify the PHP test page

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php

systemctl restart httpd.service

Insert picture description here

Five, install the forum

1. Create a database and authorize

mysql -u root -p


GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

flush privileges;

show databases;
Insert picture description here

2. Unzip the forum compressed package

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

3. Change the owner of the forum directory

ps aux							#查看发现论坛进程的用户名是daemon
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
Insert picture description here

Insert picture description here

4. Browser access verification

Visit the forum page

Database server: localhost ###Use localhost for local setup. How to fill in the IP address and port number instead of on this machine
Database name: bbs
database user name: bbsuser
database password: 789456
Administrator account: admin
Administrator password: 789456

Forum backend administrator page

Insert picture description here
Insert picture description here
Insert picture description here

Insert picture description here
Insert picture description here