huawei euleros - 用宝塔面板安装nginx

概述

在本地装好huawei euleros v2.0SP5基本系统.
想装第三方软件, e.g. nginx, apache…
但是都提示有好多库缺失, 应该是少装了一些库.
最后, 装的是开发者选项, 将附加选项都选上.
按照华为云官方说明, 将yum repo配好.
现在就可以装第三方软件了, 不会显示缺什么库, 挺正常的.

前置准备

已经写了笔记, 基本环境配置 + yum repo 配置, 这2步必须做完.
hawei EulerOS - 安装后的基本配置操作
huawei euleros - add yum repo

安装第三方软件

初步我就想搭一个web服务器环境, nginx或者apache都行, 将网站素材丢进www根目录, 能显示静态网页就行.
看到网上大神推荐, 用宝塔面板来快速搭建web站点环境.
我也试试.

安装宝塔面板

在bing中搜索 “宝塔面板”
在这里插入图片描述
转到宝塔面板官网
在这里插入图片描述
点击免费安装
在这里插入图片描述
找到Linux面板, 点击安装脚本.
在这里插入图片描述
euleros是centos改进版, 所以这里选择centos脚本, 点击复制, 得到安装脚本.

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

因为vmware16没装vmtools, 所以无法在命令行粘贴这行脚本.
我是用SecretCRT连接主机, 然后 su - root 切到 root用户, 在SecretCRT命令窗口粘贴这行脚本.
如果不是安装的euleros开发者选项, 运行宝塔脚本也会一堆报错, 说很多库缺失了. 所以必须先将前置的2个笔记内容做了.
安装完成后如下:
在这里插入图片描述
因为我不是在公网华为云服务器上安装, 外网IP是活动的, 就在内网面板上运行宝塔网页环境.
如果是在公网的华为云服务器上安装宝塔面板, 有固定的公网IP, 就用宝塔提供的公网url.
将这个框框中的宝塔环境(url, username, pwd)保存好.

查询宝塔面板用的8888端口是否打开了

[root@localhost ~]# firewall-cmd --query-port=8888/tcp
yes

如果端口没打开, 官方文档上有说明, 或者直接查看 firewall-cmd --help
在这里插入图片描述

运行宝塔面板

先做个vmware的快照(将宝塔面板的访问信息写入快照的备注), 如果有幺蛾子, 还可以重来.
在chrome浏览器中运行宝塔内网url, 输入在命令行安装完宝塔完成时得到的用户名和口令. 绑定宝塔账号(用手机注册的宝塔账户)
在这里插入图片描述
在弹出的安装对话框中, 选择LNMP或LAMP的环境, 挑一个, 点击"一键安装".
装好后, 如果nginx或apache正常运行, 就得到了一个web网站的可用容器.
先试试LNMP(装的是nginx)
在这里插入图片描述
等着安装列表中的任务完事, 大概10分钟.
如果宝塔对话框没动静了, 点击一下对话框左边的按钮(任务列表, 消息列表), 切换一下按钮.
最后任务列表为0, 就是安装完了.叉掉安装对话框.
在这里插入图片描述
在宝塔面板添加新网站
在这里插入图片描述

在这里插入图片描述
添加完网站后, 可以看到网站的根目录为 /www/wwwroot/192.168.236.60, 往这个目录中放web网站素材就行了.
现在访问一下 http://192.168.236.60, 看看有没有反应.
在这里插入图片描述
有反应, 说明已经访问到nginx的web服务了. 只是下一步要去配置nginx.

现在关机, 做vmware镜像, 如果在调整时出了幺蛾子, 还可以后悔.

重新启动虚拟机.

去/www/wwwroot/192.168.236.60看看有啥东西.
在这里插入图片描述
直接运行 http://192.168.236.60/index.html, 还显示403
那下一步, 就是去配置nginx或者去配置erleros

查看端口开了么?

[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 20/tcp 21/tcp 22/tcp 80/tcp 443/tcp 8888/tcp 39000-40000/tcp 888/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

可以看到端口80, 443 都开了.

查看nginx配置文件

[root@localhost ~]# nginx -t
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful

打开配置文件, 查看日志位置

error_log  /www/wwwlogs/nginx_error.log
access_log  /www/wwwlogs/access.log;
access_log off;

可以看到访问日志关了.
去看看错误日志, 错误日志中没东西
重启nginx

service nginx restart

动态查看nginx日志

tail -f /www/wwwlogs/nginx_error.log

重新访问 http://192.168.236.60
还是403, 且日志中没东西.

打开访问日志(将 /www/server/nginx/conf/nginx.conf 中的 access_log on;)
重启nginx (service nginx restart)
实时查看访问日志

tail -f /www/wwwlogs/access.log

重新访问 http://192.168.236.60
还是403, 且日志中没东西.
(复原 /www/server/nginx/conf/nginx.conf 中的 access_log off;)

修改配置文件中的 user

vi /www/server/nginx/conf/nginx.conf
# user  www www; # 修改为下面这行
user root www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;

重启nginx

service nginx restart

再访问网页
在这里插入图片描述
这回行了
再做个虚拟机快照, 想后悔时还来得及.
重新启动虚拟机

修改web素材, 试试效果, 确定web素材目录

查了资料, 直接用SecretCRT来传文件也行, 是命令行的, 不方便.
正好SecretCRT便携版中还有一个SecureFXPortable.exe, 是可视化的SFTP工具.
以noroot用户登录
在这里插入图片描述
上面实验已经知道, 网站的根目录为 /www/wwwroot/192.168.236.60
看看noroot用户是否能访问?
在这里插入图片描述
访问不到

将noroot用户加入网站目录所有者的组

查看noroot用户现在, 在哪些组中

[noroot@localhost ~]$ groups noroot
noroot : noroot wheel

可以看到noroot用户属于noroot(加用户时的同名默认组), wheel(修改sudo时加入的组)

看看网站根目录属于哪个组?

切到root用户下操作

[root@localhost ~]# ls -l /www/wwwroot
总用量 4
drwxr-xr-x 2 www www 4096 102 13:27 192.168.236.60

那将www组加进noroot用户就好了.

sudo usermod -a -G www noroot

再次查看noroot用户现在在哪些组中?

切回noroot用户

su - noroot
[noroot@localhost ~]$ groups noroot
noroot : noroot wheel www

行了, noroot用户已经对 www组有权限了
运行 SecureFX, 用noroot用户登录, 由/WWW目录切到/WWW/wwwroot目录时, 报错, 访问拒绝.

i SEND : Stat /www/wwwroot
i SEND : RealPath, base=/www/wwwroot
i Resolved RealPath: /www/wwwroot
! Open directory failed: /www/wwwroot (Access is denied.)

那可能是目录的组权限不够, 再看一眼目录权限

drwxr-xr-x.   7 root root  4096 102 12:19 www
# noroot可以 cd /www

[noroot@localhost www]$ pwd
/www
[noroot@localhost www]$ ls -l
总用量 20
drw-------.  6 root root 4096 102 12:19 backup
-rw-------.  1 root root    5 102 12:16 disk.pl
drwxr-xr-x. 14 root root 4096 102 17:19 server
drwx------.  3 www  www  4096 102 17:25 wwwlogs
drwx------.  3 root root 4096 102 17:25 wwwroot
[noroot@localhost www]$ cd wwwlogs
-bash: cd: wwwlogs: 权限不够
[noroot@localhost www]$ cd wwwroot
-bash: cd: wwwroot: 权限不够

发现这2个目录(/www/wwwlogs, /www/wwwroot)只有所有者有权限, 组和其他人都没有权限, 所以进不去目录.
这就是SFTP工具切不到这2个目录的原因. 为了传文件, 只需要/www/wwwroot/IP目录的权限

将这个目录的其他人权限改为可读可执行

chmod o+rx-w /www/wwwroot
[root@localhost www]# ls -l
总用量 20
drw-------.  6 root root 4096 102 12:19 backup
-rw-------.  1 root root    5 102 12:16 disk.pl
drwxr-xr-x. 14 root root 4096 102 17:19 server
drwx------.  3 www  www  4096 102 17:25 wwwlogs
drwx---r-x.  3 root root 4096 102 17:25 wwwroot

可以看到 wwwroot目录, 是root用户所有, 组没有权限, 其他人权限为读和执行.
切回noroot用户, 试试操作这个目录

[root@localhost www]# su - noroot
上一次登录:2022年 10218:28:25 星期日 CSTpts/0 上
[noroot@localhost ~]$ cd /
[noroot@localhost /]$ ls -l
总用量 76
...
drwxr-xr-x.   7 root root  4096 102 12:19 www
[noroot@localhost /]$ cd /www
[noroot@localhost www]$ ls -l
总用量 20
drw-------.  6 root root 4096 102 12:19 backup
-rw-------.  1 root root    5 102 12:16 disk.pl
drwxr-xr-x. 14 root root 4096 102 17:19 server
drwx------.  3 www  www  4096 102 17:25 wwwlogs
drwx---r-x.  3 root root 4096 102 17:25 wwwroot
[noroot@localhost www]$ cd wwwroot
[noroot@localhost wwwroot]$ ls -l
总用量 4
drwxr-xr-x 2 www www 4096 102 17:25 192.168.236.60
[noroot@localhost wwwroot]$ cd 192.168.236.60/
[noroot@localhost 192.168.236.60]$ ls -l
总用量 8
-rwxr-xr-x 1 www www 138 102 17:25 404.html
-rwxr-xr-x 1 www www 917 102 17:25 index.html

可以看到, 将root用户所有的目录的其他人权限, 改为r-x就行了, 就可以让noroot用户通过命令行进入这些目录.
现在用SFTP工具试试.
在这里插入图片描述
可以看到, 可以将web素材拷贝出来.
现在将web素材改改, 看看能不能拷贝覆盖回去.

SFTP工具的日志如下, 打不开同名的目标文件

i Transfer(0x000D4C2000000005): Attempted to transfer 1 files.
i Transfer(0x000D4C2000000005): Transferred 0 files successfully.
i Transfer(0x000D4C2000000005): index.html: Unable to open destination file.

运行网页, 还是原来没改过的网页内容.

[noroot@localhost wwwroot]$ cd 192.168.236.60/
[noroot@localhost 192.168.236.60]$ ls -l
总用量 8
-rwxr-xr-x 1 www www 138 102 17:25 404.html
-rwxr-xr-x 1 www www 917 102 17:25 index.html

可以看到目标文件都是www用户和用户组的, 其他用户只有执行的权限.
试试用www用户登录SFTP工具, 然后换文件.

passwd www
service nginx restart

www用户不能用来登SFTP
试试在命令行中, 删掉/www/wwwroot/192.168.236.60目录中的内容.
用noroot用户登录sftp工具, 将修改过的web素材丢到/www/wwwroot/192.168.236.60目录中.

也丢不进去.
看192.168.236.60目录权限

[root@localhost wwwroot]# pwd
/www/wwwroot
[root@localhost wwwroot]# ls -l
总用量 4
drwxr-xr-x 2 www www 4096 102 19:16 192.168.236.60

发现这个目录的组是没有写权限的.
尝试将写权限给组, 因为noroot用户属于组www, 试试.

[root@localhost wwwroot]# chmod g+rxw /www/wwwroot/192.168.236.60
[root@localhost wwwroot]# ls -l
总用量 4
drwxrwxr-x 2 www www 4096 102 19:16 192.168.236.60

再试试用noroot用户登录SFTP工具, 看看能不能替换web素材.
在这里插入图片描述
替换成功了!
现在运行一下网页试试
在这里插入图片描述

备注

这次实验目的(搭建一个可用的web环境)就成功了.
下一步, 将参加活动买的华为服务器上的环境重新搭建一次.
那么本地和远程就有了同样的环境, 在本地修改测试完, 再丢到远程服务器上正式跑.

END

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