实战|如何在Linux 系统上免费托管网站

news2024/11/18 13:27:58

动动发财的小手,点个赞吧!

Web 服务器可用于指代硬件和软件,或者两者一起工作。出于本指南的目的,我们将重点关注软件方面,并了解如何在 Linux 机器上托管网站。

Web 服务器是一种通过 HTTP/HTTPS 协议接收并响应客户端请求的软件程序。其主要目的是显示网站内容,这些内容通常采用文本、图像和视频的形式。

Web 服务器可以提供静态或动态内容。静态内容,顾名思义,是指几乎不会改变并且必然保持不变的内容。服务器按原样将内容发送回用户的浏览器。

动态内容是经常变化或不断更新的内容。为了提供动态内容,Web 服务器还必须与数据库服务器和服务器端脚本语言一起工作。

本指南[1]将演示如何设置 Apache Web 服务器以在 Linux 系统上免费托管网站。

依赖

要按照本指南进行操作,请确保您具备以下条件。

  • 可以从您的 ISP 获取专用公共 IP 地址。
  • Linux 盒子,可以是您首选操作系统变体的 Linux 服务器安装。在本指南中,我们将使用 Debian 11。

您还需要安装 LAMP 服务器,它是 Linux、Apache 和 MySQL(也可以是 MariaDB)的缩写。

如何在 Linux 服务器上托管网站

在本节中,我们将继续讨论 Web 服务器的主要组件。

什么是 Apache?

Apache 是一种流行的免费开源跨平台 Web 服务器,在 Apache License 2.0 下发布。它是使用最广泛的 Web 服务器之一,占据近 32.2% 的 Web 服务器市场份额。

要检查可用的 Apache 最新版本以及您的服务器上是否安装了该版本,请运行以下命令:

apt-cache policy apache2 (On Debian-based OS)

从输出中,您可以看到参数 Installed: (none) 表示尚未安装。您还可以获得有关 Debian / Ubuntu 存储库提供的最新版本的信息,在本例中为 2.4.52。

alt

在现代 Red Hat 发行版上,您可以使用以下 dnf 命令检查 Apache 的可用性,如下所示。

dnf search httpd
alt

从上面的输出中,您可以看到 Apache httpd 包可供下载。如果您的系统上未安装 Apache,请使用“apt”或“dnf”包管理器来安装 Apache,如图所示。

在基于 Debian 的系统上:

$ sudo apt install apache2 -y   
$ sudo systemctl start apache2  
$ sudo systemctl enable apache2  
$ sudo systemctl status apache2
alt

在基于 Red Hat 的系统上:

# dnf install httpd -y   
# systemctl start httpd  
# systemctl enable httpd  
# systemctl status httpd
alt

什么是 MariaDB?

MariaDB 是 MySQL 的一个分支,是最流行的开源关系数据库管理系统之一。如今,它比 MySQL 更受欢迎,因为它具有更快的复制和执行查询速度以及安全性和大量的存储引擎。

要在基于 Debian 的系统上安装 MariaDB:

$ sudo apt install mariadb-server mariadb-client -y  
$ sudo systemctl start mariadb  
$ sudo systemctl enable mariadb  
$ sudo systemctl status mariadb  

以下输出显示 MariaDB 已安装并按预期运行。

alt

要在基于 RHEL 的系统上安装 MariaDB:

# dnf install mariadb-server -y  
# systemctl start mariadb  
# systemctl enable mariadb  
# systemctl status mariadb 
alt

什么是 PHP?

PHP 是 PHP 超文本预处理器的递归缩写,它是一种流行的通用脚本语言,主要用于 Web 开发。

要在基于 Debian 的系统上安装 PHP:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install  ca-certificates apt-transport-https software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt install php8.0 libapache2-mod-php8.0 

要在基于 RHEL 的系统上安装 PHP,您需要首先启用 EPEL 存储库。

$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  [RHEL 9]
$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 8]

接下来,启用 Remi 存储库,它在基于 RHEL 的系统上提供最新版本的 PHP。

$ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm  [RHEL 8]
$ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm  [RHEL 8]

在系统上启用 EPEL 和 Remi 存储库后,您可以如图所示安装 PHP。

# dnf module list php
# dnf module enable php:remi-8.0 -y 
# dnf install php php-cli php-common

安装所有组件后,您现在可以使用 WordPress CMS 构建网站,该软件使用户可以轻松开发和管理网站,而无需了解 HTML、CSS、PHP 和 Javascript 等网页设计语言。

