LNMP网站架构部署

 目录

一、LNMP架构部署(源码编译安装)

①实验准备

②安装nginx服务

③安装mysql服务,配置文件

④安装php服务,修改配置文件

⑤验证

静态页面测试访问

动态页面测试访问

调用数据库测试

二、LNMP架构应用实例

1.论坛网站应用

①nginx服务器上传压缩包并解压

 ②php服务器上修改论坛目录的属主属组

③nginx服务器上修改论坛目录归属 

 ④mysql服务器上创建论坛的数据库

⑤验证

2.博客网站应用

①nginx服务器上传博客软件包,解压

②php服务器共享目录中修改目录权限

③mysql服务器创建bbs数据库并刷新

④验证

 【课后练习】使用shell脚本一键部署LNMP架构


        lnmp是国内用的最多的网站架构,即Linux、nginx、mysql和php。

        LNMP的工作原理是:由客户端发送页面请求给Nginx,Nginx会根据location匹配用户访问请求的URL路径判断是静态还是动态。静态网页一般以 .html .htm .css .shtml结尾,动态网页一般是以 .php .jsp .py结尾。如果是静态网页,由Nginx直接处理和响应。如果是动态网页,Nginx会通过fastcgi接口转发给php-fpm进程接受,然后再由php解析器处理解释动态页面后响应返回给Nginx,Nginx再返回给客户端。如果动态页面涉及到数据库的读写,php会通过程序代码访问,mysql的api接口,并使用sql语句进行数据库的速写操作。

一、LNMP架构部署(源码编译安装)

这里举例分布式部署,好处是分开部署能够提高性能,软件安装没有前后顺序。


①实验准备

主机三台,nginx服务器IP为192.168.170.200mysql数据库IP为192.168.170.30php服务器IP为192.168.170.100。关闭防火墙、配置好本地yum源、挂载光盘;上传对应软件包到对应的服务器并完成解压;

[root@mynginx ~]# setenforce 0
[root@mynginx ~]# systemctl stop firewalld 
[root@mynginx ~]# cd /opt/
[root@mynginx ~]# rm -rf *
[root@mynginx opt]# rz -e
[root@mynginx opt]# ls
nginx-1.26.0.tar.gz
[root@mynginx opt]# tar xf nginx-1.26.0.tar.gz 
[root@mynginx opt]# ls
nginx-1.26.0  nginx-1.26.0.tar.gz
-------------------------------------------------------------------------------------------
[root@mymysql ~]# setenforce 0
[root@mymysql ~]# systemctl stop firewalld 
[root@mymysql ~]# cd /opt/
[root@mymysql opt]# ls
rh
[root@mymysql opt]# rm -rf *
[root@mymysql opt]# rz -e
[root@mymysql opt]# ls
mysql-boost-5.7.44.tar.gz
[root@mymysql opt]# tar xf mysql-boost-5.7.44.tar.gz 
[root@mymysql opt]# ls
mysql-5.7.44  mysql-boost-5.7.44.tar.gz
----------------------------------------------------------------------------------------[root@myphp ~]# setenforce 0
[root@myphp ~]# systemctl stop firewalld 
[root@myphp ~]# cd /opt/
[root@myphp opt]# ls
rh
[root@myphp opt]# rm -rf *
[root@myphp opt]# rz -e
[root@myphp opt]# ls
php-7.1.10.tar.bz2
[root@myphp opt]# tar xf php-7.1.10.tar.bz2 
[root@myphp opt]# ls
php-7.1.10  php-7.1.10.tar.bz2

②安装nginx服务

nginx的配置先做这么多,后面等mysql和php安装完毕再做,按顺序操作

