Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

其实一般情况下, Apache 和 NGINX 安装一个就好了……总之,这一篇只是我自己的一种记录,请千万不要照着这一篇去做。

Apache 和 NGINX 对比

根据NGINX vs Apache – Choosing the Best Web Server in 2022ApacheNGINX 的优缺点主要为:

  • Apache 一次处理一个连接请求,NGINX 可以同时处理多个连接请求。
  • NGINX 提供静态内容更快,但是需要另外的软件帮助处理动态内容,而 Apache 可以自己提供动态内容。
  • Apache 提供 .htaccess 文件,可以在不更改主服务器设置,就能改变网站的设置。

性能最好的方法是:把 NGINX 作为反向代理,放在 Apache 前面。

所以,我将先后安装 ApacheNGINX

安装和配置 Apache

在安装NGINX之前,需要先安装并配置好Apache。

很可能你的 VPS 已经安装了 Apache,输入下列命令可以检查是否存在 Apache

sudo systemctl status apache2

显示 VPS 没有安装 Apache

image-20220331204125554

自己安装 Apache

sudo apt install apache2

image-20220331204333918

如果 VPS 之前有防火墙,需要为 Apache 新建立一条 rule:

sudo ufw allow “Apache Full”

再次检查 Apache 是否存在:

sudo systemctl status apache2

image-20220331205813262

输入 q 离开上面的页面

最后,打开一个自己电脑上的浏览器,输入 VPS 的 IP 地址,如果出现下面的页面,就是 Apache 运行好了。

image-20220331205630378

安装 MySQL

sudo apt-get install mysql-server

安装过程中,会要求设置 root user 的密码,不要让密码为空白。

如果没有提示设置 root 密码,可以输入

mysql_secure_installation

进行初始密码的设定

检查 MySQL 服务的状态:

sudo systemctl status mysql

如果 MySQL 工作正常,会输出:

image-20220331211011132

输入 q 离开上面的页面

安装PHP

可能需要安装 nano 文本编辑器:

sudo apt-get install nano

检查 packet 更新:

sudo apt-get upgrade

安装 PHP

sudo apt-get install php

测试 PHP 运行状态:

​ 简单的方法是,输入:php -v

​ 复杂一点的方法是:

/var/www/html 目录下,新建一个 test.php,并用 nano 打开。这个目录被称为 webroot,是 Apache 查找网页的缺省位置(如果没有被设置从哪里找的话)。

sudo nano /var/www/html/test.php

在新建的文件中,输入之后,按 CTRL + XY 保存后 ENTER 离开。

<?php
phpinfo();
?>

打开浏览器,输入网址来测试 PHP

http://<your_vps_ip_adress>/test.php

移除测试文件(一定要移除,否则有安全风险)

sudo rm /var/www/html/test.php

Ubuntu release 版本升级

就是突然想升个级

sudo apt update
sudo apt upgrade
sudo do-release-upgrade

中间某部分输出:

image-20220401111409746

参考官网文档:Upgrading|Ubuntu

更新好了,允许 reboot 后重新连接,显示:

image-20220401112506423

安装和配置 NGINX

安装 NGINX

sudo apt-get update
sudo apt-get install nginx

为 NGINX 配置 Apache

sudo nano(我觉得vim太难用了,可以的话我还要记得删除vim的包)

sudo nano /etc/apache2/ports.conf

在第 5 行,把端口号 80 改为 8080.

Listen 8080

8000 和 8080 都是 HTTP 协议的备用端口号

/etc/apache2/sites-available/ 目录下,创建文件 000-default.conf001-default.conf

sudo nano /etc/apache2/sites-available/000-default.conf

确保在 000-default.conf001-default.conf 文件中,配置如下:(把端口改为 8080

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Save the file and activate the new configuration file:

sudo a2ensite 001-default

Then reload Apache:

sudo systemctl reload apache2

Install the net-tools package which contains the netstat command:

sudo apt install net-tools

Verify that Apache is now listening on 8080:

sudo netstat -tlpn

The output should look like the following example, with apache2 listening on 8080:

OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address     Foreign Address      State    PID/Program name
tcp        0      0 0.0.0.0:22        0.0.0.0:*            LISTEN   1086/sshd
tcp6       0      0 :::8080           :::*                 LISTEN   4678/apache2
tcp6       0      0 :::22             :::*                 LISTEN   1086/sshd

image-20220408214104980

Once you verify that Apache is listening on the correct port, you can configure support for PHP and FastCGI.

设置完成后,按照上面 PHP 安装时候,检查是否正确的方法,查看浏览器网页:

<ip 地址>:8080/info.php

为 Apache 配置 NGINX

关闭 default 的虚拟主机(visual host)

sudo unlink /etc/nginx/sites-enabled/default

打开:

sudo nano /etc/nginx/nginx.conf

Enable gzip and proxying.

创建新文件:

sudo nano /etc/nginx/sites-available/reverse.conf

复制下列配置:

注意:You could try the following two commands to paste from the clipboard. Both of them should work.

  1. Ctrl+Shift+v
  2. Shift+Insert

The Ctrl+U command only allows pasting text that was copied or cut from within nano itself, hence the reason the command is not working.

server {
    listen 80 default_server;
    index index.php index.html index.htm;
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

保存并离开 nano,然后开启虚拟主机配置:

sudo ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/

测试 NGINX

sudo nginx -t

image-20220401214639290

也可以用这个命令:

sudo service nginx configtest

image-20220401215005520

重启 NGINX:

sudo systemctl restart nginx

现在,在浏览器中输入 VPS 的 IP 地址,会被反向代理到 Apache 的页面。


参考资料

[1] What Is Apache? An In-Depth Overview of Apache Web Server

[2] How to Install Laravel on Ubuntu 18.04 with Apache

[3] How to Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04

[4] How to Install PHP on Any Server (Linux, macOS, Windows)

[5] How to set up and login as root user in MySQL

[6] Upgrading|Ubuntu

[7] How to Set Up an Nginx Reverse Proxy

[8] How to Set Up Nginx as a Reverse Proxy For Apache on Debian 11

[9] How to Use Nginx to Redirect

评论