WordPress 建站

为了进行演示,我们将在 Debian 11 和 RHEL 9 系统上安装 WordPress,这将提供一个示例网站,可以根据您的喜好进一步定制。

本节假设您已经安装了 LAMP 堆栈。

1. 安装附加 PHP 模块

要继续,请安装 WordPress 所需的其他 PHP 模块,如图所示。

要在基于 Debian 的系统上安装 PHP 模块:

$ sudo apt install php libapache2-mod-php php-pear php-cgi php-common php-mbstring php-zip php-net-socket php-gd php-mysql php-bcmath

要在基于 RHEL 的系统上安装 PHP 模块:

# dnf install php-gd php-soap php-intl php-mysqlnd php-pdo php-bcmath php-curl php-zip php-xmlrpc wget

2. 为 WordPress 创建数据库

WordPress 用 PHP 编写,是一个数据驱动的、免费的开源内容管理系统。数据库是 WordPress 的重要组成部分。

该数据库用于存储所有博客文章、页面、类别、评论、主题、插件以及 WordPress 配置文件。

要为 WordPress 创建数据库,请登录 MariaDB 数据库服务器:

$ sudo mysql -u root -p

接下来,创建数据库,如图所示

CREATE DATABASE wordpress_db;

接下来,创建一个数据库用户并将数据库上的所有权限分配给该用户。

GRANT ALL PRIVILEGES ON wordpress_db.* to wordpress_user@localhost identified by 'P@ssword321';

然后最后重新加载授权表以保存所做的更改并退出数据库。

FLUSH PRIVILEGES;
QUIT;

3. 下载WordPress

数据库就位后,继续使用 wget 命令下载最新的 WordPress tarball 文件。

$ wget https://wordpress.org/latest.tar.gz

下载后,使用 tar 命令解压缩压缩文件。

$ tar -xvzf latest.tar.gz

该命令将文件的内容提取到名为 wordpress 的文件夹中。将文件夹移动或复制到 Apache Web 服务器的文档根目录中。

$ sudo mv wordpress/ /var/www/html/

接下来,分配以下权限和所有权。

$ sudo chmod 755 -R /var/www/html/wordpress/
$ sudo chown -R www-data:www-data /var/www/html/wordpress/

4. 为 WordPress 创建 Apache 虚拟主机

术语虚拟主机是指在单个服务器上托管多个网站的做法。如果您打算在一台服务器上托管多个网站,则需要为每个网站创建一个虚拟主机。

在这种情况下,您需要为 WordPress 网站创建虚拟主机,如下所示。

$ sudo nano /etc/apache2/sites-available/wordpress.conf  [On Debian]
# vi /etc/httpd/conf/httpd.conf [On RHEL]

粘贴以下代码行来定义虚拟主机。对于 ServerName 指令,提供服务器的 IP 地址或完全限定域名,它应指向专用公共 IP 地址。

<VirtualHost *:80>
     ServerAdmin admin@your_domain.com
     DocumentRoot /var/www/html/wordpress
     ServerName 192.168.0.100

     <Directory /var/www/html/wordpress>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/your-domain.com_error.log
     CustomLog ${APACHE_LOG_DIR}/your-domain.com_access.log combined

</VirtualHost>

保存更改并退出文件。

要连接到数据库,需要进行一些额外的修改。因此,导航到 wordpress 文件夹。

cd /var/www/html/wordpress/

接下来,使用 wp-config-sample.php 文件的内容更新 wp-config.php 文件。

$ cp wp-config-sample.php wp-config.php
$ sudo nano wp-config.php

接下来,使用数据库详细信息更新数据库名称、数据库用户名和密码指令。

接下来,在基于 Debian 的系统上启用新的 WordPress 站点,如下所示。

$ sudo ln -s /etc/apache2/sites-available/wordpress.conf /etc/apache2/sites-enabled/wordpress.conf
$ sudo a2ensite wordpress
$ sudo a2enmod rewrite
$ sudo a2dissite 000-default

要使更改生效,请重新启动 Apache。

$ sudo systemctl restart apache2   [On Debian]
# systemctl restart httpd  [On RHEL]

5. 在浏览器上完成 WordPress 设置

要完成设置,请浏览 Web 服务器的 IP 地址,如下所示:

http://server-ip

您应该会看到 WordPress 欢迎页面,如图所示。选择您的首选语言,然后单击“继续”。

alt

接下来,填写站点详细信息。

