Nginx 网站服务及LNMP架构

目录

Nginx、Apache的比较

编译安装Nginx

1、安装依赖包

2、创建运行用户

3、编译安装

4、优化路径

添加nginx系统服务

5.检查、启动、重启、停止nginx服务

新版本升级之法

Nginx配置文件

nginx服务的主配置文件

全局配置

I/O 事件配置

http配置

访问状态统计配置

可以写一个脚本来监测web服务的并发量

基于域名的 Nginx虚拟主机

安装 MySQL 服务

1、安装Mysql环境依赖包

2、创建运行用户

3、编译安装

4、修改mysql 配置文件

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

6、设置路径环境变量

7、初始化数据库

8、添加mysqld系统服务

9、修改mysql 的登录密码

10、授权远程登录

安装配置 PHP 解析环境

1、安装环境依赖包

2、编译安装

3、路径优化

4、调整PHP配置文件

5、启动php-fpm

​6、配置 Nginx 支持 PHP 解析

7、验证PHP 测试页

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

部署 Discuz!社区论坛 Web 应用

fpm参数优化

yum 安装 LNMP


Nginx、Apache的比较

Nginx相对于Apache的优点

轻量级,同样是web服务,比Apache占用更少的内存及资源:高并发,Nginx 处理请求是异步非塞的,而Apache 则是阻塞型的,在高并发下Nginx能保持低资源低消耗高性能;高度模块化的设计编写模块相对简单;社区活跃,各种高性能模块出品迅速。

Apache相对于Nginx的优点

rewrite,比Nginx 的rewrite强大;模块超多,基本想到的都可以找到;少bug,Nginx 的bug相对较多;超稳定存在就是理由,-般来说,需要性能的web服务,用Nginx.如果不需要性能只求稳定,那就Apache. Nginx处理动态请求是弱项,-般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。

Nginx和Apache的差异

  • Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;
  • Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;
  • Nginx避免子进程的概念,Apache是基于子进程的;
  • Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面-般;
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
  • Nginx支持热部署,Apache不支持热部署:
  • Nginx对于静态文件处理具有更高效率,Apache相对一般;
  • Nginx在反向代理场景具有明显优势,Apache相对一般。

编译安装Nginx


systemctl stop firewalld
systemctl disable firewalld
setenforce 0

1、安装依赖包

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

2、创建运行用户

useradd -M -s /sbin/nologin nginx

3、编译安装

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

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

make && make install

 

 

4、优化路径

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

创建软链接,让系统识别nginx的操作命令5、添加 Nginx 系统服务

添加nginx系统服务

法一:编写脚本

#编写脚本内容如下
[root@localhost init.d]#vim /etc/init.d/nginx	
 
cmd="/usr/local/nginx/sbin/nginx"
pid="/usr/local/nginx/logs/nginx.pid" 
 
start)
$cmd
;;
 
stop)
kill -3 `cat $pid`
;;
 
restart)
$0 stop
$0 start
;;
 
reload)
kill -1 `cat $pid`
;;
 
*)
echo "please input,start,reload,restart "
exit 0
;;
esac
exit 1
 
 
#执行脚本
[root@localhost init.d]#chmod +x /etc/init.d/nginx 
[root@localhost init.d]#chkconfig --add nginx 
#启动nginx
[root@localhost init.d]#service nginx start 
#关闭nginx
[root@localhost init.d]#service nginx stop
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 -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

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

5.检查、启动、重启、停止nginx服务

nginx -t     #检查配置文件是否配置正确
#启动
nginx
#停止
cat /usr/1ocal/nginx/logs/nginx.pid        #先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
#日志分割,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号>

 杀死进程(用kill -3可以保证数据不丢失,建议使用)

新版本升级之法

新版本升级:
tar -zxvf nginx-1.xx.xx. tar.gz
cd nginx-1.xx.xx
. /configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ stub_ status_ module \
--with-http_ ssl_ module
 
make
mv /usr/local/nginx/ sbin/nginx /usr/ local/ nginx/ sbin/nginx_ _old
cp objs/nginx /usr/local/nginx/ sbin/ nginx
make upgrade 
#或者先killall nginx,再/usr/local/nginx/ sbin/nginx

 

Nginx配置文件

1、全局块:配置影响nginx全局的指令。一 般有运行nginx服务器的用户组,
    nginx进程pid存放路径, 日志存放路径,配置文件引入,允许生成worker process数等。
 
2、events块:配置影响nginx服务器或与用户的网络连接。
    有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,
    是否允许同时接受多个网路连接,开启多个网络连接序列化等。
 
3、http块: 可以嵌套多个server, 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
    如文件引入,mime- -type定义, 日志自定义,是否使用sendfile传输文件,
    连接超时时间,单连接请求数等。
 
4、server块: 配置虚拟主机的相关参数,一个http中可以有多个server.
 
5、location块: 配置请求的路由,以及各种页而的处理情况。
 
vim /usr/local/nginx/conf/nginx. conf
 
#user nobody;   #运行用户,若编译时未指定则默认为nobody
 
worker_ processes 1;    #工作进程数量,可配置成服务器内核数★2,如果网站访问量不大,一般设
为1就够用了
 
