LNMP搭建

107 阅读6分钟

LNMP

linux+nginx+MySQL+PHP=LNMP

安装nginx服务

思路

  1. 关闭防火墙,解压缩包
  2. 安装依赖包
  3. 创建运行用户
  4. 编译安装
  5. 优化路径
  6. 添加nginx服务

关闭防火墙,解压缩包

systemctl stop firewalld       #关闭防火墙
systemctl disable firewalld    #设置开机不自启
setenforce 0                   #关闭setenforce
将需要的压缩软件包放到opt目录
cd /opt                        #进入opt目录
yat zvxf nginx-1.12.2.tar.gz   #解压缩包

image.png

image.png

1,安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#安装依赖包(前面博客有解释)

image.png

2,创建运行用户

useradd -M -s /sbin/nologin nginx
#创建一个nginx用户,不创建家目录,不允许登陆系统

image.png

3,编译安装

cd nginx-1.12.0/     #进入nginx目录
./configure \        #检测环境
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make -j3 && make install  #编译和安装

image.png

image.png

4,优化路径

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#创建软连接,便于识别nginx命令

image.png

,5,添加 Nginx 系统服务

cd /lib/systemd/system/
#进去systemctl的命令的主目录
cp sshd.service /lib/systemd/system/nginx.service
#复制一个模板文件区配置nginx服务的systemctl命令,模板是大多同样的,所以可直接复制

vim /lib/systemd/system/nginx.service
#编辑nginx服务,让nginx服务可以使用systemctl命令
[Unit]              #服务的说明
Description=nginx   #描述服务
After=network.target     #依赖,当前依赖是我服务启动之后在启动自定义的服务
[Service]        #服务运行参数的设置
Type=forking     #是后台运行的形式,使用此启动类型应同时指定
PIDFile=/usr/local/nginx/logs/nginx.pid
#以便systemd能够跟踪服务的主进程。
ExecStart=/usr/local/nginx/sbin/nginx
#为服务的具体运行命令
ExecReload=/bin/kill -s HUP $MAINPID
#为重启命令
ExecStop=/bin/kill -s QUIT $MAINPID
#为停止命令
PrivateTmp=true      #表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]            #服务安装的相关设置,可设置为多用户
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
#给nginx服务有权限去使用systemctl命令

systemctl start nginx.service    #使用systemctl命令开启nginx服务
systemctl enable nginx.service   #设置nginx服务开机自启

image.png

image.png

image.png

image.png 搭建成功 image.png

安装MySQL服务

思路

  1. 安装Mysql环境依赖包
  2. 创建运行用户
  3. 编译安装
  4. 修改mysql 配置文件
  5. 更改mysql安装目录和配置文件的属主属组
  6. 设置路径环境变量
  7. 初始化数据库
  8. 添加mysqld系统服务
  9. 修改mysql 的登录密码
  10. 授权远程登录

1,安装Mysql环境依赖包

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

image.png

2、创建运行用户

useradd -M -s /sbin/nologin  mysql
#创建一个运行用户叫MySQL,不创建家目录,不允许登录系统

image.png

3、下载和解压安装包以及编译安装

将MySQL软件包下载到opt目录中
cd /opt       #切换目录
tar zxvf mysql-boost-5.7.20.tar.gz
#将MySQL软件包解压到当前目录

cd /opt/mysql-5.7.20/     #切换进MySQL软件目录
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=boost \
#指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件

make -j3 && make install
#使用3核去编译,并且安装

image.png

image.png

4、修改mysql的配置文件

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    
#设置服务器字符集编码格式为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
#设置mysql的最大连接数
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

NO_ENGINE_SUBSTITUTION
#如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
#在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
#禁正GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
#mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE
#不允许日期和月份为零
NO_ZERO_DATE
#mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
#在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
PIPES_As_CONCAT
#将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
ANSI_QUOTES
#启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

image.png

image.png

5、更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
#修改/usr/local/mysql/目录的属主和属组为MySQL
chown mysql:mysql /etc/my.cnf
#修改mysql的安装目录为/etc/my.cnf

image.png

6、设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
#输出一个环境变量并且导入一个文件里面
source /etc/profile
#刷新配置的环境变量文件

image.png

7、初始化数据库

