LNMP架构的部署

目录

一、部署思路

二、安装nginx服务

设置依赖环境(Centos 7.6、nginx 1.15)

上传压缩包

创建运行用户、组

编译安装nginx

路径优化

启动Nginx

添加 Nginx 系统服务

 安装MySQL服务

创建运行用户

编译安装mysql

数据库目录进行权限调整

调整配置文件

设置环境变量

初始化数据库

数据库开启自启、 关闭、状态

设置Mysql密码、登录数据库

安装配置PHP解析环境

安装环境依赖包

编译安装

让nginx支持PHP功能

 测试数据库工作是否正常

LNMP应用部署(部署论坛)

上传压缩包

安装论坛过程


一、部署思路

  • 安装 Nginx 服务
  • 安装 MySQL 服务
  • 安装配置 PHP 解析环境
  • 部署 Discuz!社区论坛 Web 应用

二、安装nginx服务

设置依赖环境(Centos 7.6、nginx 1.15)

systemctl stop firewalld
systemctl enable firewalld
setenforce 0

yum -y install gcc gcc-c++ pcre-devel zlib-devel make

LNMP架构的部署_第1张图片

上传压缩包

LNMP架构的部署_第2张图片

创建运行用户、组

Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确
地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为 nginx 的用户,不建
立宿主文件夹,也禁止登录到 Shell 环境。

useradd -M -s /sbin/nologin nginx

LNMP架构的部署_第3张图片

 编译安装nginx

配置Nginx的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为nginx;启用 http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要来定,配置前可参考“./configure --help”给出的说明。

上传nginx-1.15.9.tar.gz至/opt目录
[root@localhost ~]# cd /opt
[root@localhost opt]# tar xzvf nginx-1.15.9.tar.gz 
[root@localhost opt]# cd nginx-1.15.9/
[root@localhost nginx-1.15.9]# 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

[root@localhost nginx-1.15.9]# make && make install

LNMP架构的部署_第4张图片

LNMP架构的部署_第5张图片

 LNMP架构的部署_第6张图片

LNMP架构的部署_第7张图片

 路径优化

为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员
直接执行“nginx”命令就可以调用 Nginx 的主程序(让系统可以识别)

[root@localhost nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.15.9]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 27 2月  28 05:17 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

启动Nginx

直接运行 Nginx 即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用
其他配置文件,需添加“-c 配置文件路径”选项来指定路径。需要注意的是,若服务器中已装
有 httpd 等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突。

[root@localhost nginx-1.15.9]# nginx 
[root@localhost nginx-1.15.9]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11191/nginx: master

通过检查 Nginx 程序的监听状态,或者在浏览器中访问此 Web 服务(默认页面将显示
“Welcom to nginx!”),可以确认 Nginx 服务是否正常运行。

LNMP架构的部署_第8张图片

LNMP架构的部署_第9张图片

主程序 Nginx 支持标准的进程信号,通过 kill 或 killall 命令发送 HUP 信号表示重载配置,
QUIT 信号表示退出进程,KILL 信号表示杀死进程。例如,若使用 killall 命令,重载配置、
停止服务的操作分别如下所示(通过“-s”选项指定信号种类)

当 Nginx 进程运行时,PID 号默认存放在 logs/目录下的 nginx.pid 文件中,因此若改用
kill 命令,也可以根据 nginx.pid 文件中的 PID 号来进行控制。

killall -s HUP nginx
killall -s QUIT nginx

添加 Nginx 系统服务

为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写基于 CentOS 7.6 的
Nginx 服务控制文件使用 systemctl 工具来进行管理,CentOS7.6 系统的管理习惯

[root@localhost ~]# 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=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

LNMP架构的部署_第10张图片

 安装MySQL服务

安装Mysql环境依赖包

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

LNMP架构的部署_第11张图片

 创建运行用户

useradd -s /sbin/nologin  mysql
PS:千万不要加 -M

 LNMP架构的部署_第12张图片

编译安装mysql

上传mysql-boost-5.7.20.tar.gz
[root@localhost ~]cd /opt
[root@localhost opt]# tar xzvf mysql-boost-5.7.20.tar.gz
[root@localhost opt]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# 
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		#指定安装路径(目录)
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \	#指定通信文件,连接数据库,通讯协议的载体
-DSYSCONFDIR=/etc \								#配置文件目录指向/etc
-DSYSTEMD_PID_DIR=/usr/local/mysql \			#指定pid目录文件
-DDEFAULT_CHARSET=utf8 \						#字符集设定
-DDEFAULT_COLLATION=utf8_general_ci \			#字符集设定
-DWITH_INNOBASE_STORAGE_ENGINE=1 \				#以下三行均为存储引擎ENGINE
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \			#指定数据存放位置
-DWITH_BOOST=boost \							#底层C++运营库 独立的表空间结构
-DWITH_SYSTEMD=1								#守护进程id 守护进程 
——》跑在后台的一个支持服务正常运行的一个特殊进程

make && make install 
PS:(可make -j3)

注意:如果在CMAKE的过程中有报错---
        当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
注意:make: *** No targets specified and no makefile found. Stop.解决方法
        1、wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
        2.、tar zxvf ncurses-5.6.tar.gz
        3、 ./configure -prefix=/usr/local -with-shared-without-debug
        4、make
        5、make install 

LNMP架构的部署_第13张图片

LNMP架构的部署_第14张图片

