Build Discuz forum based on LAMP Architecture -- Linux, Apache, Mysql, PHP, Discuz

Posted by kbc1 on Sat, 02 Oct 2021 20:41:07 +0200

catalogue

preface

1, LAMP overview

1. LAMP platform overview

2. Build LAMP platform sequence

3. Advantages of compilation and installation

4. Main functions of each component

2, Compile and install Apache httpd service  

1. Close the firewall and transfer the software packages required to install Apache to the / opt directory

2. Install environment dependent packages

3. Configuring software modules

4,   Compilation and installation

5. Optimize profile path

6. Add httpd system service

7. Modify httpd service profile

8. Service validation

III   Install mysqld  

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

2,   Install environment dependent packages

3. Extract and configure the software module

4. Compilation and installation

5. Create mysql user

6,   Modify mysql configuration file

7. . change the primary group of mysql installation directory and configuration file

8. Set path environment variable

9. Initialize database

10. Add mysqld system service

11. Modify the login password of mysql and authorize login

4, Install PHP   

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

2. Install GD library and Gd library associated programs to process and generate pictures

3. Configuring software modules

4. Compilation and installation

5,   Copy the template file and modify it

6. Optimize

  7. Modify the configuration file of httpd service

8. Validate PHP test page

V   Discuz forum setup

1. Create database and authorize

2. Upload and unzip the compressed package to the specified location

3. Upload site update package

4,   Switch forum directory

5. Change forum directory owner

6. Browser access authentication

summary

preface

This time mainly introduces the LAMP architecture and the whole process of manual installation and configuration. The process is written in detail as much as possible, and relevant software packages are prepared in advance

1, LAMP overview

1. LAMP platform overview

LAMP architecture is one of the mature enterprise website application modes at present. It refers to a whole system and related software working together, which can provide dynamic web site services and its application development environment. LAMP specifically includes Linux operating system, Apache Web server, MySQL database server, PHP (or perl, Python) web programming language.

2. Build LAMP platform sequence

When building the LAMP platform, the installation sequence of each component is Linux, Apache, MySQL and PHP; There is no strict sequence requirement for the installation of Apache and MYSQL, while the installation of PHP environment is generally put at the end, which is responsible for communicating the web server and database system to work together.

3. Advantages of compilation and installation

  • It has a large degree of freedom and can be customized
  • The latest software version can be obtained in time
  • It is generally applicable to most Linux versions and is easy to use all the time

4. Main functions of each component

  (platform) Linux: as the basis of LAMP architecture, it provides an operating system to support the Web site, which can provide better stability and compatibility with the other three components (AMP components also support Windows, UNIX and other platforms).

(front desk) Apache: as the front end of LAMP architecture, it is a powerful and stable Web server program. The server directly provides users with website access, sending Web pages, pictures and other file contents.

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

(intermediate connection) PHP/Perl/Python: as three programming languages for developing dynamic Web pages, it is responsible for interpreting dynamic Web page files, communicating the Web server and database system to work together, and providing the development and running environment of Web applications. PHP is a widely used open source multi-purpose scripting language, which can be embedded in HTML, especially suitable for Web application development.

2, Compile and install Apache httpd service  

1. Close the firewall and transfer the software packages required to install Apache to the / opt directory

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

httpd-2.4.29.tar.gz
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz

2. Install environment dependent packages

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

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

3. Configuring software modules

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 \		#Specify the path where the httpd service program will be installed
--enable-so \					#Enable dynamic loading module support to enable httpd to further expand its functions
--enable-rewrite \				#Enable the web address rewriting function for website optimization, anti-theft chain and directory migration maintenance
--enable-charset-lite \			#Start character set support to support pages encoded with various character sets
--enable-cgi					#Enable CGI (general Gateway Interface) script program support to facilitate the external expansion of application access capability of the website

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

4,   Compilation and installation

make && make install

5. Optimize profile path

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

6. Add httpd system service

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd		#Used for service management
chmod +x /etc/init.d/httpd
vi /etc/init.d/httpd
#!/bin/bash												#Insert a new line before the first line and add these three lines
# chkconfig: 35 85 21									#Level 35 automatic operation, 85th startup, 21st shutdown
# description: Apache is a World Wide Web server

chkconfig --add httpd     		#Add the httpd service to the service manager

systemctl start httpd.service

7. Modify httpd service profile

vim /etc/httpd.conf
--52 that 's ok--modify
Listen 192.198.184.10:80
--197 that 's ok--Uncomment, modify
ServerName www.lic.com:80

