Enterprise website application mode—LAMP architecture source code compiling super detailed steps, just have your hands!

Insert picture description here

Source code compilation and installation of LAMP architecture

1. Introduction to LAMP Architecture

1.1 Overview of LAMP

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 includesLinux operating system, Apache web server, MySQL database server, PHP (or Perl, Python) web programming language.

1.2 Introduction to each component of LAMP

1.2.1 (Platform)Linux

Insert picture description here

As a LAMP architecturebasis, 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).

1.2.2 (Foreground) Apache

Insert picture description here

As a LAMP architecturefront end, Is a powerful, stable web server program, the server directly provides users with website access, sending web pages, pictures and other file content.

1.2.3 (Background) MySQL

Insert picture description here

As a LAMP architecturerear end, 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.

1.2.4 (Intermediate connection) PHP/Perl/Python

Insert picture description here

As three programming languages ​​for developing dynamic web pages, it is responsible for interpreting dynamic webpage files, communicating with web servers and database systems to work together, andProvide 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.

1.3 Installation sequence of LAMP components

When building the LAMP platform, the order of installation of each component is as followsLinux, Apache, MySQL, PHP. Among them, 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

2.1 Procedure of operation steps

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

httpd-2.4.29.tar.gz apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz
#apr组件包用于支持Apache上层应用跨平台,提供底层接口库,能有效的降低并发连接数、降低进程和减少访问堵塞。

2. Installation environment dependent packages

yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl         
------------------------------------------------------------------------------------------
各程序作用解释如下:
gcc 							#C语言的编译器
gcc-c++ 						#C++的编译器
make 							#源代码编译器(源代码转换成二进制文件)
pcre 							#pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel                 	    #perl的接口开发包
expat-devel                     #用于支持网站解析HTML、XML文件
perl                            #perl语言编译器

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
------------------------------------------------------------------------------------------------------
各配置命令作用解释如下:
--prefix=/usr/local/httpd \		#指定将 httpd 服务程序的安装路径
--enable-so \					#启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \				#启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \			#启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi					#启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力

4. Compile and install

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

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/			#做个软链接

6. Add httpd system service
method one:

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							#开启http服务(关闭和开启要使用相同的方式)
或
service httpd start										#开启http服务(关闭和开启要使用相同的方式)	

Method Two:

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.service							#开启http服务(关闭和开启要使用相同的方式)
systemctl enable httpd.service							#设为开机自启动

7. Modify the httpd service configuration file

vim /etc/httpd.conf
--52行--修改
Listen 192.198.80.10:80
--197行--取消注释,修改
ServerName www.kgc.com:80

--221行--默认首页存放路径
DocumentRoot "/usr/local/httpd/htdocs"
--255行--默认首页文件名设置
DirectoryIndex index.html

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

8. Browser access verification

netstat -anpt | grep 80
echo "192.168.80.77 www.kgc.com" >> /etc/hosts

http://192.168.80.77
http://www.clj.com

2.2 Detailed operation steps (including pictures and texts)

The first step: Turn off the firewall and selinux, and then drag the file into three compressed xshell

Insert picture description here


Step: Installation environment dependencies

Insert picture description here


third step: a software module configured
1) to decompress compressed three

Insert picture description here


2) of the two apr Move the two files to the httpd srclib file.

Insert picture description here


3) Modify the names of the two files of apr.

Insert picture description here


4) Change the directory and execute the configure file

Insert picture description here


. Step 4: Compile and install the
CPU4 core processor for my virtual machine, so I’m here Edge can use j4, and the cpu involved in the compilation and installation cannot be greater than the cpu allocated to the virtual machine.

Insert picture description here


Step 5: Optimize the configuration file path
1) Create a soft link

Insert picture description here


Step 6: Add httpd system service
1) Modify httpd configuration file

Insert picture description here


2) Add httpd service to the service manager and start the service

Insert picture description here

Step 7: Back up and modify the httpd service configuration file
1) Back up the modified file

Insert picture description here


Insert picture description here


2) Check whether the configuration items are wrong

Insert picture description here


Step 8: Perform access verification by the browser

Insert picture description here

Three, compile and install mysqld service

3.1 Procedure of operation steps

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

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

2. Installation environment dependent packages

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
----------------------------------------------------------------------------------------------------------
各程序作用解释如下:
gcc 
gcc-c++ 
ncurses 				#字符终端下图形互动功能的动态库
ncurses-devel 			#ncurses开发包
bison 					#语法分析器
cmake					#mysql需要用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 \						#指定支持其他字符集编码
-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管理的文件

