The construction of the LAMP architecture realizes the forum webpage

The construction of the LAMP architecture realizes the forum webpage

1. What is LAMP

1.1 Introduction to 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 static and dynamic Web site services and its application development environment. It includes Linux operating system, Apache web server, MySQL database server, PHP (or Perl, Python) web programming language.

1.2 Description of all components

Linux (platform): As the foundation of the 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 platforms such as Windows and UNIX) .
Apache (Foreground): 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 .
**MySQL (Backend):** 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.
**PHP/Perl/Python (Intermediate Link): As three programming languages ​​for developing dynamic web pages, it is responsible for interpreting dynamic webpage files, communicating with web servers and database systems for collaborative work, 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.

The order of installation is Linux, Apache, MySQL, PHP. 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.

2. Install Apache service

2.1 Turn off the firewall

Insert picture description here

2.2 Install dependent packages

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

2.3 Transfer the software packages required to install Apache to the /opt directory

Insert picture description here

3. Installation environment dependency package

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

4. Unzip the three compressed packages

Insert picture description here

5. Configure the software module

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

6. Compile and install

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

7. Optimize the configuration file path, and put the executable program file of the httpd service into the directory of the path environment variable for easy system identification

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
Insert picture description here
Insert picture description here

8. Add httpd system service

①. Method 1:

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
Insert picture description here
Insert picture description here

②. 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
systemctl enable httpd.service
Insert picture description here

9. Modify the /etc/httpd.conf service configuration file

Insert picture description here


Insert picture description here

10. Browser access verification

Insert picture description here

11. Use domain name access

Insert picture description here
Insert picture description here

Three, manually compile the mysql database

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

Insert picture description here

2. The installation environment depends on the package

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

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 \		
-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								
Insert picture description here
  • Storage engine options:
  • MYISAM, MERGE, MEMORY, and CSV engines are compiled into 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
  • Available storage engine values ​​are: ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), and PERFSCHEMA (Performance Schema)
  • note:
  • If there is an error in the CMAKE process, after the error is resolved, you need to delete the CMakeCache.txt file in the source directory, and then re-CMAKE, otherwise the error remains

4. Compile and install

make && make install
Insert picture description here

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号

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
Insert picture description here

8. Set the path environment variable

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

9. Initialize the database

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

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       #查看端口
Insert picture description here

11. Modify the mysql login password and authorize remote login

mysqladmin -u root -p password "abc123" 	#给root账号设置密码为abc123,提示输入的是原始密码(为空)
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限
show databases;			#查看当前已有的数据库
Insert picture description here

Four, manually compile and install PHP

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

Insert picture description here
Insert picture description here


Insert picture description here

3. Configure the software module

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压缩格式
Insert picture description here
Insert picture description here

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 to facilitate system identification

Insert picture description here

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

- - check whether or not modules support 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.184.80
Insert picture description here

5. Use LAMP to build a forum

1. Complete the construction of LAMP

2. Create a database and authorize it

Insert picture description here

3. Upload and decompress the forum compressed package

Insert picture description here


Insert picture description here
Insert picture description here

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

5. Browser access verification

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

6. Forum backend administrator page

Insert picture description here