--221 that 's ok--Default home page storage path
DocumentRoot "/usr/local/httpd/htdocs"
--255 that 's ok--Default home page file name setting
DirectoryIndex index.html

httpd -t  Is there any error in the configuration item of the file
cat /usr/local/httpd/htdocs/index.html
systemctl restart httpd.service

8. Service validation

#View port
netstat -anpt | grep 80

#Browser authentication
echo "192.168.61.12 www.lic.com" >> /etc/hosts
 Browser access
192.168.61.12

 

III   Install mysqld  

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

mysql-5.7.17.tar.gz
boost_1_59_0.tar.gz		#Runtime supporting c + +

2,   Install environment dependent packages

yum -y install \
gcc \
gcc-c++ \
ncurses \				#Dynamic library of graphic interactive function under character terminal
ncurses-devel \			#ncurses development kit
bison \					#Parser
cmake					#mysql needs to be compiled and installed with cmake

or yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

3. Extract and configure the software module

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

mv boost_1_59_0 /usr/local/boost		#rename

cd /opt/mysql-5.7.17/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		#Specify the installation path of mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #Specify the storage path of mysql process listening socket file (database connection file)
-DSYSCONFDIR=/etc \                             #Specify the storage path of the configuration file
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #Specifies the storage path of the process file
-DDEFAULT_CHARSET=utf8  \                       #Specifies the character set encoding used by default, such as utf8
-DDEFAULT_COLLATION=utf8_general_ci \			#Specifies the default character set collation rule to use
-DWITH_EXTRA_CHARSETS=all \						#Specifies that other character set encodings are supported
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #Install INNOBASE storage engine
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #Installing the ARCHIVE storage engine 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #Installing the BLACKHOLE storage engine 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \        	#Install FEDERATED storage engine 
-DMYSQL_DATADIR=/usr/local/mysql/data \     	#Specifies the storage path of the database file
-DWITH_BOOST=/usr/local/boost \          		#Specify the path of boost. If MySQL boost integration package is used for installation, - DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#Generate files for systemctl management

Note: if CMAKE There are errors in the process of. When the errors are solved, you need to put the errors in the source directory CMakeCache.txt Delete the file and then try again CMAKE,Otherwise, the error remains

4. Compilation and installation

make -j 2 && make install
 It takes a long time to wait,-j 2 Indicates that two cores are used for compilation

5. Create mysql user

useradd -M -s /sbin/nologin  mysql

6,   Modify mysql configuration file

vim /etc/my.cnf								#Delete the original configuration item and add the following content again
[client]									#Client settings
port = 3306
socket=/usr/local/mysql/mysql.sock			

[mysqld]									#Service global settings
user = mysql       							#Set management user
basedir=/usr/local/mysql					#Specify the installation directory of the database
datadir=/usr/local/mysql/data				#Specifies the storage path of the database file
port = 3306									#Specify port
character-set-server=utf8					#Set the server character set encoding format to utf8
pid-file = /usr/local/mysql/mysqld.pid		#Specify pid process file path
socket=/usr/local/mysql/mysql.sock			#Specify database connection file
bind-address = 0.0.0.0						#Set the listening address. 0.0.0.0 means that all IP addresses are allowed. If multiple IP addresses are allowed, they should be separated by spaces
skip-name-resolve							#Disable DNS resolution
max_connections=2048						#Set the maximum number of mysql connections
default-storage-engine=INNODB				#Specify the default storage engine
max_allowed_packet=16M						#Sets the maximum packet size received by the database
server-id = 1								#Specify the service ID number
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_ The common values of mode are as follows:
NO_ENGINE_SUBSTITUTION
If the required storage engine is disabled or not compiled, an error is thrown. When this value is not set, the default storage engine is used instead and an exception is thrown

STRICT_TRANS_TABLES
In this mode, if a value cannot be inserted into a transaction table, the current operation will be interrupted and the non transaction table will not be restricted

NO_AUTO_CREATE_USER
GRANT is not allowed to create a user with a blank password

NO_AUTO_VALUE_ON_ZERO
The self growing column in mysql can start from 0. By default, the self growth column starts from 1. If you insert data with a value of 0, an error will be reported

NO_ZERO_IN_DATE
Zero date and month are not allowed

NO_ZERO_DATE
mysql database does not allow inserting zero date. Inserting zero date will throw an error instead of a warning

ERROR_FOR_DIVISION_BY_ZERO
During INSERT or UPDATE, if the data is divided by zero, an error is generated instead of a warning. By default, MySQL returns NULL when the data is divided by zero

PIPES_AS_CONCAT
Treating "|" as a concatenation operator of a string rather than an or operator is the same as in Oracle database and is similar to the Concat function of a string