alt

然后单击“安装 WordPress”以完成 WordPress 设置。

alt

如果一切顺利,您将收到安装成功的确认信息。要登录,请单击“登录”按钮。

alt

如您所见,这将引导您进入 WordPress 仪表板。此时,您可以尝试使用各种主题来增强示例网站的外观。

alt

6. 使用端口转发访问 WordPress

由于您是通过家里的 Linux 系统或局域网 (LAN) 自托管 Web 服务器,因此下一步是让外部用户或 LAN(局域网)之外的用户可以访问它。这就是端口转发的用武之地。

端口转发,也称为端口映射,是一种允许外部设备通过 Internet 访问专用网络内的服务器或资源的技术。整个想法是从外部访问专用网络,否则这是不可能的,因为外部设备无法与内部 IP 地址通信。

在您的设置中,您需要转发 Web 服务器正在侦听的端口(在大多数情况下,对于 HTTP 流量是端口 80,对于 HTTPS 是端口 443)以及 Web 服务器的静态专用 IP 地址。

因此,登录您的路由器并前往端口转发部分。在我们的示例中,我们使用 DLink 路由器将 Web 服务器的端口(80 和 443)和私有 IP (192.168.0.100) 端口转发到 ISP 分配的专用 IP 公共 IP。

根据您的情况,指定 Web 服务器的端口和专用 IP 并保存更改。

alt

要保存更改,您可能需要重新启动路由器。所以,继续做吧。

正确执行端口转发后,您现在可以通过公共 IP 地址访问网络外部的 Web 服务器。

总结

在本指南中,我们演示了如何在 Linux 机器上使用 Apache 自行托管 Web 服务器。欢迎您对本指南提供反馈。

Reference

[1]

Source: https://www.tecmint.com/host-website-locally/

本文由 mdnice 多平台发布

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

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

相关文章

【算法集训之线性表篇】Day 03

文章目录 题目一思路分析代码实现效果 题目一 从有序顺序表中删除其值在给定值s和t之间(要求s<t)的所有元素&#xff0c;若s或t不合理或者线性表为空&#xff0c;则显示错误信息并退出运行。 思路分析 首先&#xff0c;题目给出数据结构为有序顺序表&#xff0c;故要查找…

B站创建视频分集播放列表

上传视频在B站上创建视频分集列表方法 上传时创建分集列表 1、打开B站 2、登录B站后&#xff0c;点击投稿上传视频。 3、上传视频或把视频直接拖拽到页面里&#xff1b; 4、点击上传第一个视频后页面下会出现一个号的按钮&#xff0c;点击继续上传 &#xff0c;上传视频就…

【Python】Selenium操作cookie实现免登录

文章目录 一、查看浏览器cookie二、获取cookie基本操作三、获取cookie并实现免登录四、封装成函数 一、查看浏览器cookie cookie、session、token的区别&#xff1a; cookie存储在浏览器本地客户端&#xff0c;发送的请求携带cookie时可以实现登录操作。session存放在服务器。…

MybatisPlus逆向生成实体类等

面试中遇到的一道机操题&#xff0c;so simple。 这是里SpringBoot项目&#xff0c;注意你的数据表中只有一个id字段是会生成失败的&#xff01; 添加maven依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter…

虚幻引擎程序化资源生成框架PCG 之 UPCGBlueprintElement源码笔记

UPCGBlueprintElement是PCGGraph中自定义节点的基类&#xff0c;但官方目前还没有给出详细的文档&#xff0c;所以从源代码里找点答案。 文章目录 可覆盖函数&#xff08;Override Functions&#xff09;Excute 和 Excute with ContextLoop Body函数和Loop函数Point Loop Body和…

SpringBoot+ Vue 家乡美食系统

&#x1f495;&#x1f495;作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&…

[期末网页作业]-精仿华为官网10个网页(html+css+js)

经过漫长的期末考试季节&#xff0c;我成功地完成了一个华为官网的仿写项目&#xff0c;并且非常高兴地与大家分享。这个项目包含了10个页面&#xff0c;每一个页面都经过了精心的设计和努力的填充。 首先&#xff0c;我注重了页面的整体布局与设计。借鉴了华为官网的风格&…

Unity3d-UGUI实现的贪食蛇小游戏

按鼠标WASD键来控制蛇的走向。 核心的代码如下&#xff1a; using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI;/// 《UGUI贪吃蛇》public class TCS2d : MonoBehaviour {public bool isOver false;public bool isStop…

