首先安装Linux,Nginx,MySQL,PHP(LEMP堆栈)
第一步:安装Nginx
sudo apt-get update
sudo apt-get install nginx
此时访问你的服务器地址应该会出现这个画面
第二步:安装MySQL以管理站点数据
安装
sudo apt-get install mysql-server
系统将要求您提供root(管理)密码,以便在MySQL系统中使用。
第3步:安装PHP进行处理
因为ubuntu16.04只支持php7,所以安装php7
sudo apt-get install php-fpm php-mysql
配置PHP处理器
我们现在已经安装了PHP组件,但是我们需要进行轻微的配置更改以使我们的设置更安全。
php-fpm使用root权限打开主配置文件:
sudo vim /etc/php/7.0/fpm/php.ini
在文件中寻找的是设置的参数cgi.fix_pathinfo。这将用分号(;)注释掉,默认设置为“1”。
这是一个非常不安全的设置,因为它告诉PHP尝试执行它找不到所请求的PHP文件时可以找到的最接近的文件。这基本上允许用户以允许他们执行不应该被允许执行的脚本的方式来创建PHP请求。
我们将通过取消注释该行并将其设置为“0”来更改这两个条件,如下所示:
在vim中可以使用/后面接内容进行查找
cgi.fix_pathinfo=0
重启PHP处理
sudo systemctl restart php7.0-fpm
第4步:配置Nginx以使用PHP处理器
执行以下命令
sudo vim /etc/nginx/sites-available/default
Nginx默认服务器块文件如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
对当前文件进行几点更改:
- 首先,我们需要添加index.php作为index指令的第一个值,以便index.php在请求目录时提供命名的文件(如果可用)。
- 我们可以修改server_name指令以指向我们服务器的域名或公共IP地址。
- 对于实际的PHP处理,我们只需要通过从每行前面删除井号(#)来取消注释处理PHP请求的文件段。这将是location
~.php$位置块,包含的fastcgi-php.conf代码段和与之关联的套接字php-fpm。 - 我们还将.htaccess使用相同的方法取消注释处理文件的位置块。Nginx不处理这些文件。如果这些文件中的任何一个恰好进入文档根目录,则不应向访问者提供这些文件。
更改在中标记的文本:
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
第5步:创建PHP文件以测试配置
测试Nginx是否可以正确地将.php文件传递给我们的PHP处理器。
我们可以通过在文档根目录中创建测试PHP文件来完成此操作。info.php在文本编辑器中打开文档根目录中调用的新文件:
sudo vim /var/www/html/info.php
以下为内容
phpinfo();
完成后,保存并关闭文件。
现在,您可以通过访问
服务器ip/info.php:
可以看到该网页
如果您看到一个看起来像这样的页面,那么您已成功使用Nginx设置PHP处理。
现在,用以下命令删除文件: (当然不删除也不会有什么问题)
sudo rm /var/www/html/info.php
现在配置WordPress相关
第1步:为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;
第2步:调整Nginx的配置以正确处理WordPress
使用以下sudo权限打开默认服务器块文件:
sudo vim /etc/nginx/sites-available/default
在主server块中,我们需要添加几个location块。
通过创建要求精确匹配的位置开始块/favicon.ico和/robots.txt,这两个我们不希望记录的请求。
我们将使用正则表达式位置来匹配任何静态文件请求。我们将再次关闭这些请求的日志记录,并将它们标记为高度可缓存,因为这些通常是昂贵的服务资源。您可以调整此静态文件列表以包含您的站点可能使用的任何其他文件扩展名:
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
第3步:安装其他PHP扩展
在设置LEMP堆栈时,我们只需要一组非常小的扩展,以便让PHP与MySQL通信。WordPress及其许多插件利用了额外的PHP扩展。
我们可以通过输入以下命令下载并安装一些最流行的PHP扩展以与WordPress一起使用:
sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc
重启PHP
sudo systemctl restart php7.0-fpm
第4步:下载WordPress
ps:以下步骤用于配置权限问题,也可以直接将wordpress放到/var/www/html目录下赋予权限即可
现在我们的服务器软件已经配置好了,我们可以下载并设置WordPress。出于安全原因,我们始终建议从其站点获取最新版本的WordPress。
转换为可写目录,然后键入以下命令下载压缩版本:
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
解压
tar xzvf latest.tar.gz
我们将暂时将这些文件移动到我们的文档根目录中。在我们这样做之前,我们可以将示例配置文件复制到WordPress实际读取的文件名:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
我们还可以创建upgrade目录,以便WordPress在更新其软件后尝试自行执行此操作时不会遇到权限问题:
mkdir /tmp/wordpress/wp-content/upgrade
现在,我们可以将目录的全部内容复制到我们的文档根目录中。我们使用该-a标志来确保维护我们的权限。我们在源目录的末尾使用一个点来表示应该复制目录中的所有内容,包括任何隐藏文件:
sudo cp -a /tmp/wordpress/. /var/www/html
第5步:配置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');
完成后保存并关闭文件。
第6步:通过Web界面完成安装
进入你的服务器地址进行配置。
注意事项:升级wordpress
更新的时候由于权限问题可能无法更新。
此时需要重新赋权:
sudo chown -R www-data /var/www/html
完成后,再次锁定权限以确保安全性:
sudo chown -R root /var/www/html
建议仅在升级时才设置此权限。