1、安装依赖包
[root@mynginx opt]# yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
2、创建运行用户
[root@mynginx opt]# useradd -M -s /sbin/nologin nginx
3、编译安装
[root@mynginx opt]# cd nginx-1.26.0/
[root@mynginx nginx-1.26.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_module
[root@mynginx nginx-1.26.0]# make && make install
4、做软链接让系统能够直接调用nginx命令
[root@mynginx nginx-1.26.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
5、添加 Nginx 系统服务
[root@mynginx nginx-1.26.0]# vim /usr/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
[root@mynginx nginx-1.26.0]# chmod 754 /lib/systemd/system/nginx.service
[root@mynginx nginx-1.26.0]# systemctl daemon-reload
[root@mynginx nginx-1.26.0]# systemctl start nginx.service
[root@mynginx nginx-1.26.0]# systemctl enable nginx.service
[root@mynginx nginx-1.26.0]# netstat -lntp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13149/nginx: master 

③安装mysql服务,配置文件

系统初始状态中vim /etc/my.cnf里是有内容的(因为里面有mariadba的配置,需要卸载yum remove -y maria)

【安装 MySQL 服务】
1、安装Mysql环境依赖包
[root@mymysql opt]# yum -y install ncurses ncurses-devel bison cmake openssl-devel gcc gcc-c++ make

2、创建运行用户
[root@mymysql opt]# useradd -M -s /sbin/nologin  mysql

3.清除mariadb缓存
[root@mymysql opt]# yum remove -y mariadb*

4、编译安装
[root@mymysql opt]# cd /opt/mysql-5.7.44/
[root@mymysql mysql-5.7.44]# 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
[root@mymysql mysql-5.7.44]# make && make install

5、修改mysql 配置文件
[root@mymysql mysql-5.7.44]# 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

6、更改mysql安装目录和配置文件的属主属组
[root@mymysql mysql-5.7.44]# chown -R mysql:mysql /usr/local/mysql/
[root@mymysql mysql-5.7.44]# chown mysql:mysql /etc/my.cnf

7、设置路径环境变量
[root@mymysql mysql-5.7.44]# echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile[root@mymysql mysql-5.7.44]# source /etc/profile
[root@mymysql mysql-5.7.44]# echo $PATH 
/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

8、初始化数据库
cd /usr/local/mysql/bin/
[root@mymysql mysql-5.7.44]# cd /usr/local/mysql/bin/
[root@mymysql bin]# ./mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data

9、添加mysqld系统服务
[root@mymysql bin]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@mymysql bin]# systemctl daemon-reload
[root@mymysql bin]# systemctl start mysqld.service
[root@mymysql bin]# systemctl enable mysqld

10、修改mysql 的登录密码
[root@mymysql bin]# mysqladmin -u root -p password "abc123"
Enter password: (此处直接回车,因为安装时我们设置为无密码安装的)
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

11、登录mysql
[root@mymysql bin]# mysql -u root -pabc123

12、授权数据库给并刷新(允许所有主机使用root用户使用账号密码登录数据库,并且有所有权限)
mysql> grant all on *.* to 'root'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


④安装php服务,修改配置文件

1、安装环境依赖包
[root@myphp opt]# 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 pcre-devel

2、编译安装
[root@myphp opt]# cd php-7.1.10
[root@myphp 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
[root@myphp php-7.1.10]# make j2 && make install

3、路径优化
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

 有三个配置文件需要修改,文件中的程序用户统一为nginx

  • php.ini 主配置文件  
  • php-fpm.conf 进程服务配置文件
  • www.conf 扩展配置文件
4.修改配置文件
【修改php.ini主配置文件】
[root@myphp php-7.1.10]# php --ini         查看文件所在位置             
Configuration File (php.ini) Path: /usr/local/php/lib
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
[root@myphp php-7.1.10]# cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
[root@myphp php-7.1.10]# vim /usr/local/php/lib/php.ini
                           939行取消注释 date.timezone = Asia/Shanghai
----------------------------------------------------------------------------------------
【修改php-fpm.conf进程服务配置文件】
[root@myphp php-7.1.10]# cd /usr/local/php/etc/
[root@myphp etc]# ls
pear.conf  php-fpm.conf.default  php-fpm.d
[root@myphp etc]# cp  php-fpm.conf.default php-fpm.conf
[root@myphp etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php-fpm.d
[root@myphp etc]# vim php-fpm.conf
                    17行--去掉";"注释   pid = run/php-fpm.pid
----------------------------------------------------------------------------------------
【修改www.conf扩展配置文件】
[root@myphp etc]# cd /usr/local/php/etc/php-fpm.d/
[root@myphp php-fpm.d]# cp www.conf.default www.conf
[root@myphp php-fpm.d]# ls
www.conf  www.conf.default
[root@myphp php-fpm.d]# vim www.conf
23 user = nginx
24 group = nginx                          修改用户名、组名都统一为nginx用户 
36 listen = 192.168.170.100:9000          监听本机地址
62 listen.allowed_clients = 192.168.170.200    修改允许访问的客户端地址(这里即nginx服务器)
5【创建程序用户】
[root@myphp php-fpm.d]# useradd -M -s /sbin/nologin nginx       创建nginx程序用户
[root@myphp php-fpm.d]# cat /etc/passwd | grep nginx:
nginx:x:1001:1001::/home/php:/sbin/nologin

6【启动php-fpm】PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。
[root@myphp php-fpm.d]# cd /opt/php-7.1.10/sapi/fpm
[root@myphp fpm]# ls
config.m4  init.d.php-fpm     Makefile.frag  php-fpm.8.in     php-fpm.service     status.html.in  www.conf.in
CREDITS    init.d.php-fpm.in  php-fpm        php-fpm.conf     php-fpm.service.in  tests
fpm        LICENSE            php-fpm.8      php-fpm.conf.in  status.html         www.conf
[root@myphp fpm]# cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
[root@myphp fpm]# systemctl daemon-reload
[root@myphp fpm]# systemctl restart php-fpm.service
[root@myphp fpm]# systemctl enable php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[root@myphp fpm]# netstat -lntp | grep php
tcp        0      0 192.168.170.100:9000    0.0.0.0:*               LISTEN      12450/php-fpm: mast 

⑤验证

先回到nginx服务器做以下配置

[root@mynginx nginx-1.26.0]# vim /usr/local/nginx/conf/nginx.conf
  3 worker_processes  auto;
  4 worker_rlimit_nofile 65535;
 13 events {
 14     use epoll;
 15     worker_connections  65535;
 16 } 
 37     server {
 38         listen       80;
 39         server_name  www.xy101.com;
 40         
 41         charset utf-8;
 47             index  index.html index.htm index.php;
 45         location / {      这里的根目录为/usr/local/nginx/html
 46             root   html; 
 47             index  index.html index.htm index.php;
 48         }
 67         location ~ \.php$ {
 68             root           /usr/local/nginx/html;      这里我统一用这个目录
 69             fastcgi_pass   192.168.170.100:9000;
 70             fastcgi_index  index.php;
 71             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 72             include        fastcgi_params;
 73         }
 $document_root代表当前root指定的根目录(第一个location的root)
[root@mynginx html]# nginx -t                   检查语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@mynginx html]# systemctl restart nginx.service      重启服务
-------------------------------------------------------------------------------

【本机验证】 验证前可以先在Windows本地hosts文件中添加域名解析记录

由于静态页面是由Nginx直接处理和响应的,所以测试页面直接能够访问。

静态页面测试访问

在本机Windows浏览器输入http://www.xy101.com/test.html

【创建静态页面文件】
[root@mynginx ~]# cd /usr/local/nginx/html/
[root@mynginx html]# rz -e      (上传图片)
[root@mynginx html]# vim test.html
[root@mynginx html]# ls
50x.html  index.html  test.html  tuifei.jpg

动态页面测试访问

在本机Windows浏览器输入http://www.xy101.com/test.php

【创建动态页面文件】
[root@mynginx html]# vim test.php
<?php
phpinfo();
?>
~  

由于动态页面是Nginx通过fastcgi接口转发给php-fpm进程接受,然后再由php解析器处理解释动态页面后响应返回给Nginx,Nginx再返回给客户端的,所以此时我们如果用浏览器访问时找不到此文件的。需要在将动态页面位置共享给php服务器以便调用。

【安装共享程序并启动】
[root@mynginx html]# yum install -y rpcbind nfs
[root@mynginx html]# systemctl --now enable rpcbind nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

【设置挂载点目录】
[root@mynginx html]# vim /etc/exports        添加以下内容
/usr/local/nginx/html 192.168.170.0/24(rw,sync,no_root_squash)
[root@mynginx html]# showmount -e
Export list for mynginx:
/usr/local/nginx/html 192.168.170.0/24

此时回到php服务器做以下操作

【确定是否能看到nginx服务器的共享目录】
[root@myphp fpm]# showmount -e 192.168.170.200
Export list for 192.168.170.200:
/usr/local/nginx/html 192.168.170.0/24

【挂载目录】
[root@myphp fpm]# vim /etc/fstab         添加以下配置
192.168.170.200:/usr/local/nginx/html /usr/local/nginx/html nfs defaults 0 0
[root@myphp fpm]# mount -a
[root@myphp fpm]# df -hT
文件系统                              类型      容量  已用  可用 已用% 挂载点
devtmpfs                              devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                                 tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                                 tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                                 tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos_pyx-root           xfs        36G  5.1G   31G   15% /
/dev/sda1                             xfs      1014M  185M  830M   19% /boot
tmpfs                                 tmpfs     378M   32K  378M    1% /run/user/0
/dev/sr0                              iso9660   4.4G  4.4G     0  100% /mnt
192.168.170.200:/usr/local/nginx/html nfs4       38G  4.4G   33G   12% /usr/local/nginx/html

【查看nginx挂载点目录文件是否同步成功】
[root@myphp fpm]# ls /usr/local/nginx/html/
50x.html  index.html  test.html  test.php  tuifei.jpg

如果没有显示可以清空浏览器缓存重新输入访问路径,或者尝试回到nginx服务器重启nginx。

调用数据库测试

在本机Windows浏览器输入http://www.xy101.com/mysql.php

【创建一个mysql文件】nginx挂载点目录或php挂载的目录中,ip为mysql服务器的ip

<?php
$link=mysqli_connect('192.168.170.30','root','abc123');
if($link) echo "<h1>mysql connect successful </h1>";
else echo "<h1>mysql connect failed</h1>";
?>

此文件不管是在nginx服务器的/usr/local/nginx/html还是php服务器的/usr/local/nginx/html目录中创建的,都会同步。

二、LNMP架构应用实例

1.论坛网站应用

①nginx服务器上传压缩包并解压


[root@mynginx opt]# rz -E
[root@mynginx opt]# ls
dir_SC_UTF8  Discuz_X3.4_SC_UTF8.zip  nginx-1.26.0  nginx-1.26.0.tar.gz  说明.htm

【复制安装程序到共享目录中】
[root@mynginx opt]# cd dir_SC_UTF8/
[root@mynginx dir_SC_UTF8]# ls
readme  upload  utility
[root@mynginx dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/discuz
[root@mynginx dir_SC_UTF8]# cd /usr/local/nginx/html/
[root@mynginx html]# ls
50x.html  discuz  index.html  mysql.php  test.html  test.php  tuifei.jpg

 ②php服务器上修改论坛目录的属主属组


[root@myphp php-fpm.d]# cd /usr/local/nginx/html/
[root@myphp html]# ll
总用量 152
-rw-r--r--  1 root root    497 6月   2 01:48 50x.html
drwxr-xr-x 13 root root   4096 6月   2 04:50 discuz
-rw-r--r--  1 root root    615 6月   2 01:48 index.html
-rw-r--r--  1 root root    161 6月   2 04:27 mysql.php
-rw-r--r--  1 root root     52 6月   2 03:46 test.html
-rw-r--r--  1 root root     20 6月   2 03:31 test.php
-rw-r--r--  1 root root 129319 6月   2 03:44 tuifei.jpg
[root@myphp html]# chown -R nginx:nginx discuz/
[root@myphp html]# ll
总用量 152
-rw-r--r--  1 root  root     497 6月   2 01:48 50x.html
drwxr-xr-x 13 nginx nginx   4096 6月   2 04:50 discuz
-rw-r--r--  1 root  root     615 6月   2 01:48 index.html
-rw-r--r--  1 root  root     161 6月   2 04:27 mysql.php
-rw-r--r--  1 root  root      52 6月   2 03:46 test.html
-rw-r--r--  1 root  root      20 6月   2 03:31 test.php
-rw-r--r--  1 root  root  129319 6月   2 03:44 tuifei.jpg

③nginx服务器上修改论坛目录归属 


[root@mynginx html]# chown -R nginx:nginx discuz/
[root@mynginx html]# ll
总用量 152
-rw-r--r--.  1 root  root     497 6月   2 01:48 50x.html
drwxr-xr-x. 13 nginx nginx   4096 6月   2 04:50 discuz
-rw-r--r--.  1 root  root     615 6月   2 01:48 index.html
-rw-r--r--.  1 root  root     161 6月   2 04:27 mysql.php
-rw-r--r--.  1 root  root      52 6月   2 03:46 test.html
-rw-r--r--.  1 root  root      20 6月   2 03:31 test.php
-rw-r--r--.  1 root  root  129319 6月   2 03:44 tuifei.jpg

 ④mysql服务器上创建论坛的数据库


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database discuz;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| discuz             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> grant all on discuz. * to 'root'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

⑤验证

在浏览器输入http://www.xy101.com/discuz/index.php,成功会自动跳转到安装界面

2.博客网站应用

①nginx服务器上传博客软件包,解压

[root@mynginx html]# cd /opt/
[root@mynginx opt]# rz -E
[root@mynginx opt]# ls
dir_SC_UTF8              nginx-1.26.0         wordpress-4.9.4-zh_CN.tar.gz
Discuz_X3.4_SC_UTF8.zip  nginx-1.26.0.tar.gz  说明.htm
[root@mynginx opt]# tar xf wordpress-4.9.4-zh_CN.tar.gz 
[root@mynginx opt]# ls
dir_SC_UTF8              nginx-1.26.0         wordpress                     说明.htm
Discuz_X3.4_SC_UTF8.zip  nginx-1.26.0.tar.gz  wordpress-4.9.4-zh_CN.tar.gz

【复制软件包目录到共享目录中】
[root@mynginx opt]# cp -r wordpress
wordpress/                    wordpress-4.9.4-zh_CN.tar.gz  
[root@mynginx opt]# cp -r wordpress/ /usr/local/nginx/html/bbs
[root@mynginx opt]# cd /usr/local/nginx/html/
[root@mynginx html]# ls
50x.html  bbs  discuz  index.html  mysql.php  test.html  test.php  tuifei.jpg

【修改论坛目录权限】
[root@mynginx html]# ll
总用量 156
-rw-r--r--.  1 root  root     497 6月   2 01:48 50x.html
drwxr-xr-x.  5 root  root    4096 6月   2 05:26 bbs
drwxr-xr-x. 13 nginx nginx   4096 6月   2 04:50 discuz
-rw-r--r--.  1 root  root     615 6月   2 01:48 index.html
-rw-r--r--.  1 root  root     161 6月   2 04:27 mysql.php
-rw-r--r--.  1 root  root      52 6月   2 03:46 test.html
-rw-r--r--.  1 root  root      20 6月   2 03:31 test.php
-rw-r--r--.  1 root  root  129319 6月   2 03:44 tuifei.jpg
[root@mynginx html]# chown -R nginx:nginx bbs/
[root@mynginx html]# ll
总用量 156
-rw-r--r--.  1 root  root     497 6月   2 01:48 50x.html
drwxr-xr-x.  5 nginx nginx   4096 6月   2 05:26 bbs
drwxr-xr-x. 13 nginx nginx   4096 6月   2 04:50 discuz
-rw-r--r--.  1 root  root     615 6月   2 01:48 index.html
-rw-r--r--.  1 root  root     161 6月   2 04:27 mysql.php
-rw-r--r--.  1 root  root      52 6月   2 03:46 test.html
-rw-r--r--.  1 root  root      20 6月   2 03:31 test.php
-rw-r--r--.  1 root  root  129319 6月   2 03:44 tuifei.jpg

②php服务器共享目录中修改目录权限

[root@myphp php-fpm.d]# cd /usr/local/nginx/html/
[root@myphp html]# ll
总用量 156
-rw-r--r--  1 root root    497 6月   2 01:48 50x.html
drwxr-xr-x  5 php  php    4096 6月   2 05:26 bbs
drwxr-xr-x 13 php  php    4096 6月   2 04:50 discuz
-rw-r--r--  1 root root    615 6月   2 01:48 index.html
-rw-r--r--  1 root root    161 6月   2 04:27 mysql.php
-rw-r--r--  1 root root     52 6月   2 03:46 test.html
-rw-r--r--  1 root root     20 6月   2 03:31 test.php
-rw-r--r--  1 root root 129319 6月   2 03:44 tuifei.jpg
[root@myphp html]# chown -R nginx:nginx discuz/
[root@myphp html]# chown -R nginx:nginx bbs/
[root@myphp html]# ll
总用量 156
-rw-r--r--  1 root  root     497 6月   2 01:48 50x.html
drwxr-xr-x  5 nginx nginx   4096 6月   2 05:26 bbs
drwxr-xr-x 13 nginx nginx   4096 6月   2 04:50 discuz
-rw-r--r--  1 root  root     615 6月   2 01:48 index.html
-rw-r--r--  1 root  root     161 6月   2 04:27 mysql.php
-rw-r--r--  1 root  root      52 6月   2 03:46 test.html
-rw-r--r--  1 root  root      20 6月   2 03:31 test.php
-rw-r--r--  1 root  root  129319 6月   2 03:44 tuifei.jpg

③mysql服务器创建bbs数据库并刷新

mysql> create database bbs;
Query OK, 1 row affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bbs                |
| discuz             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

④验证

在本机浏览器输入http://www.xy101.com/bbs/index.php

 【课后练习】使用shell脚本一键部署LNMP架构

  • 43
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装ansible 在一台主控机上安装ansible,并将需要部署的目标机器的IP地址加入到ansible的hosts文件中。 2. 编写playbook 使用yaml格式编写ansible playbook文件,包括以下任务: - 安装Nginx、MySQL和PHP - 修改Nginx配置文件,配置虚拟主机和反向代理 - 修改MySQL配置文件,设置root密码和字符集 - 部署PHP应用程序文件和配置文件 示例playbook文件如下: ```yaml --- - hosts: webservers become: true tasks: - name: Install packages yum: name: "{{ item }}" state: present with_items: - nginx - mysql - mysql-server - php - php-mysql - php-fpm - name: Start services service: name: "{{ item }}" state: started enabled: true with_items: - nginx - mysqld - php-fpm - name: Configure Nginx copy: src: files/nginx.conf dest: /etc/nginx/nginx.conf notify: - Reload Nginx - name: Configure MySQL copy: src: files/my.cnf dest: /etc/my.cnf notify: - Restart MySQL - name: Deploy PHP application copy: src: files/php_app dest: /usr/share/nginx/html - name: Configure PHP copy: src: files/php.ini dest: /etc/php.ini notify: - Restart PHP-FPM handlers: - name: Reload Nginx service: name: nginx state: reloaded - name: Restart MySQL service: name: mysqld state: restarted - name: Restart PHP-FPM service: name: php-fpm state: restarted ``` 3. 准备文件 将需要部署的应用程序文件和配置文件打包成tar.gz文件,并放置在主控机上。 4. 执行playbook 在主控机上执行ansible-playbook命令,指定playbook文件和目标机器的IP地址,以及需要部署的应用程序文件和配置文件的路径。 ```bash ansible-playbook -i hosts playbook.yml --extra-vars "app_file=/path/to/app.tar.gz" ``` 5. 验证部署 访问Nginx的虚拟主机地址,验证应用程序是否正常运行。同时,使用MySQL客户端连接数据库,验证数据库是否正常运行并包含正确的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值