有人说程序员要少重复造轮子,没错,虽然搭建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的位置还有扩展文件夹的位置
之后你就可以像平时安装软件那样安装网站了,安装网站这种没有技术水平的事我就不说了