【Docker 部署Minio】

Docker 部署Minio 一、拉取Minio镜像二、配置1、创建如下目录2、创建容器并运行 三、访问 一、拉取Minio镜像 访问Docker Hub镜像站找到自己需要的Minio镜像 运行以下命令 sudo docker pull minio/minio二、配置 1、创建如下目录 mkdir -p /home/zx/minio/config mkdir -p…

Java设计模式之一:建造者模式

目录 一、什么是建造者模式 二、建造者模式如何使用 三、建造者模式的优势和应用场景 一、什么是建造者模式 Java建造者模式是一种创建对象的设计模式&#xff0c;它通过将对象的构造过程分离出来&#xff0c;使得同样的构建过程可以创建不同的表示。建造者模式适用于创建复…

在前端页面正确展示后端返回的验证码图片

前言&#xff1a; 在开发登录界面时&#xff0c;通过接口请求验证码&#xff1b;后端给返回的格式是Blob&#xff0c;直接用src引用没办法显示。 在控制台输入结果是&#xff1a; 第一想法就是通过 window.URL.createObjectURL(new Blob([res.data],{type:image/png}))转换成u…

【底部消息红点提示】uniapp开发小程序时,使用uni.setTabBarBadge设置底部菜单的红点

一、实现的效果 功能描述&#xff1a;无论点击底部的哪个菜单栏&#xff0c;都可以看到第二个菜单栏下显示的红点通知。 如果只在人脉当前页面设置的话&#xff0c;当你在第二个菜单栏的页面中调用uni.setTabBarBadge方法设置红点后&#xff0c;切换到第一个菜单栏的页面时&am…

力扣 332. 重新安排行程

题目来源&#xff1a;https://leetcode.cn/problems/reconstruct-itinerary/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a; 这道题目有几个难点&#xff1a; 一个行程中&#xff0c;如果航班处理不好容易变成一个圈&#xff0c;成为死循环。解决&am…

【论文基本功】【LaTeX】附录【IEEE论文】

注意&#xff1a;本博客使用的所有命令都需要以使用 IEEEtran 文档类为前提&#xff0c;即 tex 文件的第一行中的必须是 \documentclass[可选参数]{IEEEtran}&#xff08;可选参数部分可以自由选择&#xff0c;如 \documentclass[10pt,journal,compsoc]{IEEEtran}。&#xff09…

C++primer(第五版)第十三章(拷贝控制)

一个类通过定义五种特殊的成员函数来控制这些操作: 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 13.1拷贝,赋值与销毁 13.1.1拷贝构造函数 如果一个构造函数的第一个参数是自身类型的引用(必须是引用类型!),并且没有其他参数或是其他参数都有默认值(即…

基于matlab检测使用校准的立体摄像头拍摄的视频中的人物并确定其与摄像头的距离(附源码)

一、前言 此示例演示如何检测使用校准的立体摄像头拍摄的视频中的人物&#xff0c;并确定他们与摄像头的距离。 二、加载立体摄像机的参数 加载对象&#xff0c;这是使用应用程序或函数校准相机的结果。 三、创建视频文件阅读器和视频播放器 创建用于读取和显示视频的系统对…

LabVIEW开发X射线图像增强

LabVIEW开发X射线图像增强 X射线图像在临床诊断中起着重要作用。但是&#xff0c;由于各种原因&#xff0c;例如不均匀&#xff0c;低照度条件和一些噪点&#xff0c;图像质量通常不是很好。因此有必要增强这些图像&#xff0c;以方便后续处理或诊断。模糊集论是开发图像处理中…

C# Color的名称对应该工具

工具效果如下图&#xff1a; 代码&#xff1a; namespace WinFormsColor {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void displayColor(){Control listControl this.Controls["listView_Color"];if (listControl ! null)…

mysql的一些练习题

1. 第1题 mysql> create database Market charset utf8; Query OK, 1 row affected (0.01 sec)第二题 mysql> use Market Database changed mysql> mysql> create table customers(-> c_num int(11) primary key auto_increment,-> c_name varchar(50),-&…

【自动化测试】

一、自动化测试定义 首先来说一下什么是软件测试&#xff1f; 软件测试简单来说就是在规定的条件下对程序进行操作以发现程序错误&#xff0c;衡量软件质量&#xff0c;并对其是否能满足设计要求进行评估的过程。 那么什么是自动化测试呢? 自动化测试是把以人为驱动的测试…