准备工作
已在实例所属的安全组的入方向添加安全组规格并放行22、80、443端口。
- 关闭系统内部防火墙。
1
sudo ufw disable
安装 Nginx
- 运行以下命令,更新Ubuntu系统内的软件包。
1
sudo apt-get update
- 运行以下命令,安装Nginx。
1
sudo apt-get install nginx
- 运行以下命令,查看Nginx版本。
1
sudo nginx -v
安装 PHP
- 运行以下命令,安装PHP
1
sudo apt-get install php-fpm
- 运行以下命令,查看PHP版本。
1
sudo php -v
返回结果如下所示,查看到PHP版本为7.4.3。同时也表示PHP已成功安装。
1 2 3 4
PHP 7.4.3 (cli) (built: Nov 25 2021 23:16:22) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
配置 Nginx
- 打开Nginx默认的配置文件
1
sudo vim /etc/nginx/sites-enabled/default
- 在
server{}
内,找到index
开头的配置行,在该行中添加index.php
。1 2
# Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html;
- 在
server{}
内找到location ~ \.php$ {}
,去除以下配置行的注释符号。1 2 3 4 5 6 7 8
location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
- 保存并退出文件.
- 在
- 运行以下命令,重启Nginx服务。
1
sudo systemctl restart nginx.service
配置 PHP
- 运行以下命令,在Nginx网站根目录中,新建phpinfo.php文件。
1
sudo vim /var/www/html/phpinfo.php
- 按
i
进入编辑模式,添加以下配置信息。 phpinfo()函数会展示PHP的所有配置信息。1 2 3
<?php echo phpinfo(); ?>
- 保存并退出文件. 运行以下命令,启动PHP.
1
sudo systemctl start php7.4-fpm
测试访问PHP配置信息页面
一切顺利可以通过公网ip访问网站了.
配置SSL
- 下载好申请的ssl证书(nginx),放至
/etc/nginx/ssl
- 编辑域名配置文件
1
vim /etc/nginx/sites-enabled/default
- 添加
443
端口1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
server { listen 443 ssl; server_name cloud.tencent.com; root /var/www/html; index index index.php index.html index.htm index.nginx-debian.html; #证书文件名称 ssl_certificate cloud.tencent.com_bundle.crt; #私钥文件名称 ssl_certificate_key cloud.tencent.com.key; ssl_session_timeout 5m; #请按照以下协议配置 ssl_protocols TLSv1.2 TLSv1.3; #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } }
- 检验编写是否有误
1
nginx -t
- 重启
nginx
1
nginx -s reload
HTTP 自动跳转 HTTPS 的安全配置
编辑域名配置文件
1
vim /etc/nginx/sites-enabled/default
再添加一个 server
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 443 ssl;
server_name cloud.tencent.com;
root /var/www/html;
index index index.php index.html index.htm index.nginx-debian.html;
#证书文件名称
ssl_certificate cloud.tencent.com_bundle.crt;
#私钥文件名称
ssl_certificate_key cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
server {
listen 80;
#填写绑定证书的域名
server_name cloud.tencent.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
- 检验编写是否有误
1
nginx -t
- 重启
nginx
1
nginx -s reload
修改php-fpm和nginx运行用户
nginx和php-fpm是www-data用户运行, 想要修改为 www 用户运行
修改Nginx
1
2
cd /etc/nginx
sudo vim nginx.conf
- 头部是这样
1 2 3 4
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;
- 修改为
1 2 3 4
user www; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;
- 重启nginx
1
sudo service nginx restart
修改php-fpm
1
2
cd /etc/php/7.4/fpm/pool.d/
sudo vi www.conf
- 找到
1
www-data
- 都改为
www
应该有4个地方1
www
- 修改一下文件的权限
1 2
cd /run/php/ ls -al
- 这个目录下面有两个文件
- php7.4-fpm.pid和php7.4-fpm.sock
- 修改这两个文件的权限
1 2
sudo chown www:www php7.4-fpm.pid sudo chown www:www php7.4-fpm.sock
重启php-fpm
1
sudo service php7.4-fpm restart