ubuntu
Windows&Linux下设置ngrok开机自启动
Deno 1.0
解决:关于docker闪退的问题
Windows 上的 Docker 引擎
文档管理 - 个人中心
Windows 10 安装 MySQL 8.0 指南
给Django添加Google Adsense 要求的ads.txt
docker命令
如何回滚WordPress插件(初学者版本控制) | ItBook
在Ubuntu 18.04上安装PHP 7.4
docker命令行
在PHP 7.3,Nginx,Apache,使用加密SSL,Cloud SQL(MySQL 5.7)的Google Cloud Platform上,将具有Nginx反向代理的WordPress安装到Ubuntu 18.04的Apache到Apache。
How to install mcrypt PHP module on Ubuntu 18.04 Linux
DjangoCMS手动安装
搭建Git服务器
Ubuntu Server 18.04 LTS 开机自动启动脚本 SVN自动启动 rc.local
通过禁用信号进行更快的DJANGO测试
gitBook的发布流程
ubuntu 18.04 怎么设置字体样式,调整字体大小
iptables过滤URL目标请求的小技巧
rsync复制文件的一些注意事项
如何设置crontab的时区?
本文档使用 MrDoc 发布
-
+
home page
在PHP 7.3,Nginx,Apache,使用加密SSL,Cloud SQL(MySQL 5.7)的Google Cloud Platform上,将具有Nginx反向代理的WordPress安装到Ubuntu 18.04的Apache到Apache。
我们已经介绍了如何使用Nginx和Apache安装和设置WordPress。在本指南中,您将学习如何使用两个最受欢迎的Web服务器Nginx和Apache来设置WordPress。 ![](/media//202005/wordpress-with-nginx-apache-1024x576_1590880320.jpg) 通过这种方法,您将获得Apache和Nginx对于快速加载网站的好处。 #先决条件 1、您的Compute Engine实例正在运行。 2、有关设置Compute Engine的信息,请参阅“ 设置Compute Engine实例”。 3、Google Cloud上的初始服务器设置。 4、设置Cloud DNS,请参阅“ 为您的域设置Google Cloud DNS”。 5、Google Cloud SQL安装程序,请参阅Setup Cloud SQL并与Compute Engine连接。 #安装Apache 一旦您的VM实例启动并运行并且服务器设置完成,就可以继续安装Apache。 sudo apt install apache2 现在,您需要将Apache配置为侦听其他端口,因为Nginx将放置在侦听HTTP和HTTPS流量的Apache的前面。 #在其他端口上配置Apache 现在,您可以配置Apache以监听port 8081。要配置此端口,您需要在以下位置更改端口值ports.conf `sudo nano /etc/apache2/ports.conf` 将端口更改为8081。这样,您将使端口看起来像这样 `listen 8081` 点击,Ctrl + X然后按Y和Enter保存并退出文件。 #安装Nginx 现在您可以安装Nginx了。 sudo apt install nginx 安装完成后,您可以使用以下命令检查两个Web服务器的状态。 ```bash sudo service apache2 status sudo service nginx status ``` 您应该看到两个服务器都处于活动状态并且正在运行。 #设置您的网站 您的网站将位于html目录中,并具有以下结构。 替换yourdomainname.com为您的原始 域名。 `/var/www/html -- yourdomainname.com ---- public ` 该public目录是您网站的根目录。继续创建这些目录。 `sudo mkdir -p /var/www/html/yourdomainname.com/public` #设置Apache虚拟主机 Apache侦听端口8081之后,您可以继续设置Apache虚拟主机。 首先删除默认虚拟主机。 `sudo a2dissite 000-default` 创建新配置。 `sudo nano /etc/apache2/sites-available/yourdomainname.conf` 将以下虚拟主机配置粘贴到文件中。 ```bash <VirtualHost *:8081> ServerName yourdomainname.com DocumentRoot /var/www/html/yourdomainname.com/public <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/html/yourdomainname.com/public> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Require all granted </Directory> </VirtualHost> ``` 点击,Ctrl + X然后按Y和Enter保存并退出文件。 启用新配置。 `sudo a2ensite yourdomainname.conf` 将您yourdomainname的替换为您在上面创建的文件的名称。 启用Apache重写模式。 `sudo a2enmod rewrite` 重新启动Apache。 `sudo systemctl restart apache2` #配置Nginx 如果启用了防火墙,请确保允许使用HTTP和HTTPS端口。 ```bash sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' ``` 接下来,打开Nginx配置文件,该文件位于 /etc/nginx/nginx.conf s`udo nano /etc/nginx/nginx.conf` 该worker_processes指令是CPU的内核数量的实例。就我而言,这是1。 取消注释multi_accept指令并将其设置为on。 将keepalive_timeout指令降低为15。 出于安全原因,您应该取消注释server_tokens指令,并确保将其设置为off。 在server_tokens下面添加新的client_max_body_size指令,并将其值设置为64m. 取消注释gzip_proxied指令并将其设置为any,取消注释gzip_comp_level指令并将其设置为的值,2最后取消注释gzip_types指令。 现在,您需要向Nginx配置添加一个包罗万象的块。 找到这行 include /etc/nginx/sites-enabled/*; 在此行下面添加以下内容 ```bash server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 444; } ``` 为了使Nginx正确地为PHP提供服务,您还需要确保fastcgi_param SCRIPT_FILENAME已设置指令,否则,在访问任何PHP脚本时都会收到空白屏幕。因此,通过发出此命令来打开fastcgi_params文件 sudo nano /etc/nginx/fastcgi_params 在文件末尾添加以下内容 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 这一切,这是基本的Nginx的配置,按住CTRL+X之后Y保存更改。 现在,您可以从Nginx中删除默认服务器块。 ```bash sudo rm /etc/nginx/sites-available/default sudo rm /etc/nginx/sites-enabled/default ``` 点击,CTRL+X然后Y保存更改,然后测试Nginx配置并重新启动Nginx。 #将Nginx设置为反向代理 一旦配置了Nginx,就可以通过创建新的服务器块来设置反向代理。 `sudo nano /etc/nginx/sites-available/yourdomainname.conf` 将以下配置粘贴到文件中。 ```bash server { listen [::]:80; listen 80; server_name www.yourdomainname.com; root /var/www/html/yourdomainname.com/public; index index.php; location / { try_files $uri @apache; } location ~ ^/\.user\.ini { deny all; } location ~* \.(svg|svgz)$ { types {} default_type image/svg+xml; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8081; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8081; } location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8081; } location ~/\. { deny all; access_log off; log_not_found off; } } ``` 点击,Ctrl + X然后按Y和Enter保存并退出文件。 启用配置。 `sudo ln -s /etc/nginx/sites-available/yourdomainname.conf /etc/nginx/sites-enabled/yourdomainname.conf ` 检查配置并重新启动Nginx。 ```bash sudo nginx -t sudo service nginx restart ``` 现在Nginx作为反向代理放置在Apache之前。 #安装和配置PHP `sudo apt install php7.2 libapache2-mod-php php7.2-common php7.2-mysql php7.2-xml php7.2-xmlrpc php7.2-curl php7.2-gd php7.2-imagick php7.2-cli php7.2-dev php7.2-imap php7.2-mbstring php7.2-opcache php7.2-soap php7.2-zip php7.2-redis php7.2-intl unzip -y` 通过编辑php.ini文件来修改PHP配置。 `sudo nano /etc/php/7.2/apache2/php.ini` 在编辑器中按F6键进行搜索并更新以下值 ```bash upload_max_filesize = 32M post_max_size = 48M memory_limit = 256M max_execution_time = 600 max_input_vars = 3000 max_input_time = 1000 ``` 点击CTRL+X和Y保存配置,并检查配置是否正确,然后重新启动Apache。 `sudo service apache2 restart` #下载WordPress 现在您的服务器软件已配置完毕,您可以下载并设置WordPress。 始终建议从其网站上获取最新版本的WordPress。 ```bash cd /var/www/html/yourdomainname.com/public curl -LO https://wordpress.org/latest.tar.gz ``` 此命令将下载最新版本,需要将其解压缩。 `tar xzvf Latest.tar.gz` 现在,您可以将目录的全部内容复制到我们的文档根目录中。 `sudo cp -a /var/www/html/yourdomainname.com/public/wordpress/. /var/www/html/yourdomainname.com/public` 接下来,通过删除wordpress文件夹和下载的tar文件来清理根目录。 ```bash sudo rm -r /var/www/html/yourdomainname.com/public/wordpress sudo rm -f /var/www/html/yourdomainname.com/public/latest.tar.gz ``` 为您的网站目录设置正确的权限 ```bash sudo chown -R www-data:www-data /var/www/html/yourdomainname.com/public sudo chmod -R 755 /var/www/html/yourdomainname.com/public ``` #安装免费 Let’s Encrypt SSLL证书 HTTPS HTTPS是用于服务器(实例)和客户端(Web浏览器)之间安全通信的协议。由于引入了Let's Encrypt(可提供免费的SSL证书),因此HTTPS被每个人所采用,并且也为您的受众提供了信任。 HTTP/2 HTTP / 2是HTTP协议的最新版本,可以显着改善网站的加载时间。确实没有理由不启用HTTP / 2,唯一的要求是站点必须使用HTTPS。 ```bash sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx ``` 现在,我们已经为Ubuntu 18.04安装了Let's Encrypt的Certbot,运行此命令以接收您的证书。 sudo certbot --nginx certonly 输入您的email并同意条款和条件,然后您将收到生成SSL证书所需的域列表。 要选择所有域,只需点击 Enter Certbot客户端将自动为您的域生成新证书。现在我们需要更新Nginx配置。 #在Nginx中使用www将HTTP流量重定向到HTTPS 打开您站点的Nginx配置文件,然后将所有内容替换为以下内容。用获取SSL证书时收到的文件路径替换文件路径。本ssl_certificate directive应该指向你的fullchain.pem文件,ssl_certificate_key指示应该指向你的privkey.pem文件。 ```bash server { listen [::]:80; listen 80; server_name yourdomainname.com www.yourdomainname.com; return 301 https://www.yourdomainname.com$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name yourdomainname.com; ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem; root /home/username/yourdomainname.com/public/; index index.html index.php; return 301 https://www.yourdomainname.com$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name www.yourdomainname.com; ssl_certificate /etc/letsencrypt/live/yourdomainname.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomainname.com/privkey.pem; root /var/www/html/yourdomainname.com/public; index index.php; location / { try_files $uri @apache; } location ~ ^/\.user\.ini { deny all; } location ~* \.(svg|svgz)$ { types {} default_type image/svg+xml; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8081; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8081; } location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8081; } location ~/\. { deny all; access_log off; log_not_found off; } } ``` 该http2值是启用HTTP / 2协议所需的全部。 现在,您已启用SSL强化,创建了内容安全策略,X-XSS-Protection,Clickjacking,MIME嗅探,引荐来源网址策略,访问控制允许来源。 通过关闭所有攻击区域,这些是Nginx的一些安全调整。 点击,CTRL+X然后Y保存更改。 检查您的配置,然后重新启动Nginx,以使更改生效。 ```bash sudo nginx -t sudo service nginx restart ``` #续订SSL证书 Let's Encrypt提供的证书仅有效期为90天, 因此您需要经常更新它们。现在,您设置了一个cronjob来检查将在未来30天内到期的证书,并自动对其进行续订。 sudo crontab -e 在文件末尾添加此行 0 0,12 * * * certbot renew >/dev/null 2>&10 0,12 * * * certbot renew >/dev/null 2>&1 点击CTRL+X然后Y保存更改。 此cronjob将尝试每天两次检查证书的续订。 #为反向代理配置WordPress 现在,您需要在WordPress中为反向代理配置WordPress以使用HTTPS,方法是在 wp-config.php 如果您不进行这些操作,您将最终陷入无尽的重定向循环。 `sudo nano ~/yourdomainname.com/public/wp-config.php` 将这些行添加到下面文件的顶部 <?php ```bash define('FORCE_SSL_ADMIN', true); if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on'; ``` 现在,您可以强制所有流量使用HTTPS。 #设置WordPress文件系统 安装完成后,我们需要设置WordPress用来写入文件系统的方法。由于我们已授予Web服务器写入所需位置的权限,因此我们可以将文件系统方法显式设置为“ direct”。如果不使用我们当前的设置进行设置,则当我们执行诸如WordPress更新,插件更新,文件上传等操作时,WordPress会提示您输入FTP凭据。可以将此设置添加到配置文件中的数据库连接设置下方。 找到该行define('DB_PASSWORD', 'password');并将下面的行粘贴到它下面。 `define('FS_METHOD', 'direct');` 点击Ctrl+X和Y保存您的配置文件。 #安装WordPress 现在,您可以进行著名的5分钟WordPress安装。 你会被提示输入你的database,user,password,和hostname。 输入数据库名称,我们在云SQL创建和用户与密码数据库分配的值。最后,输入Cloud SQL的IP地址作为主机名。 #总结 现在,您已经使用Nginx安装了WordPress作为Apache的反向代理,并安装了SSL证书并连接到Cloud SQL。 现在,您将获得具有Apache和Nginx优势的高性能WordPress安装。 tag: GOOGLE CLOUD PLATFORM, NGINX,WORDPRESS
老糊糊
May 31, 2020, 7:20 a.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password