Quanrk N初识镜像实际已经安装了Nginx,所以我们采用Nginx+MySQL+PHP的方式。
安装MySQL以管理站点数据
sudo apt-get install mysql-server
系统将要求您输入root(管理)密码,以便在MySQL系统中使用。请记住此处输入的密码。
安装PHP进行处理
WordPress新版(当前为5.6)已经推荐采用php7.4,但是ubuntu16.04默认源中没有。我们先添加php7.4的源:
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
源里面已经包含php8.0版本,但是当前wordpress插件支持不好,我们安装php7.4版本
sudo apt-get install php7.4-fpm php7.4-mysql
配置PHP处理器
我们现在已经安装了PHP组件,但是我们需要进行轻微的配置更改以使我们的设置更安全。
php-fpm使用root权限打开主配置文件:
sudo vim /etc/php/7.4/fpm/php.ini
在文件中寻找的是设置的参数cgi.fix_pathinfo,将前面的注释; 去掉,然后将默认设置“1”修改为”0″。
cgi.fix_pathinfo=0
修改这里是因为这是一个非常不安全的设置,因为它告诉PHP尝试执行它找不到所请求的PHP文件时可以找到的最接近的文件。这基本上允许用户执行不应该被允许执行的脚本的方式来创建PHP请求。
重启PHP处理
sudo systemctl restart php7.4-fpm
配置Nginx以使用PHP处理器
执行以下命令
sudo vim /etc/nginx/sites-available/default
首先,我们需要添加index.php作为index指令的第一个值,以便index.php在请求目录时可用。
我们可以修改server_name指令以指向我们服务器的域名或公共IP地址。
对于实际的PHP处理,我们只需要删除PHP部分前面的注释井号(#)来取消注释,以便启用处理PHP请求的文件段。
再将.htaccess部分取消注释
默认配置最终更改成如下:
server {
listen 80 default_server;
listen [::]:80 default_server;root /var/www/html;
#这一行中添加了index.php
index index.php index.html index.htm index.nginx-debian.html;#此处修改你的域名,如果没有则不需要修改源文件
server_name server_domain_or_IP;location / {
try_files $uri $uri/ =404;
}#以下所有内容需要添加
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}location ~ /\.ht {
deny all;
}
#以上所有内容需要添加
}
完成上述更改后,您可以保存并关闭该文件。
检查ng的语法错误
sudo nginx -t
如果没有问题重启Nginx
sudo systemctl reload nginx
创建PHP文件以测试配置(可跳过此步)
测试Nginx是否可以正确地将.php文件传递给我们的PHP处理器。
我们可以通过在文档根目录中创建测试PHP文件来完成此操作。info.php在文本编辑器中打开文档根目录中调用的新文件:
sudo vim /var/www/html/info.php
以下为内容
<?php
phpinfo();
完成后,保存并关闭文件。
现在,您可以通过访问 服务器ip/info.php, 查看Php是否正常运行和php相关信息
现在配置WordPress相关
为WordPress创建MySQL数据库和用户
WordPress使用MySQL来管理和存储站点和用户信息。我们已经安装了MySQL,但是我们需要为WordPress创建一个数据库和用户。
MySQL登录:
mysql -u root -p
输入安装mysql时候的密码
首先,我们可以创建一个WordPress可以控制的独立数据库。你可以随意调用它,但我们将wordpress在本指南中使用它来保持简单。您可以通过键入以下命令为WordPress创建数据库:
#其中wordpress只是为数据库名称,可以随意修改
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
我们将创建此帐户,设置密码并授予对我们创建的数据库的访问权限。我们可以通过输入以下命令来完成此操作。
#其中wordpress为数据库名称,wordpressuser为创建的用户的名称,password为创建的用户的密码
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
刷新权限,以便MySQL的当前实例知道我们最近做出的更改:
FLUSH PRIVILEGES;
退出
EXIT;
调整Nginx的配置以正确处理WordPress
使用以下sudo权限打开默认服务器块文件:
sudo vim /etc/nginx/sites-available/default
在主server块中,我们需要添加几个location块。
server {
. . .
#以下为需要添加的location
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
. . .
}
调整try_files列表,以便不是将404错误作为默认选项返回,而是index.php使用请求参数将控制传递给文件。
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}
完成后,保存并关闭文件。
检查Nginx语法
sudo nginx -t
重启
sudo systemctl reload nginx
安装其他PHP扩展
WordPress及其许多插件需要一些额外的PHP扩展。
我们可以通过输入以下命令下载并安装一些最流行的PHP扩展以与WordPress一起使用:
sudo apt-get update
sudo apt-get install php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-imagick php7.4-zip
重启PHP
sudo systemctl restart php7.4-fpm
下载WordPress
通过你自己的方式下载并解压wordpress的文件,并复制根目录下wp-config-sample.php为 wp-config.php
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
配置WordPress目录
我们需要完成的一件大事是建立合理的文件权限和所有权。我们需要能够以普通用户的身份写入这些文件,并且我们需要Web服务器也能够访问和调整某些文件和目录才能正常运行。
我们首先将文档根目录中的所有文件的所有权分配给用户名。我们将root在本指南中使用我们的用户名,但您应该更改此选项以匹配您的sudo用户调用。我们会将群组所有权分配给www-data群组:
sudo chown -R root:www-data /var/www/html
配置setgit位
sudo find /var/www/html -type d -exec chmod g+s {} \;
为wp-content目录提供组写访问权限,以便Web界面可以进行主题和插件更改:
sudo chmod g+w /var/www/html/wp-content
为Web服务器提供对这两个目录中所有内容的写访问权限:
sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins
这只是一个合理的权限设置开始,一些插件可能需要单独配置。
设置WordPress配置文件
现在,我们需要对主WordPress配置文件进行一些更改。
vim /var/www/html/wp-config.php
数据库连接设置下方或文件中的任何其他位置添加此设置:
. . .
/** MySQL database name */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
define('FS_METHOD', 'direct');
完成后保存并关闭文件。
浏览器中访问你的服务器地址完成配置。
到此处wordpress部署成功。