linux搭建lnmp+wordpress

有人说程序员要少重复造轮子,没错,虽然搭建lnmp的文章网上很多,但是我就是要再写一遍,不服你打我呀

介绍

lnmp就是(linux,nginx,mysql,php或perl或python),至于我为什么喜欢lnmp而不是lamp,因为黑客军团有一集出现了nginx,而且我是用惯了nginx

软件安装

这个的话文章在我其他文章里,我就不重复写了。
linux 编译安装perl
linux编译安装python
linux编译安装php
linux编译安装mysql5.7
linux 编译安装nginx
linux编译安装apache

配置nginx

  • 首先启动一下nginx看看是不是已经安装正确了
    /usr/local/nginx/sbin/nginx
    然后浏览器访问树莓派地址,显示Welcome to nginx!
    没错,安装成功了

  • 编辑nginx.conf
    vim nginx.conf
    下面是默认的nginx配置文件

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       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  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   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   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;
        #}
    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

下面是我的nginx的配置文件,你可以看一下我的注释

#user  nobody;
#--这里设置的是运行用户,为了方便确认那就改成nginx用户nginx组好了
user nginx_user nginx_group;
#--前面是名为nginx_user的用户,后面是名为nginx_group的组
#--记住当你修改了这个选项之后要在系统中添加这个用户和用户组,并且修改用户所属组
#--groupadd nginx_group
#--useradd nginx_user
#--usermod -g nginx_group nginx_user
worker_processes  4;
#--上面的意思是启动进程,一般设置成和cpu数量相同,我的树莓派是4个核心的,我就设置成4了
#--如果你不知道cpu是几个核心的,你可以cat /proc/cpuinfo
#error_log  logs/error.log;
#--上面是设置错误日志的,一般就把他打开吧
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
#--上面一行是进程日志,打开吧
pid        logs/nginx.pid;
events {
    worker_connections  1024;
#--上面定义一个进程处理多少请求,就默认好了
#--epoll是多路复用IO(I/O Multiplexing)中的一种方式,
#--仅用于linux2.6以上内核,可以大大提高nginx的性能
    use   epoll;    
}
http {
#--设定mime类型,类型由mime.type文件定义,默认不用管
    include       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 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息
#--可以打开,也可以不打开,我这种小机子就不打开了
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
#--上面是连接超时时间
    #gzip  on;
#--打开gzip,用来压缩网页
    gzip  on;
#--接着把下面全部注释掉
#--打开nginx的虚拟主机功能
    include vhosts.d/*.conf;
    #server {
        #listen       80;
        #server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #location / {
        #   root   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   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;
        #}
    #}
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}
  • 刚才不是设置了虚拟主机嘛,现在配置虚拟主机文件
    1.在配置文件夹下即/usr/local/nginx/conf建立vhosts.d文件夹
    mkdir vhosts.d
    2.建立wordpress.conf文件
    touch wordpress.conf
    其实文件名字你随便取没关系,但是文件后缀一定要是.conf
    3.编辑wordpress.conf
    vim wordpress.conf
    我的配置文件在下面,原理都在注释里面
#--建立一个服务器块
 server {
    server_name bboysoul.cn;
#--上面改成你的域名
    listen      80;
#--监听端口
    location / {
#--上面建立一个位置块
#--设置站点位置你要确认有这个文件
        root /www/wordpress;
#--设置首页
        index index.html index.php;
    }
#--位置块
    location ~ \.php$ {
#--把 php 后缀都重定向给 php-fpm 处理
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /www/wordpress/$fastcgi_script_name;
        include        fastcgi_params;
    }
    access_log  /usr/local/nginx/logs/wordpress/wordpress_access.log;
#--访问日志
    error_log /usr/local/nginx/logs/wordpress/wordpress_error.log;
#--错误日志
 }
#--服务器块

注意我的站点目录是/www/wordpress下,所有的log文件和站点文件路径自己一定要注意好

配置php

修改php进程用户和用户组
vim /usr/local/php/etc/php-fpm.d/www.conf

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
;--user = nobody
;--group = nobody
;--上面定义的是php-fpm进程的用户和用户组
user = nginx_user
group = nginx_group

测试

  • 现在呢,差不多可以打开网页装下逼了,先kill nginx的进程,和你会在修改配置文件时测试时候打开的php-fpm进程
    用pidof这个命令找到两个进程的pid号,然后kill就好了
    然后再打开
    说了那么多就是重启两个进程
  • 之后修改站点目录的权限
    chown -R nginx_user:nginx_user /www
    弄个php探针测试一下
    echo "<?php phpinfo(); ?>" >> /www/wordpress/index.php
    然后访问就好了

配置mysql

  • 建立wordpress数据库
    create database wpdb;

配置wordpress

  • 下载wordpress
    wget https://cn.wordpress.org/wordpress-4.7.2-zh_CN.tar.gz
    tar -zxvf wordpress-4.7.2-zh_CN.tar.gz
    然后复制到站点目录
    访问显示
    您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
    没错,因为我们用的是php7所以是没有mysql扩展的,不过我们可以安装
    方法在这里https://my.oschina.net/u/1266171/blog/778939
    用phpize的时候要有autoconf
    还有可能环境不一样,所以上面这篇文章configure参数有点问题的
    ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=mysqlnd --with-mysql=/usr/local/mysql
    这个是我的参数,就是加上了mysql路径
    要注意的是你的php.ini的位置还有扩展文件夹的位置
    之后你就可以像平时安装软件那样安装网站了,安装网站这种没有技术水平的事我就不说了
    原文作者:bboysoul
    原文地址: https://www.jianshu.com/p/3305de7b0313
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