本篇的LNMP是指 Linux(Debian) + Nginx + MariaDB + PHP 。
本篇搭建的环境为当前最新版:
Linux: Debian 9 (stretch) 4.9.0-5-amd64
Nginx: 1.13.12 MariaDB: 10.2.15 PHP: 7.2.5
本篇建立在购买 VPS 并使用 Xshell 连接上的基础上。
如若未曾购买 VPS ,请先阅读我的另一篇文章:VPS与域名
如若还未使用 Xshell 连接 VPS ,请阅读: Xshell登陆VPS
那么,当一切准备就绪,请欣赏我的表演吧,毕竟参加过补习班,是会比你们优秀的了。
注:以下全部语句皆在 root 用户下执行。
基本上国外的 VPS 创建的 Server 时区都不是中国的,所以首先要修改时区。
vim 命令打开root目录下的 .profile 文件:
vim .profile在末尾添加:
TZ='Asiz/Shanghai' export TZ
date
apt-get update apt-get upgrade安装:
apt-get install build-essential apt-transport-https software-properties-common lsb-release ca-certificates dirmngr
wget https://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key
echo -e "deb https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx" | tee /etc/apt/sources.list.d/nginx.list apt-get update
apt-get remove nginx-common apt-get install nginx
systemctl start nginx curl -I 127.0.0.1显示类似如下信息则表示Nginx正常运行:
HTTP/1.1 200 OK Server: nginx/1.13.12 Date: Thu, 31 May 2018 16:39:32 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT Connection: keep-alive ETag: "5acb8e45-264" Accept-Ranges: bytes
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list apt-get update
apt-get install php7.2安装完后会显示运行 Apache 服务失败,这是正常情况,因为我们先安装并运行了Nginx,Nginx占用了80端口,导致 Apache 服务运行失败。
apt-get install php7.2-fpm php7.2-cgi php7.2-curl php7.2-gd php7.2-xml php7.2-xmlrpc php7.2-mysql php7.2-bz2
apt-get install php7.2-bcmath php7.2-gmp php7.2-mbstring php7.2-readline php7.2-zip
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
echo -e "deb http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.2/debian $(lsb_release -sc) main\ndeb-src http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.2/debian $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/mariadb.list apt-get update
apt-get install mariadb-server mariadb-client安装过程中会要求设置数据库的root用户的密码,如下:
vim /etc/php/7.2/fpm/php.ini找到 cgi.fix_pathinfo 参数,改为:
cgi.fix_pathinfo=0亲,忘了 vim 的查找指令了吗?
/cgi.fix_pathinfo
vim /etc/php/7.2/fpm/pool.d/www.conf打开 www.conf 配置文件,找到 user 和 listen
vim /etc/nginx/nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }这里可以看到第一行的 user 为 nginx,跟 php 不一致,我们把它改成与 php 一致。 改为 www-data 。 除此之外,我们把 gzip 功能打开,把注释符号(#)去掉即可。你问我为什么要打开这个功能?前面装的 php gzip 扩展库不能白装啊,去掉注释再说。 修改好后如下:
user www-data; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; }
最后我们可以看到最后一行:
include /etc/nginx/conf.d/*.conf;
这说明 conf.d 文件夹里还有其他配置文件,我们去看看。
vim /etc/nginx/conf.d/default.conf
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
根据注释信息,我们把该去掉的注释都去掉,并修改 root 路径,以及修改 fpm 的本地端口监听为本地文件监听,即之前在 PHP 配置文件看到的 listen 的文件路径。
修改好后如下:
server { listen 80; server_name localhost; root /home/wordpress; #charset koi8-r; access_log /var/log/nginx/host.access.log main; location / { # root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { # root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { # root html; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
注意仔细比较,以免遗漏或改错,当然,我贴代码而不是放图片肯定是为了方便你复制粘贴啊,做人要机智点啊,兄dei。
最后输入 Nginx 配置文件语法检查命令来检查语法是否正确:
nginx -t
正确无误的话会显示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
最后我们重启一下 Nginx 服务:
systemctl restart nginx
可以看到,在配置文件中,我将 root 路径设置为 /home/wordpress 。因此,创建该文件夹,添加 PHP 测试文件,并修改用户与用户组为 www-data 。
cd /home mkdir wordpress echo -e "" | tee wordpress/index.php chown -R www-data.www-data wordpress/
打开IE,输入IP地址,如果页面显示 PHP 信息,则说明配置成功啦。如果提示了各种错误的话,请仔细检查配置文件哦。
执行以下命令进行初始化:
mysql_secure_installation
输入 MariaDB 的 root 用户的密码后,根据提示信息进行配置即可。
mysql -u root -p
输入密码,登陆。
创建一个用户:
create user 'user_wordpress'@'localhost' identified by '123456';
user_wordpress 可以改为你喜欢的用户名, 123456 则是该用户的密码。
创建一个数据库:
create database db_wordpress default charset utf8 collate utf8_general_ci;
db_wordpress 可以改为你喜欢的库名,utf8 和 utf8_general_ci 是为了设置该数据库使用的字符集。
给 user_wordpress 用户添加库 db_wordpress 的操作权限:
grant all privileges on db_wordpress.* to 'user_wordpress'@'localhost' identified by '123456'; flush privileges;
注意,请记住用户名、密码、以及库名,在配置 WordPress 的时候需要填写。
退出:
exit
MariaDB 配置完成。
删除掉之前为了检验Nginx和PHP配置创建的 wordpress 文件夹:
rm -R wordpress/
下载并解压 WordPress 包:
wget http://wordpress.org/latest.tar.gz tar -zxvf latest.tar.gz
复制配置文件:
cp wordpress/wp-config-sample.php wordpress/wp-config.php
打开配置文件并修改:
vim wordpress/wp-config.php
根据提示以及创建数据库时使用的信息,修改红框中的内容,从上往下依次是 数据库名、数据库用户、数据库用户密码、字符集:
修改好后大致如下:
保存修改,最后一步,修改 wordpress 文件夹以及全部子文件子文件夹的用户:
chown -R www-data.www-data wordpress/
至此全部后台操作已经完成,出了一口长气,还是挺复杂的。
好了,是时候开始我们的表演的,打开浏览器,输入IP,锵~锵~锵~锵~
oh~我们成功进入了 WordPress 的安装页面。安装好后,就可以自定义你的个人网站啦。