ANSI_QUOTES
Enable ANSI_ After quotes, the string cannot be referenced in double quotes because it is interpreted as an identifier

7. . change the primary group of mysql installation directory and configuration file

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

8. Set path environment variable

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

9. Initialize database

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#The generation initialization password is empty
--user=mysql \                      #Specify administrative users
--basedir=/usr/local/mysql \        #Specify the installation directory of the database
--datadir=/usr/local/mysql/data		#Specifies the storage path of the database file

10. Add mysqld system service

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/		#For systemctl service management
systemctl daemon-reload         #Refresh recognition     
systemctl start mysqld.service  #Open service
systemctl enable mysqld         #Startup self startup
netstat -anpt | grep 3306       #View port

11. Modify the login password of mysql and authorize login

mysqladmin -u root -p password "abc123" 	#Set the password to abc123 for the root account, and the prompt is the original password (empty)

mysql -u root -p

show databases;			#View existing databases

4, Install PHP   

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

php-7.1.10.tar.bz2

2. Install GD library and Gd library associated programs to process and generate pictures

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. Configuring software modules

tar jxvf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/

./configure \
--prefix=/usr/local/php7 \							#Specify the path where the PHP program will be installed
--with-apxs2=/usr/local/httpd/bin/apxs \			#Specifies the file location of the apxs module support program provided by the Apache httpd service
--with-mysql-sock=/usr/local/mysql/mysql.sock \		#Specify the storage path of mysql database connection file
--with-config-file-path=/usr/local/php7				#Set the location where the PHP configuration file php.ini will be stored
--with-mysqli \										#add to MySQL Extended support #mysqli extension technology can not only call MySQL stored procedures and process MySQL transactions, but also make accessing the database more stable
--with-zlib \										#Support zlib function and provide data compression
--with-curl \										#Enable curl extension function to realize HTTP Get download and Post request
--with-gd \											#Activate gd library support
--with-jpeg-dir \									#Activate jpeg support
--with-png-dir \									#Activate png support
--with-freetype-dir \
--with-openssl \
--enable-mbstring \									#Enable multi byte string function to support Chinese and other codes
--enable-xml \										#Open extensible markup language module
--enable-session \									#conversation
--enable-ftp \										#Text transfer protocol
--enable-pdo \										#function library
--enable-tokenizer \								#Token interpreter
--enable-zip										#ZIP compression format

4. Compilation and installation

make && make install

5,   Copy the template file and modify it

cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini	
#Use the php.ini-development file for the test environment and the php.ini-production file for the production environment

vim /usr/local/php7/php.ini
--1170 that 's ok--modify
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939 that 's ok--Uncomment, modify
date.timezone = Asia/Shanghai

6. Optimize

ln -s /usr/local/php7/bin/* /usr/local/bin/
php -m 			#See which modules PHP loads

  7. Modify the configuration file of httpd service

vim /etc/httpd.conf 
--393 that 's ok--Insert the following
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
--256 that 's ok--Modify home page file name settings
DirectoryIndex index.html index.php

---Check support php7 Is the module present------
LoadModule php7_module        modules/libphp7.so

8. Validate PHP test page

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

systemctl restart httpd.service

Browser access
http://192.168.61.12/index.php

 

V   Discuz forum setup

1. Create database and authorize

mysql -u root -p		#Login to mysql
> CREATE DATABASE bbs;	#Create a database
> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';	#Grant the permissions of all tables in the bbs database to bbsuser and set the password
> flush privileges;		#Refresh database
> show databases;		#view the database

2. Upload and unzip the compressed package to the specified location

unzip /data/Discuz_X3.4_SC_UTF8.zip -d /opt/dis

3. Upload site update package

cp -r upload/ /usr/local/httpd/htdocs/bbs

4,   Switch forum directory

cd /usr/local/httpd/htdocs/bbs

5. Change forum directory owner

chown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data

6. Browser access authentication

#Forum page access
http://192.168.61.12/bbs

Database server: localhost
#localhost is used for local erection. If it is not on the local machine, the IP address and port number should be filled in
 Database name: bbs
 Database user name: bbsuser
 Database password: admin123
 administrator account :admin
 Administrator password:admin123
   
Forum background administrator page
http://192.168.61.12/bbs/admin.php

 

summary

In the above, all the contents of the website are completed. In the later optimization, the template in Discuz community can be used to customize the website. If you want others to visit, you can apply for domain name, filing, etc. you can have a complete website accessible from the Internet.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

Topics: PHP Linux MySQL