LNMP架构的部署_第15张图片

 数据库目录进行权限调整

chown -R mysql:mysql /usr/local/mysql/

 调整配置文件

[root@localhost mysql-5.7.20]# vim /etc/my.cnf
[root@localhost etc]# vim my.cnf
#删除原有内容,添加以下内容
[client]					            #client 用户程序
port = 3306				
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]						            #mysql 软件内容 
port = 3306					            #端口
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]					            #以后对mysql配置时 更多的会针对于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	#PID文件目录
socket = /usr/local/mysql/mysql.sock	#通讯文件
server-id = 1				            #服务id,在之后的mysql集群中用于标识mysql服务器

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
#模块,默认加载
#PS:跳过数据库权限验证的命令为:skip-grant-tables,忘记密码

LNMP架构的部署_第16张图片

 更改文件属主属组

 设置环境变量

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

LNMP架构的部署_第17张图片

LNMP架构的部署_第18张图片

初始化数据库

cd /usr/local/mysql/

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

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

LNMP架构的部署_第19张图片

 数据库开启自启、 关闭、状态

systemctl enable mysqld
systemctl start mysqld
systemctl stop mysqld
systemctl status mysqld
netstat -anpt | grep 3306

LNMP架构的部署_第20张图片

 设置Mysql密码、登录数据库

mysqladmin -u root -p password 
或
mysqladmin -u root -p password abc123
##刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

mysql -u root -p     
或
mysql -uroot -p密码
##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

LNMP架构的部署_第21张图片 LNMP架构的部署_第22张图片

安装配置PHP解析环境

安装环境依赖包

[root@localhost mysql]# yum -y install \
> libjpeg \						#jpg图片依赖
> libjpeg-devel \
> libpng libpng-devel \			#png图片依赖
> freetype freetype-devel \		#字体
> libxml2 \						#支持xml
> libxml2-devel \
> zlib zlib-devel \				#压缩格式
> curl curl-devel \				#识别url
> openssl openssl-devel
##xml 支持扩展性标记语言,用于承载数据url 网址 openssl 安全性访问/加密访问

LNMP架构的部署_第23张图片

 编译安装

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

./configure \
--prefix=/usr/local/php \			#PHP文件路径
--with-mysql-sock=/usr/local/mysql/mysql.sock \	#sock通讯文件(需要与mysql指定的路径一致)
--with-mysqli \					#with(支持各项功能)
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \					#开启fpm模块	
--enable-mbstring \				#开启多字段模块
--enable-xml \					#开启扩展性标记语言模块
--enable-session \				#会话
--enable-ftp \					#文本传输协议
--enable-pdo \					#函数库
--enable-tokenizer \			#令牌解释器
--enable-zip					#ZIP压缩格式


make && make install

LNMP架构的部署_第24张图片

php有三个配置文件  php.ini 核心配置文件  php-fpm.conf 进程服务配置文件 
www.conf  扩展配置文件

cp php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini

mysqli.default_socket = /usr/local/mysql/mysql.sock ####1170行 
date.timezone = Asia/Shanghai                       ####939行 

/usr/local/php/bin/php -m 
验证安装的模块

LNMP架构的部署_第25张图片 LNMP架构的部署_第26张图片

配置及优化FPM模块
#复制主配置文件及php-fpm 配置文件
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

cd /usr/local/php/etc/
vim php-fpm.conf
#开启pid 支持(可运行)17行
pid = run/php-fpm.pid


#启动php -c 代表 conf
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
#识别命令
ln -s /usr/local/php/bin/* /usr/local/bin/
#
ps aux | grep -c "php-fpm"  //查看php的进程

LNMP架构的部署_第27张图片 LNMP架构的部署_第28张图片

LNMP架构的部署_第29张图片

让nginx支持PHP功能

vim /usr/local/nginx/conf/nginx.conf  //在合适的位置

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; 
            include        fastcgi_params;
}

LNMP架构的部署_第30张图片

 LNMP架构的部署_第31张图片

vi /usr/local/nginx/html/index.php


systemctl restart nginx

在网页测试“http://ip/index.php”

 LNMP架构的部署_第32张图片

LNMP架构的部署_第33张图片

 测试数据库工作是否正常

mysql -u root -p     #########输入密码
#查看"数据库"

CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '密码';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY '密码';
flush privileges;

vim /usr/local/nginx/html/index.php       ###原来的测试页内容更改如下
Success!!";
else echo "Fail!!";
?>

systemctl restart nginx

在网页测试“http://ip/index.php” 

LNMP架构的部署_第34张图片

 LNMP架构的部署_第35张图片

LNMP架构的部署_第36张图片

LNMP应用部署(部署论坛)

上传压缩包

 安装论坛过程

cd /opt
unzip Discuz_X3.4_SC_UTF8.zip  -d /tmp
cd /tmp/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/
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/


​

cd /opt
unzip Discuz_X3.4_SC_UTF8.zip  -d /tmp
cd /tmp/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/
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/

http://IP/bbs/install/index.php
​

LNMP架构的部署_第37张图片

LNMP架构的部署_第38张图片

LNMP架构的部署_第39张图片

 LNMP架构的部署_第40张图片

LNMP架构的部署_第41张图片

LNMP架构的部署_第42张图片

LNMP架构的部署_第43张图片

你可能感兴趣的:(服务器,linux,运维)