LNMP网站架构部署

news2024/11/25 16:43:08

 目录

一、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 /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 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架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1795790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网鼎杯 2020 玄武组 SSRFMe

复习一下常见的redis主从复制 主要是redis伪服务器的选择和一些小坑点 <?php function check_inner_ip($url) { $match_resultpreg_match(/^(http|https|gopher|dict)?:\/\/.*(\/)?.*$/,$url); if (!$match_result) { die(url fomat error); } try { …

安卓照片云备份:如何将Android照片备份到云服务

随着智能手机摄影技术的发展&#xff0c;我们每天都在手机上拍摄大量照片和视频。为了防止宝贵的回忆丢失&#xff0c;将这些照片备份到云服务上是一个明智的选择。我们有多种云服务可供选择&#xff0c;如华为云、小米云、腾讯云等&#xff0c;它们提供了安全、便捷的数据备份…

力扣2968.执行操作使频率分数最大

力扣2968.执行操作使频率分数最大 方法一&#xff1a;滑窗 前缀和 求前缀和数组s 求一个数组补齐到中位数的差值 枚举右端点 class Solution {public:int maxFrequencyScore(vector<int>& nums, long long k) {int res0,n nums.size();sort(nums.begin(),nums…

tomcat中管理环境变量之setenv.sh

tomcat配置spring profiles springboot打包war部署到外部tomcat的时候指定profile启动 windows 在%tomcat%/bin下创建setenv.bat文件 linux 在%tomcat%/bin下创建setenv.sh文件 使用JVM参数: windows set "JAVA_OPTS%JAVA_OPTS% -Dspring.profiles.activedev"in…

【ROS2大白话】三、给turtlebot3安装realsense深度相机

系列文章目录 【ROS2大白话】一、ROS2 humble及cartorgrapher安装 【ROS2大白话】二、turtlebot3安装 【ROS2大白话】三、给turtlebot3安装realsense深度相机 【ROS2大白话】四、ROS2非常简单的传参方式 文章目录 系列文章目录效果展示一、修改model.sdf文件1. 路径位置2. 修改…

基于python的网上挂号预约系统-计算机毕业设计源码35796

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;医院当然也不例外。网上挂号预约系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用Py…

数据结构:详解二叉树(树,二叉树顺序结构,堆的实现与应用,二叉树链式结构,链式二叉树的4种遍历方式)

目录 1.树的概念和结构 1.1树的概念 1.2树的相关概念 1.3树的代码表示 2.二叉树的概念及结构 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的存储结构 2.3.1顺序存储 2.3.2链式存储 3.二叉树的顺序结构和实现 3.1二叉树的顺序结构 3.2堆的概念和结构 3.3堆的特点 3…

Linux 35.5 + JetPack v5.1.3@ego-planner-swarm编译安装

Linux 35.5 JetPack v5.1.3ego-planner-swarm编译安装 1. 源由2. 编译&安装Step 1&#xff1a;依赖库安装Step 2&#xff1a;建立工程Step 3&#xff1a;编译工程Step 4&#xff1a;安装工程 3. 问题汇总3.1 组件ros-noetic-roslint问题3.2 uav_simulator/local_sensing -…

Win32和c++11多线程

Win32和c11多线程 一、概念1.线程的特点线程内核对象线程控制块线程是独立调度和分派的基本单位共享进程的资源 2.线程的上下文切换引起上下文切换的原因 3.线程的状态 二、Windows多线程API1.CreateThread创建线程2.获取线程ID3.关闭线程句柄4.挂起线程5.恢复线程6.休眠线程的…

GAT1399协议分析(二)--注册流程分析

一、官方流程说明 二、官方流程解析 1 : 发起方向接收方发送注册 HTTP POST 请求/VIID/System/Register。 2: 接收方向发送方发送响应401 Unauthorized, 并在响应的消息头 WWW-Authenticate 字段中给 出适合发送方的认证机制和参数。 3: 发起方重新向接收方发送注册 HTTP POST…

谷歌创新框架:从非结构化数据,实现多模态学习

看、听、说的多模态已成为主流大模型的重要功能之一。但在数据爆炸时代&#xff0c;大模型学习文本类的结构化数据相对还好一些&#xff0c;但要去学习视频、音频、图片等非结构化数据非常困难。 目前&#xff0c;从结构化和非结构化数据实现多模态学习&#xff0c;会随着模态…

【Linux】查看进程在哪个CPU上运行

当前服务器是多核&#xff0c;在进行性能压测时&#xff0c;需要除了要观测全局的CPU使用率&#xff0c;对于单进程单线程往往需要在一个cpu上运行&#xff0c;那如何查看进程在哪个CPU上运行呢&#xff1f; 方法一&#xff1a;taskset taskset命令主要是用来检索或设置一个处…

IO进程线程(九)线程的同步 进程间通信

文章目录 一、 线程的同步&#xff08;一&#xff09;无名信号量sem1. 定义和初始化2.获取信号量3.释放信号量4. 销毁5. 使用示例 &#xff08;二&#xff09;条件变量1. 定义和初始化2. 获取条件变量3. 释放条件变量4. 销毁条件变量 二、进程间通信&#xff08;一&#xff09;…

yum进阶——配置yum源

一、yum概述 yum的主要作用 解决依赖关系 自动安装 自动升级 各个系统中的安装软件服务 CentOS7 &#xff1a;yum -y 安装 rpm包 CentOS8 &#xff1a;dnf&#xff08;yum的升级版&#xff09;&#xff0c; Ubantu(22.04) &#xff1a;apt -y 安装&#xff0c;安装源为/…

【Python报错】已解决ModuleNotFoundError: No module named ‘packaging’

成功解决“ModuleNotFoundError: No module named ‘packaging’”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No module named packaging这样的错误&#xff0c;通常意味着你的Python环境中缺少名为packaging的模块&#xff0c;或者该模块没有被正确…

sing-task message

文章目录 1.起因2.查因过程2.1 定位job2.2 定位sql text2.3 定位db_link2.4 测试dblink2.5 tnsping host2.6 检查host信息2.7检查网路状况 3.处置办法&#xff1a;4.结论 1.起因 在巡查长事务时&#xff0c;有两个事务执行了很长时间没有完成 SELECT SE.SID,SE.SERIAL#,to_ch…

CEC2017(Python):五种算法(SSA、RFO、OOA、PSO、GWO)求解CEC2017

一、5种算法简介 1、麻雀搜索算法SSA 2、红狐优化算法RFO 3、鱼鹰优化算法OOA 4、粒子群优化算法PSO 5、灰狼优化算法GWO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem defin…

gitee和github的协同

假设gitee上zhaodezan有一个开发库&#xff0c;但是从andeyeluguo上拉取最新的&#xff08;从github上同步过来最新的&#xff09; git remote add dbgpt_in_gitee https://gitee.com/andeyeluguo/DB-GPT.git remote -v git pull --rebase dbgpt_in_gitee main 有冲突可能需要…

前端工程化工具系列(九)—— mddir(v1.1.1):自动生成文件目录结构工具

mddir 是一个基于项目目录结构动态生成 Markdown 格式目录结构的工具&#xff0c;方便开发者在文档中展示文件和文件夹的组织结构。 1. 安装 全局安装改工具&#xff0c;方便用于各个项目。 pnpm i -g mddir2. 使用 在想要生成目录接口的项目内打开命令行工具&#xff0c;输…

【漏洞复现】用友NC downCourseWare 任意文件读取漏洞

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具&#xff0c;用友NC提供了一系列业务管理模块&#xff0c;包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等&#xff0c;帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC …