Linux系统环境WEB发布网站的建设
韩维营(沈阳日报社)
摘要:本文介绍了CentOS系统WEB发布环境的组成、nginx、PHP-fpm、Tomcat、Mariadb等软件安装、详细阐述了主要配置参数含义及相应的特别注意事项,给出验证办法。
关键词:网页 静态网页 动态网页 发布引擎 数据库 反向代理Java nginx PHP-fpm Mariadb Tomcat
多数网站都是基于微软的windows系列软件建立的,由于使用的是封闭的商业化软件,配置相对简单。近年来,免费开源Linux系统不断成熟完善,Linux服务器系统开始在网站发布应用上走红,大有取代其它系统之势。下面以CentOS8.2为例说明如何实现。
CentOS8.2是基于Fedora 28和Linux Kernal 4.18的最新发行版,WEB发布平台通常是由发布引擎、存储数据的数据库、网页处理器、发布软件四部分组成,其中发布软件是针对发布平台要完成的功能特别专门编制的软件,因发布平台不同而不同,其余三个部分是必不可少的通用的独立工具,这三部分构成重要的WEB发布环境,离开合适WEB发布环境,发布软件是无法运行的。
WEB发布网页有静态网页和动态网页两种,静态网页是指web页面中供人们浏览的栏目选项始终是不变的,每个网页都是一个独立的文件,网页文件以.htm、html 、.shtml 、.xml 等后缀形式表示;而动态网页是指web页面中供人们浏览的栏目是由程序产生的,不同人不同时间点访问web页面看到的内容各不相同,网页文件以.asp 、.jsp 、.php 、.perl 、.cgi 等形式后缀表示。
Centos8的WEB发布引擎有Apache、tomcat、PHP和Nginx四种,tomcat是基于Java侧重动态WEB解析的http服务器,可单独运行。PHP是“超文本预处理器”,属服务器端执行的脚本语言,多用于处理PHP语言的网页。Nginx是俄罗斯的轻量级WEB服务器,处理静态WEB能力强悍,有负载均衡功能,用反向代理机制把动态WEB请求转发到后台交由第三方软件tomcat进行处理实现静动WEB分离,Nginx负责静态处理,tomcat负责动态处理。
下面阐述Centos+Nginx+MarriaDB+PHP+tomcat架构的安装与配置。
一、Nginx、MarriaDB、PHP、tomcat安装
1、Nginx安装
1)从nginx的官网下载最新版本nginx-1.19.1.tar.gz,解压下载包。
2)安装编译Nginx的依赖包
#dnf install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
3)配置nginx的编译参数
# ./configure --prefix=/usr/local/soft/nginx-1.19.1 --with-http_stub_status_module --with-http_ssl_module
在此可根据需要添加扩展nginx功能模块参与编译。
4)编译并安装
# make && make install
2、安装 mariadb 最新版 10.5.x
1)设置数据源
#vim /etc/yum.repos.d/mariadb.repo;添加如下内容:
[mariadb]
name = mariadb
baseurl=http://mirrors.aliyun.com/mariadb/yum/10.5/centos8-amd64/
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
enabled=1
gpgcheck=1
2)安装
(1)安装最新版本
#dnf -y install MariaDB-server MariaDB-client --disablerepo=AppStream
--disablerepo=AppStream 禁用仓库标识AppStream
(2)启动 mariadb
#systemctl start mariadb
3、安装PHP7.4.8
安装
(1)Enable php:remi-7.4 module.
dnf module enable php:remi-7.4 -y
(2)Install PHP 7.4.
dnf install -y php php-cli php-common
PHP 常用扩展包
dnf install -y php-dom php-simplexml php-ssh2 …
(4)查看版本
php -v
(5)查看启用的模块,请运行:
$ php --modules
4、安装tomcat
tomcat是基于java环境运行的软件,所以必须安装java包(过程略)。
1)下载apache-tomcat-9.0.40.tar.gz,将其解压到系统某一目录,即可运行。
# tar -zxvf apache-tomcat-9.0.40.tar.gz
启动tomcat
# ./startup.sh
关闭tomcat
# ./shutdown.sh
二、Nginx、MarriaDB、PHP、tomcat配置
Nginx、MarriaDB、PHP、tomcat安装完成后,需要进行必要的配置,方能胜任网站工作,这是WEB发布环境搭建的核心。
1、Nginx配置
1)设置软链接
为了在各种路径能正常运行Nginx,需配如下软连接:
ln -s /usr/local/soft/nginx-1.19.1/sbin/nginx /usr/local/sbin/nginx
2)为方便启停Nginx运行,配置nginx运行服务,新建nginx.service
#vim /usr/lib/systemd/system/nginx.service 文件,配置内容略
3)创建nginx运行所需的用户和用户组:
# groupadd nginx
-g:指定所属的group
-s:指定shell,因为它不需要登录,所以用/sbin/nologin
-M:不创建home目录,因为它不需要登录
# useradd -g nginx -s /sbin/nologin -M nginx
4)赋予nginx在网站根目录工作的所有权限:
# chown nginx:nginx /usr/local/soft/nginx-1.19.1/html -R
5)nginx.conf配置
包含WEB动静分离、PHP调用、文件下载等功能的脚本配置实例,如:
#vim /usr/local/soft/nginx-1.19.1/conf/nginx.conf
#设置nginx的用户和用户组
user nginx nginx;
worker_processes auto;
error_log /usr/local/soft/nginx-1.19.1/logs/error.log;
pid /usr/local/soft/nginx-1.19.1/logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
…
server {
listen 80;
server_name localhost;
root /usr/local/soft/nginx-1.19.1/html;
charset utf-8;
location / {
root /usr/local/soft/nginx-1.19.1/html;
index index.php index.html index.htm index.jsp index.do;
#在发布根目录下搜索网页地址栏输入的文件或目录(下载文件),没有跳转index.php;
try_files $uri $uri/ /index.php$is_args$args;
…
if ($request_filename ~* ^.*?\.
(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
add_header Content-Disposition: 'pwupload';
}
}
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
expires 5m;
}
location ~ .php$ { #调用PHP-pfm处理PHP网页
root /usr/local/soft/nginx-1.19.1/html;
fastcgi_pass unix:/run/php-fpm/www.sock; #使用socket协议
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.(jsp|jspx|do)?$ {
index index.jsp;
proxy_pass http://127.0.0.1:8080; #来自jsp请求交给tomcat处理
…
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/soft/nginx-1.19.1/html;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
}
}
检查nginx的工作状态:
# systemctl status nginx
2、MarriaDB配置
初始化设置数据库
#mysql_secure_installation
Mariadb运行root账户安全设置,初始化数据库。
3、PHP配置
(1)配置php.ini
vim /etc/php.ini
将#cgi.fix_pathinfo=0的注释删除掉,并改为0,这一项默认被注释并且值为1,避免恶意脚本注入的攻击。
(2)通信方式
php-fpm通信有两种方式(默认是第二种):
① 通过端口通信,通常在web与php-fpm不在同一台服务器中时使用此方法。
②通过*.sock文件进行互联通信,web与php-fpm在同一台服务器时使用。
php.conf配置
# vi /etc/php-fpm.conf
指定php-fpm的错误日志位置
error_log = /var/log/php-fpm/error.log
pid = /var/run/php-fpm.pid
#vim /etc/php-fpm.d/www.conf
user = nginx ;PHP用户
group = nginx ;PHP用户组
web与php-fpm在同一台服务器上使用系统本身socket协议
listen = /run/php-fpm/www.sock
配置通讯文件权限,否则nginx无法调用PHP-fpm
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
4、tomcat配置
创建tomcat.service文件
vi /usr/lib/systemd/system/tomcat.service
内容略
查看当前服务状态,看是否正常工作。
systemctl status tomcat.service
tomcat默认的程序发布路径为tomcat/webapps/ROOT/,若更改默认路径,可修改Tomcat配置文件server.xml,比如改到/usr/share/nginx/html/catweb,具体如下:
<Host name="localhost" appBase="webapps"
…
<Context path="" docBase="/usr/share/nginx/html/tomweb" debug="0" reloadable="true"/>
</Host>
三、WEB发布环境测试
编写测试WEB页检验发布环境是否正确。
1)vim /usr/local/soft/nginx-1.19.1/html/index.html
内容略,测试Nginx是否工作正常。
保存文件,在浏览器地址栏输入:localhost/index.html回车,结果如图1。
2)vim /usr/local/soft/nginx-1.19.1/html/test.php
填写如下内容,测试php-fpm是否工作正常。
<?php
phpinfo();
?>
保存文件,在浏览器地址栏输入:localhost/test.php回车,结果如图2。
3)vim /usr/local/soft/nginx-1.19.1/html/test.html
内容略,测试静态WEB网页是否正常工作
保存文件,在浏览器地址栏输入:localhost/test.html回车,结果如图3。
4)vim /usr/local/soft/apache-tomcat-9.0.40/webapps/ROOT/test.jsp
内容略,,测试tomcat是否工作正常。
保存文件,在浏览器地址栏输入:localhost:8090/test.jsp回车,结果如图4。
网页测试结果如下:
图1 图2 图3 图4
测试结果证明环境配置正确,各个WEB环境模块工作正常。
5)数据库使用:
在 shell 中输入
#mysql -u root -p;输入 root 的管理密码
一般启动数据库,直接执行:#mysql。
上述过程无报错,说明MarriaDB安装配置正确。
参考资料
源码编译构建LNMP架构(Linux + Nginx + MySQL + PHP)实现论坛的搭建
https://blog.csdn.net/songyuchaoshi/article/details/97830059
在CentOS 8-RHEL 8系统中安装PHP 7.4的方法
https://blog.csdn.net/weixin_39514326/article/details/102784965
Centos8 安装 mariadb 最新版 10.5.x
https://blog.csdn.net/fenglailea/article/details/105840417
Nginx+Tomcat实现动静分离
新闻技联动态
- 推动知识资源平台合规健康发展 共促数字版权规范化合理化 2023-03-06
- 成功举办中国新闻技术工作者联合会市县融媒体分会年会暨换届大会 2022-12-23
- 中国新闻技联新闻信息标准化分会 2022年年会成功召开 2022-12-01
- 《机器生产内容自动化分级》团体标准 正式发布实施 2022-12-01
- 延期通知:中国新闻技术工作者联合会 县市融媒体分会 2022 年学术年会暨技术交流会 2022-12-01
- 2022年中国新闻技术工作者联合会学术年会在贵阳成功举办 2022-11-17
- 喜报│53个案例入选首批“技术赋能‘新闻+’推荐案例” 2022-11-17
- 重磅│19位新闻技术工作者获此殊荣 2022年度“王选新闻科学技术奖”人才奖在贵阳颁奖 2022-11-17
- 新品│速看哪三项传媒技术创新产品发布 2022-11-17
- 2022年中国新闻技术工作者联合会学术年会胜利开幕! 2022-11-17