cd /usr/local/mysql/bin/
#切换目录,到MySQL的
./mysqld \             #检测环境
--initialize-insecure \   ##生成初始化密码为空
--user=mysql \       ##指定管理用户
--basedir=/usr/local/mysql \   ##指定数据库的安装目录
--datadir=/usr/local/mysql/data  #指定数据库文件的存储路径

image.png

8、添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.servic
e /usr/lib/systemd/system/
#拷贝一份
systemctl daemon-reload  #刷新识别
systemctl start mysqld.service  #开启服务
systemctl enable mysqld  #开机自启动

image.png

9、修改mysql 的登录密码

mysqladmin -u root -p password "123456"
#修改MySQL密码为123456(自定义)

image.png

10、授权远程登录

mysql -u root -p   #登录MySQL

image.png

安装配置PHP

思路

  1. 安装环境依赖包
  2. 编译安装
  3. 路径优化
  4. 调整PHP配置文件
  5. 配置Nginx支持PHP解析
  6. 验证PHP测试页

安装环境依赖包

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
安装GD库和GD库关联程序,用来处理和生成图片

image.png

编译安装

cd /opt
#切换目录
tar jxvf php-7.1.10.tar.bz2
#解压PHP安装包到opt目录
cd php-7.1.10
#切换到MySQL目录
./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核编译并且安装

image.png

image.png

image.png

3、路径优化

ln -s /usr/local/php/bin/* /usr/local/bin/
#创建软连接
ln -s /usr/local/php/sbin/* /usr/local/sbin/

image.png

4、调整PHP配置文件

php有三个配置文件
  • php.ini 主配置文件
  • php-fpm.conf 进程服务配置文件
  • www.conf 扩展配置文件
调整主配置文件:
cp /opt/php-7.1.24/php.ini-development /usr/local/php/lib/php.ini
#将PHP主配置文件拷贝到/usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
#编辑主配置文件
1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
#修改1170行
939 date.timezone = Asia/Shanghai
#将939行取消注释,并且修改

php -m   #验证安装的模板

image.png

image.png

image.png

image.png

调整进程服务配置文件
cd /usr/local/php/etc/
#切换目录
cp  php-fpm.conf.default php-fpm.conf
#拷贝一份
vim php-fpm.conf
编辑配置文件
--17行--去掉";"注释
pid = run/php-fpm.pid

image.png

image.png

调整扩展配置文件
cd /usr/local/php/etc/php-fpm.d/
#切换目录
cp www.conf.default www.conf
#拷贝

image.png

5、启动php-fpm

/usr/local/php/sbin/php-fpm -c 
/usr/local/php/lib/php.ini

netstat -anpt | grep 9000
#查看端口
#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。

cd /opt/php-7.1.10/sapi/fpm
#切换目录
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
#拷贝
systemctl restart php-fpm.service
#开启

image.png

image.png

配置 Nginx 支持 PHP 解析

vim /usr/local/nginx/conf/nginx.conf
#编辑配置文件
--65行到71行--取消注释,修改
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的工作目录
	include        fastcgi_params;
}

systemctl restart nginx.service
#重启nginx服务

image.png

image.png

7、验证PHP 测试页

vim /usr/local/nginx/html/index.php
#编辑一个新的PHP文件,加入一下内容
<?php
phpinfo();
?>

image.png image.png

浏览器访问验证是否成功:

http://192.168.42.12/index.php

image.png

8、验证数据库工作是否正常

mysql -u root -p
#登录MySQL
CREATE DATABASE bbs;
#创建一个bbs数据库
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#给权限给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.80.10','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

浏览器访问
http://192.168.42.12/index.php

image.png

image.png

image.png 注意:浏览器测试时候一定要加上http:!!! image.png

部署 Discuz!社区论坛 Web 应用

cd /opt
#切换目录
unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis
#解压到/opt/dis目录
cd /opt/dis/dir_SC_UTF8/
#切换目录
cp -r upload/ /usr/local/nginx/html/bbs/
#拷贝

image.png

image.png

调整论坛目录的权限

cd /usr/local/nginx/html/bbs/
#切换目录
chown -R nginx ./config/
chown -R nginx ./data/
chown -R nginx ./uc_client/
chown -R nginx ./uc_server/
或
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

image.png

image.png

论坛页面访问

http://192.168.42.12/bbs/install/index.php

image.png

image.png

image.png

image.png 安装成功后

访问论坛地址,登录论坛

http://192.168.42.12/bbs/index.php image.png