#error_ 1og 1ogs/error.1og;    #错误日志文件的位置
 
#pid logs/nginx.pid;      #PID文件的位置
cat nginx.conf | egrep -ve "^#|\s+#"
####过滤出有效的配置文件

nginx服务的主配置文件

[root@localhost system]#vim /usr/local/nginx/conf/nginx.conf

全局配置

#user  nobody;                     ##运行用户
worker_processes 1;                ##工作进程数,可配置成服务器内核数*2,
                                     如果网站访问量不大,一般设为1就够用了
 
#error_log  logs/error.log;        ####错误日志文件的位置
#pid        logs/nginx.pid;        ####PID文件的位置

 

I/O 事件配置

events {
    use epoll;                 #使用 epoll 模型以提高性能,2.6 以上版本建议使用
    worker_connections  4096;   #每个进程处理4096个连接
}

epoll(socket描述符)是Linux内核]为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率

若工作进程数为 8,每个进程处理 4096 个连接,则允许 Nginx 正常提供服务的连接数 已超过 3 万个(4096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性 能表现。

  • 如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。
  • 在Linux平台.上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
  • 可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
#查看系统允许当前用户进程打开的文件数
[root@localhost conf]#ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 6911
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 6911
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 
#临时修改本地每个进程可以同时打开的最大文件数
[root@localhost conf]#ulimit -n 6000
#查看修改后的
[root@localhost conf]#ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 6911
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 6000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 6911
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

http配置

使用“http { }”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保 持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包 含在子界定标记“server { }”内

http {
    include       mime.types;		##文件扩展名与文件类型映射表
    default_type  application/octet-stream;		##默认文件类型
	##日志格式设定
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;		#日志格式设定
	
    sendfile        on;				##支持文件发送(下载)
    ##此选项允许或禁止使用socket的TCP cORK的选项(发送数据包前先缓存数据),
        此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;
	##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
	
    #gzip  on;			##gzip模块设置,设置是否开启gzip压缩输出
    
server {
        listen       80;					##监听地址及端口
        server_name  www.yxp.com;			##站点域名,可以有多个,用空格隔开
 
        #charset utf-8;						#网页的默认字符集
 
        #access_log  logs/host.access.log  main;		
 
        location / {						##根目录配置
            root   html;					##网站根目录的位置/usr/local/nginx/html
            index  index.html index.htm;	##默认首页文件名
        }
 
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;		##内部错误的反馈页面
        location = /50x.html {							##错误页面配置
            root   html;
        }
 

日志格式设定∶ $remote_addr与$http x forwarded for用以记录客户端的ip地址; $remote user∶ 用来记录客户端用户名称; $time local∶ 用来记录访问时间与时区;$request∶用来记录请求的url与http协议; $status∶ 用来记录请求状态;成功是200, $body bytes sent ∶ 记录发送给客户端文件主体内容大小; $http referer∶ 用来记录从哪个页面链接访问过来的; $http user agent∶记录客户浏览器的相关信息;

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过Sremote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令, root、alias、proxy_ pass root (根路径配置)∶ 请求ww.clj.com/test/1.jpg,会返回文件/usr/local/nginx/html/test/1.jpg alias (别名配置)∶请求www.clj.com/test/1.jpg,会返回文件/usr/local/nginx/html/1.jpg proxy_pass (反向代理配置)∶ proxy_pass http://192.168.80.130:8080/; ------------- 会转发请求到http∶//192.168.80.130:8080/1.jpg proxy_pass http://192.168.80.130:8080; --------------会转发请求到http∶//192.168.80.130∶8080/test/1.jpg

访问状态统计配置

1.先使用命令/usr/1ocal/nginx/sbin/nginx -V查看已安装的Nginx是否包含HTTP_ STUB_ STATUS 模块
cat /opt/nginx-1.12.0/auto/options I grep YES .  #可查看nginx已安装的所有模块
 
2.修改nginx.conf 配置文件,指定访问位置并添加stub_ status 配置
cd /usr/ 1ocal/nginx/conf
cp nginx. conf nginx. conf .bak
vim /usr/1ocal/nginx/ conf/nginx . conf
......
http {
......
   server {
     listen 80;
      server_ name www. kgc. com;
       charset utf-8;
     location / {
        root html;
         index index .html index. php;
}
 
##添加stub_ status 配置##
    location /status {   #访问位置为/status
stub status on;        #打开状态统计功能
access_ log off;     #关闭此位置的日志记录
     }
  }
}

修改配置文件

3.重启服务,访问测试
systemctl restart nginx
 
浏览器访问http://192. 168.80.10/status
Active connections :表示当前的活动连接数k
server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数。
 
可curl -s http://192.168.80.10/status 结合awk与if语句进行性能监控。

 

可以写一个脚本来监测web服务的并发量

 
#!/bin/bash
 
#设置变量,获取当前的活跃的连接数
num=$(curl -Ls http://192.168.130.136/status | awk '/Active connections/ {print $3}')
 
 
if [ "$num" -gt 2 ];then
 echo "警告!当前web服务并发量过大!当前并发量为 $num"
fi

基于域名的 Nginx虚拟主机

1.为虚拟主机提供域名解析
echo "192.168.80.10 www. kgc. com www . benet.com" >> /etc/hosts
 
2.为虚拟主机准备网页文档
mkdir -p /var/ www/html /benet
mkdir -P /var/www/html/kgc
echo "<h1>www. kgc.com</h1>" > /var/www/html/ kgc/ index . html
echo "<h1>www. benet.com</h1>" > /var/www/html /benet/index . html
 
3.修改Nginx的配置文件
vim /usr/local/nginx/ conf/nginx. conf
 
http {
 
......
 
     server {
 
        listen 80;
 
    server_ name www. kgc. com;    #设置域名www.kgc.com!
 
charset utf-8;
 
access_ _1og 1ogs/www. kgc . access.1og;     #设置日志名
 
location / {
 
root /var/www/html/kgc;      #设置www. kgc.com的工作目录
 
index index .html index . php;
 
}
 
error_ page 500 502 503 504 /50x. html;
 
location = 50x.html { 
 
root html ;
 
}
 
}
 
server {
 
   listen 80;
 
   server_ name www . benet . com;    #设置域名www . benet . com
 
   charset utf-8;
 
   access_ _1og logs/www . benet . access. log;
 
   location / {
 
   root /var/www/html/benet;
 
   index index .html index . php;
 
}
 
   error page 500 502 503 504 /50x.html;
 
   location = 50x. html {
 
    root html ;
 
       }
 
   }
 
}


安装 MySQL 服务

1、安装Mysql环境依赖包

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

2、创建运行用户

useradd -M -s /sbin/nologin mysql

3、编译安装

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、修改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
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、更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

6、设置路径环境变量

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

7、初始化数据库

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

 

8、添加mysqld系统服务

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、修改mysql 的登录密码

mysqladmin -u root -p password "abc123"

10、授权远程登录

mysql -u root -p

安装配置 PHP 解析环境

1、安装环境依赖包

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、编译安装

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、路径优化

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

4、调整PHP配置文件

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

#调整主配置文件:
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                     #验证安装的模块

#调整进程服务配置文件:
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid

#调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

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


6、配置 Nginx 支持 PHP 解析

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的工作目录
   #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  #$document_root 代表当前请求在root指令中指定的值
    include        fastcgi_params;
}

systemctl restart nginx.service

 

7、验证PHP 测试页

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

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

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

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.80.10','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

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


部署 Discuz!社区论坛 Web 应用

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/

调整论坛目录的权限:
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/

论坛页面访问
http://192.168.80.10/bbs/install/index.php
----------------------------------------------------------------------------------------------------------
数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123
访问论坛页面:
http://192.168.80.10/bbs/index.php
http://192.168.80.10/bbs/admin.php

 

 

fpm参数优化

vim /usr/local/php/etc/php-fpm.conf 
pid = run/php-fpm.pid

vim /usr/local/php/etc/php-fpm.d/www.conf
--96行--
pm = dynamic                #fpm进程启动方式,动态的
--107行--
pm.max_children=20            #fpm进程启动的最大进程数
--112行--
pm.start_servers = 5        #动态方式下启动时默认开启的进程数,在最小和最大之间
--117行--
pm.min_spare_servers = 2    #动态方式下最小空闲进程数
--122行--
pm.max_spare_servers = 8    #动态方式下最大空闲进程数


kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`            #重启php-fpm
netstat -anpt | grep 9000
ps -elf | grep php-fpm

yum 安装 LNMP

//安装 nginx
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
 
 
yum install nginx -y 
nginx -v
 
systemctl start nginx
systemctl enable nginx
 
 
//安装 mysql 5.7 (mariadb)
yum remove mariadb*
 
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
 
systemctl start mysqld.service
systemctl enable mysqld.service
 
grep "password" /var/log/mysqld.log			#在日志文件中找出root用户的初始密码
2021-07-31T07:55:00.366359Z 1 [Note] A temporary password is generated for root@localhost: ga7%<d<0*jD&
 
//登录 mysql
mysql -uroot -p
Enter password: 		#输入初始密码 ga7%<d<0*jD&
 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';     #密码设置要求有 大小写字母、数字和符号 组合
 
grant all privileges on *.* to root@"%" identified by "Admin@123" with grant option;
flush privileges;
 
yum -y remove mysql57-community-release-el7-10.noarch     #为了防止每次yum操作都会自动更新,卸载这个软件
 
 
//安装 php7.2
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
 
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-redis
 
 
systemctl start php-fpm
systemctl enable php-fpm
php -v
 
 
//配置 nginx 支持 PHP 解析
cd /etc/nginx/conf.d
vim default.conf
......
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;  #将 /scripts 修改为nginx的工作目录
        include        fastcgi_params;
    }
 
systemctl restart nginx
 
cd /usr/share/nginx/html
vim index.php
<?php
phpinfo();
?>
 
浏览器访问:http://192.168.80.10/index.php
 
 
//测试mysql是否能连接成功
vim /usr/share/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.80.10','root','Admin@123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
 
浏览器访问:http://192.168.80.10/index.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值