Storage engine option: It
MYISAM,MERGE,MEMORY,和CSV引擎is compiled into the server by default and does not need to be explicitly installed.
To statically compile a storage engine to the server, use the -DWITH_engine_STORAGE_ENGINE= 1
available storage engine values:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)

Note: If an error is reported during CMAKE, after 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 && 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 = 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

Common values ​​of sql_mode are as follows:

NO_ENGINE_SUBSTITUTION
If 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_TABLES
In 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_USER
prohibits GRANT from creating users with empty passwords
NO_AUTO_VALUE_ON_ZERO
The auto-increment 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_DATE
does not allow the date and month to be zero
NO_ZERO_DATE
mysql database does not allow to insert 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 data is divided by zero
PIPES_AS_CONCAT
treats "||" as a string concatenation operator instead of an OR operator, which is the same as the Oracle database and similar to the string concatenation function Concat
ANSI_QUOTES After
enabling ANSI_QUOTES, you cannot use double quotes 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';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限

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

3.2 Detailed operation steps (including pictures and texts)

Step 1: Drag the three compressed files into the /opt directory in Linux

Insert picture description here

Step 2: Install the environment dependency package

Insert picture description here


Insert picture description here


Step 3: Configure the software module
1) Unzip the file to the current directory

Insert picture description here


2) CMAKE related paths and install related engines

Insert picture description here


Step 4: Compile and install

Insert picture description here


Step 5: Create a mysql user, do not create a home directory and prohibit login

Insert picture description here


Step 6: Modify mysql configuration file

Insert picture description here

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

Insert picture description here


Step 8: Set the path environment variable

Insert picture description here


Step 9: Initialize the database

Insert picture description here


Step 10: Add mysqld system service

Insert picture description here

Step 11: Modify the login password of mysql

Insert picture description here


Step 12: Authorize remote login

Insert picture description here

Fourth, compile and install the PHP parsing environment

4.1 Procedure of operation steps

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

php-7.1.10.tar.bz2

2. Install GD library and GD library related 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. 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	
#在测试环境时使用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

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 
--393行--插入以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
--255行--修改首页文件名设置
DirectoryIndex index.html index.php

---检查支持php7的模块是否存在------
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
<?php
phpinfo();
?>

systemctl restart httpd.service

浏览器访问
http://192.168.80.77

4.2 Operational detailed steps (including pictures and texts)

Step 1: Transfer the software packages needed to install PHP to the /opt directory.

Insert picture description here


Step 2: Install GD library and GD library related programs to process and generate pictures

Insert picture description here


Step 3: Configure the software module
1) Unzip the file

Insert picture description here

2) Configure related software modules

Insert picture description here


. Step 4: Compile and install.

Insert picture description here


Step 5: Copy the template file as the main configuration file of PHP, and modify it

Insert picture description here
Insert picture description here


. Step 6: Optimize the PHP executable program file into the directory of the path environment variable Facilitate system identification

Insert picture description here


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

Insert picture description here
Insert picture description here


Check whether the following two files are normal, if not, you need to reinstall

Insert picture description here

Step 8: Back up index.html and create a new index.php file.

Insert picture description here


Step 9: Start the service and verify the PHP test page.

Insert picture description here


Refresh the page and the test is normal!

Insert picture description here

Five, install the forum

5.1 Procedure of operation steps

1. Create a database and authorize

mysql -u root -p

CREATE DATABASE bbs;
#创建一个数据库

GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码admin123

flush privileges;
#刷新数据库

show databases;

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		#上传站点更新包

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

4. Browser access verification

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

5.2 Detailed operation steps (including pictures and texts)

Step 1: Create a database and authorize

Insert picture description here


# Grant the permissions of all tables in the bbs database to bbsuser, and set the password admin123 to refresh the database

Insert picture description here

Step 2: Unzip the forum compressed package
1) Unzip

Insert picture description here


2) Upload the site update package

Insert picture description here


3) Host verification

Insert picture description here


4) Click the I agree button in the forum to enter, and found that the file does not have permission

Insert picture description here

Step 3: Change the owner of the forum directory
1) The user name for viewing the forum process is daemon

Insert picture description here

2) Change the owner of the forum directory

Insert picture description here


Step 4: Forum related settings
1) Refresh the browser to see if the file has permission

Insert picture description here


2) Choose a new installation of Discuz! X

Insert picture description here


3) Install database related configuration, user name, password, etc.

Insert picture description here


4) After installation is complete, click to visit

Insert picture description here


5) Forum installation is complete

Insert picture description here


6) Forum backend administrator page

Insert picture description here


7) Management page login is successful

Insert picture description here