Build the basic framework of LNMP

One, compile and install Nginx service

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

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2. Installation environment dependent packages

#nginx的配置及允许需要pcre、zlib等软件包的支持,因此需要安装这些安装的开发包,以便提供相应的库和头文件
yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3. Create and run users and groups (Nginx service program runs as nobody by default. It is recommended to create a special user account for it to control its access permissions more accurately)

useradd -M -s /sbin/nologin nginx

4. Compile and install

cd /opt
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install

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

ln -s /usr/local/nginx/sbin/* /usr/local/sbin

6. Add Nginx system service

vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -1 $MAINPID
ExecStop=/bin/kill -3 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

Nginx service has been installed before, you can check my previous blog: [Nginx website service(https://blog.csdn.net/weixin_51432789/article/details/112349935)

Two, compile and install MySQL service

1. Install the MySQL environment dependency package

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake
或者
yum -y install ncurses ncurses-devel bison cmake

2. Create a running user

useradd -M -s /sbin/nologin  mysql

3. Compile and install

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20
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=boost \
-DWITH_SYSTEMD=1

make && make install

4. Modify the mysql configuration file

vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock			
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
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

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

6. Set the path environment variable

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

7. Initialize data

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

8. Add mysqld system service

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

systemctl daemon-reload

systemctl start mysqld.service
systemctl enable mysqld

9, add mysql login password

mysqladmin -u root -p password "abc123"

10. Authorize remote login

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

Here is the MySQL installed by the collection package, so it should be noted that when compiling and installing, change
-DWITH_BOOST=/usr/local/boost \ to -DWITH_BOOST=boost. The
screenshot content can refer to the source code to compile and install LAMP to install mysql

Three, compile and install PHP service

1. Installation environment dependent packages

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

2. Compile and install

cd /opt
tar jxvf php-7.1.10.tar.bz2
cd ./php-7.1.10/
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make && make install

3. Path optimization

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

4. Adjust PHP configuration files
PHP has three configuration files
php.ini (main configuration file)
php-fpm.conf (process service configuration file)
www.conf (extended configuration file) to
adjust the main configuration file:

cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
##修改1170行
mysqli.default_socket = /usr/local/mysql/mysql.sock
##939行取消注释,修改
date.timezone = Asia/Shanghai

php -m

Adjust the process service configuration file:

cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
#17行取消注释“;”
pid = run/php-fpm.pid

Adjust the extended configuration file

cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf

5. Start php-fpm

cd /usr/local/php/sbin/
php-fpm -c /usr/local/php/lib/php.ini
netstat -natp | grep 9000

PHP-FPM (FastCGI Process Manager: FastCGI Process Manager) is a PHPFastCGI manager. Since the Nginx server cannot handle dynamic pages, Nginx needs to pass dynamic requests to the php-fpm process for analysis.
6. Configure Nginx to support PHP analysis.

vim /usr/local/nginx/conf/nginx.conf
##65行取消注释修改
location ~ \.php$ {
    
    
	root			html;
	fastcgi_pass	127.0.0.1:9000;
	fastcgi_index	index.php;
	fastcgi_param	SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
	#将/scripts修改为nginx的工作目录修改为/usr/local/nginx/html
	include 		fastcgi_params;
}

systemctl restart nginx.service

7. Verify the PHP test page

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

Browser access: http://192.168.241.3/index.php

8. Verify that the database is working properly

mysql -u root -p
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.241.3','bbsuser','admin123');
if($link) echo "success!!";
else echo "fail!!"
?>

Browser access: http://192.168.241.3/index.php

4. Deploy Discuz, community forum web application

cd /opt
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
cd /opt/dis/dir_SC_UTF8
cp -r upload /usr/local/nginx/html/bbs

Adjust the permissions of the forum directory

cd /usr/local/nginx/html/bbs
chown -R root:nginx ./config
chown -R root:nginx ./data
chown -R root:nginx ./uc_client
chown -R root:nginx ./uc_server

chmod -R 777 ./config
chmod -R 777 ./data
chmod -R 777 ./uc_client
chmod -R 777 ./uc_server

Forum page visit: http:192.168.241.3/bbs/install/index.php

Database server: localhost
database name: bbs
database user name: bbsuser
database password: admin123
administrator account: admin
administrator password: admin123

Guess you like

Origin blog.csdn.net/weixin_51432789/article/details/112514884