table of Contents
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