LNMP环境搭建nextlcloud学习笔记
--B416TK 2018/8/19
第一章 引言
目的:个人私有云的安装,熟悉Linux操作系统,熟悉LNMP环境安装,以及在在LNMP环境下搭建私有云盘next cloud。
背景介绍:
Nextcloud 是一款自由 (开源) 的类 Dropbox 软件,由 ownCloud 分支演化形成。它使用 PHP 和 JavaScript 编写,支持多种数据库系统,比如 MySQL/MariaDB、PostgreSQL、Oracle 数据库和 SQLite。它可以使你的桌面系统和云服务器中的文件保持同步,Nextcloud 为 Windows、Linux、Mac、安卓以及苹果手机都提供了客户端支持。
需要前提安装环境:
Linux+MySQL+PHP +Nginx 或者Linux+Mysql+PHP+Appache
服务器的 Root 权限
一系列依赖包的安装,如 gcc yum等安装包,具体等安装时再行介绍。
第二章 Linux系统的安装
2.1.0 VMware下载安装:
官网下载Vmware 官网下载地址:https://my.vmware.com/ 具体安装步骤不再赘述,
2.1.1 安装Linux虚拟机:
1.0下载centos os7虚拟镜像,镜像地址:
http://mirrors.163.com/centos/7/isos/x86_64该地址下载的是64位计算机镜像。
1.1 :创建虚拟机 点击创建新的虚拟机-选择自定义,点击下一步点击下一步选择稍后安装虚拟机点击下一步默认的选择Linux下一步命名虚拟机的名字和路径点击下一步选择处理器,点击下一步,如何看自己电脑的处理器可百度查询 选择虚拟内存2048M因为后期PHP安装时可能会导致内存不够,故前期避免后面的坑,点击下一步网络类型,我这里选择的是网络地址转换,因能力有限在后面上网的时候还未找到桥迁网络的使用方法。点击下一步使用推荐的LSI 点击下一步。磁盘类型选择推荐的,点击下一步。创建新的虚拟磁盘 点击下一步
选择磁盘大小我这边选择40G的,可根据具体需要选择大小,底下选择将磁盘拆分多个文件。点击下一步。指定磁盘文件,默认无须动,点击下一步此时不要点击完成,点击选择自定义硬件选择新CD/DVD 使用ISO镜像文件,找到下载的镜像文件,然后点击内存选择2G的,点击关闭点击完成,至此虚拟机创建完成。
1.2 启动虚拟机
启动虚拟机,界面有installing 选择installing,enter下一步,enter再下一步
语言选择 中文,自己可以去选择需要的语言,点击下一步时区选择,中国上海,,底下会有提示让把带黄色感叹号的地方先安装完成,,在此警告,界面上的软件选择,注意此选项点进去,选择GCI的服务器,该选择是带应用界面的,而最小安装是全输入的Linux系统,建议初学者不应安装此选项。等后面熟悉之后在选择安装此选项。回到刚才的界面,找到系统下的安装位置,点击进去,找到我要配置分区,点击完成选择sda的分类,然后点击完成点击接受更改,创建新的分区,点击开始安装,等待安装,点击root密码,设置密码,点击完成,等待虚拟机安装完成,此过程稍微漫长请等待安装完成。安装成功之后点击重启,选择centos os7 enter下一步,这是启动界面开始,如下图1.2_1,
图,1.2_1
启动界面到这里,点击license information,点击我同意后完成,然后点击网络和主机名,打开以太网点击配置。选择 ipv4 设置,,方法选择手动,地址栏输入自己电脑的IP地址和默认网关,以及子网掩码,点击保存之后点击完成,然后点击完成配置,至此Linux启动,一直点击前进,若前进无法前进,则填写输入项,至此整个Linux系统安装启动完成,警告,若外部网络地址改变,则内部虚拟机的网络也应跟随其改变,改变网络的图标在下图1.2_2,
图1.2_2
点击有线连接,进入网络配置,进入网络设置,如图1.2_3
图1.2_3
点击打开旁边的设置,点击romove connection profie ,然后再次点开该界面,如下图1.2_4
图 1.2_4
Ipv4设置如如下图1.2_5
图:1.2_5
若此网络不可连接,建议改成手动.如下图1.2_6
图1.2_6
找到ipv4界面,对ipv4进行配置,选择手动,地址栏选择本机的IP地址,不是虚拟机的ip地址,进入添加,还有默认网关,以及子网掩码,填好之后,点击应用
完成之后 即可网络上网,至此Linux安装以及网络连接完成。,
第三章 源码nginx环境安装
3.1.1提前所需软件
在安装nginx前,需要确保系统安装了g++、gcc,openssl-1.0.2a.tar.gz、pcre-8.37.tar.gz、zlib-1.2.8.tar.gz
yum groupinstall Development Tools Development Libraries
wget http://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar -zxvf openssl-1.1.0e.tar.gz
cd /openssl-1.1.0e
./config shared zlib –prefix=/usr/local/openssl && make && make install
若安装报错 则yum install zlib-devel
再次
/config shared zlib –prefix=/usr/local/openssl && make && make install
至此openssl安装完毕
检验安装
/usr/local/openssl/bin/openssl version -a
检验完毕如下图信息,3-1
![这里写图片描述](https://img-blog.csdn.net/20180823203857188?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njk5MDU3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
图3-1
rpm -qa pcre 查看系统是否安装了nginx依赖软件若出现如下图3-2则表示已安装,
若没安装成功,则安装 prce
rpm -qa zlib 查看系统是否安装了nginx依赖软件 若出现如图3-3则表示已经安装
![这里写图片描述](https://img-blog.csdn.net/20180823203236862?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njk5MDU3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 图3-3
至此nginx的依赖软件都已安装成功,开始进入nginx的源码安装
3.1.2安装方式:源码安装
安装位置:/usr/local/
wget http://nginx.org/download/nginx-0.8.33.tar.gz
tar -zxvf nginx-0.8.33.tar.gz
cd nginx-0.8.33
./configure –prefix=/usr/local/nginx
编译可能会报错,报错信息如图3-4
图3-4
该错误提示pcre未安装,用yum安装pcre
yum -y install pcre-devel
安装成功之后,再次编译, ./configure –prefix=/usr/local/nginx
编译之后
make
make install
进入安装目录 即/usr/local/nginx目录下
cd /usr/local/nginx
进入nginx目录下的sbin目录,执行nginx文件
cd sbin
执行nginx的文件
./nginx
netstat -ntlp
查看80端口是否开启
如果80端口未开放,则开放80端口,编辑iptables文件
vi /etc/sysconfig/iptables
在里面输入
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
注意,开放端口一定要写在下面这句的前面
-A INPUT -j REJECT –reject-with icmp-host-prohibited
保存退出,重启防火墙
service iptables restart
ps -ef|grep nginx 查看进程是否存在如图3-5 该图是进程启动成功图,
图3-5
至此nginx安装成功
第四章 MySQL源码安装
4.1源码安装MYSQL
前提:以下步骤请都用root用户或拥有管理员权限的用户来执行
4.1.1 安装依赖包
?
4.1.2 安装boost库
mysql源码编译时要用到boost(网上说高于此版本或低于此版本的都不行,我没有验证,仅在此提出)
?
1
2
3
4
5
6
7
8
9 # 下载源码:地址一
https://pan.baidu.com/s/1dFxqb2h
4.1.3 添加mysql用户
?
1 # useradd mysql
4.2 源码安装mysql
# 下载源码(5.7.17版本),用浏览器打开,获取真实下载地址
https://pan.baidu.com/s/1cqA9H0
编译
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
注意:
1. 上面步骤中填写的路径会在安装完成后的/usr/local/mysql/support-files/mysql.server脚本中体现;
2. 如果会用到Emoji表情符号,请将上面的utf8修改为utf8mb4;
3. 如果本机已经存在了其余mysql实例,请修改端口号,避免冲突,比如改为3316;
4. 如果本机已经存在了其余mysql实例,请确保上面填写的/usr/local/mysql路径没有被占用,如果已经被占用请换个其余路径;
4.2.1初始化数据库
?
1
注意:此条语句执行时容易报错,成功至少要满足以下几个条件
1. /usr/local/mysql/data目录存在并且一定要为空目录,否则报错;
2. 如果本机已经存在了其余的mysql,请确实/etc/my.cnf文件不存在,否则会按照/etc/my.cnf中的设置进行初始化,datadir会读取另一个mysql实例的路径,从而导致报错。遇到此情况,可以先将已经存在的mysql实例停止,然后将/etc/my.cnf文件剪切到此实例对应的datadir目录中,再启动此实例,然后重新执行初始化命令;
3. 上面语句初始化成功后会在控制台打印临时管理员密码,如下:
2017-10-11T10:04:44.378722Z 1 [Note] A temporary password is generated for root@localhost: 2wp?fPp33/Hw
4.2.2设置配置文件
?
1 # cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
注意:
1. 根据实际需要设置my.cnf文件;
2. 如果本机已经存在了其余mysql实例,请将my.cnf文件放置到datadir对应的目录,确保/etc/my.cnf文件不存在,否则会影响到另一个mysql实例;
mysql配置文件读取路径顺序为:
/etc/my.cnf
/etc/mysql/my.cnf
basedir/my.cnf
datadir/my.cnf
–defaults-extra-file
~/.my.cnf
注意
1. 如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 –defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。
2. 如果以上几个文件都存在,则会最后读取的配置会覆盖前面读取的
4.2.3 启动mysql
7 # cd /usr/local/mysql/support-files
[root@ver ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@ver ~]# service mysqld status
MySQL running (16395) [ OK ]
注意:如果本机已经存在了其余的mysql服务,则复制时文件名要注意区分:如改为/etc/init.d/mysqld2
4.3.4 修改临时管理员密码
?
1
2
3
4 # 输入步骤2.5中生成的临时密码:2wp?fPp33/Hw
alter user ‘root’@’localhost’ identified by ‘123456’;
至此mysql安装完成
第五章PHP7yum安装
5.1安装依赖包
前提下载epel-release源即 yum install epel-release
[root@localhost ~]# yum -y install gcc
[root@localhost ~]# yum -y install gcc++
[root@localhost ~]# yum -y install gcc-c++
[root@localhost ~]# yum -y install wget
[root@localhost ~]# yum -y install make
[root@localhost ~]# yum -y install libxml2
[root@localhost ~]# yum -y install libxml2-devel
[root@localhost ~]# yum -y install openssl
[root@localhost ~]# yum -y install openssl-devel
[root@localhost ~]# yum -y install curl-devel
[root@localhost ~]# yum -y install libjpeg-devel
[root@localhost ~]# yum -y install libpng-devel
[root@localhost ~]# yum -y install freetype-devel
[root@localhost ~]# yum -y install bison
[root@localhost ~]# yum -y install autoconf
5.2创建php用户组
创建php用户组(-r选项是创建一个系统用户组的意思)
[root@localhost ~]# groupadd -r php
创建用户并加入到php系统用户组
[root@localhost ~]# useradd -r -g php -s /sbin/nologin -d /usr/local/php -M php
5.3 yum安装php-7
yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel
yum install php70w.x86_64 php70w-bcmath.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-dba.x86_64 php70w-devel.x86_64 php70w-embedded.x86_64 php70w-enchant.x86_64 php70w-fpm.x86_64 php70w-gd.x86_64 php70w-imap.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysqlnd.x86_64 php70w-odbc.x86_64 php70w-opcache.x86_64 php70w-pdo.x86_64 php70w-pdo_dblib.x86_64 php70w-pear.noarch php70w-pecl-apcu.x86_64 php70w-pecl-apcu-devel.x86_64 php70w-pecl-imagick.x86_64 php70w-pecl-imagick-devel.x86_64 php70w-pecl-mongodb.x86_64 php70w-pecl-redis.x86_64 php70w-pecl-xdebug.x86_64 php70w-pgsql.x86_64 php70w-xml.x86_64 php70w-xmlrpc.x86_64 nginx php70w-intl
安装mysql与php建立关联的依赖包,为防止报错,将其全部安装.
至此php模块安装完成
修改php配置文件之修改服务器所在时区
修改
php.ini
配置文件, 设置php所安装服务器时区
vim /etc/php-fpm.d/www.conf
找到 user 和group 修改为
user=nginx
group=nginx
测试PHP的配置文件是否无误
php-fpm -t
出现 test is successful 配置文件完好
出现上面的提示也就是测试配置文件通过没有问题, 可以正式使用php服务了
用service php-fpm start 启动php-fpm
修改nginx配置文件使之使用nginx反向支持php解释器
修改nginx配置文件使之使用nginx反向php解释器, 也就是php-fpm它其实就是cgi
说明一下我在安装的nginx是将配置文件放在/etc/nginx/
目录下修改配置文件如下:
server {
listen 80;
server_name www.nginx.dev;
#charset koi8-r;
access_log logs/nginx.dev.access.log main;
location / {
root /data/www/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 /data/www/html;
}
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
expires 30d;
}
# 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 自己设置你要防止php文件的位置;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $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;
}
}
创建文件
重新启动nginx 登陆local host
图片显示 表示php安装成功,至此php与与nginx关联成功,
由于前面安装了mysql的依赖包,至此MySQL也成功关联,如若想测试是否与MySQL成功建立关联在你刚才的php文件下修改。进行测试PHP与MySQL是否关联,由于该页面不能写PHP代码,因此建议读者去百度一下php与MySQL的PHP代码。
重新打开php页面,若显示ok 则关联成功,若显示失败,则是因为与MySQL的依赖包未完全导入。重新导入与MySQL的关联包重启php-fpm
第六章Nextcloud搭建
create database nextcloud;
create user [email protected]:3306 identified by ‘123456’;
grant all privileges on nextcloud .* to [email protected]:3306 identified by ‘123456’;
flush privileges;
在数据库中创建数据库
下载nextcloud
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip
unzip nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/
把解压过的文件移动到nginx加载的目录下
cd /usr/share/nginx/html/
mkdir -p nextcloud/data/
chown nginx:nginx -R nextcloud/ 此此步是重点一定要赋权限,否则打开会报错
一串英文字母,
vim nextcloud.conf
cd /etc/nginx/conf.d/
vim nextcloud.conf
将下列内容粘贴到next cloud.conf中
server {
listen 80;
# listen 443 ssl;
server_name localhost;
#listen [::]:80 default_server ipv6only=on;
index index.html index.htm index.php;
#autoindex off;
root /home/wwwroot/default/nextcloud;
# ssl_certificate /etc/nginx/cert/nextcloud.crt;
# ssl_certificate_key /etc/nginx/cert/nextcloud.key;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include /usr/local/nginx/conf/enable-php.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
在nginx.conf中添加
Include nextcloud.conf
然后创建在nginx安装目录下的conf目录创建enable-php.conf
编辑
location ~ [^/].php(/|$)
{
# root /home/wwwroot/default/nextcloud;
# try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
编辑pathinfo.conf的配置文件
fastcgi_split_path_info ^(.+?.php)(/.*) ;set ; s e t path_info fastcgipathinfo;fastcgiparamPATHINFO f a s t c g i p a t h i n f o ; f a s t c g i p a r a m P A T H I N F O path_info;
try_files $fastcgi_script_name =404;
检查之后重启服务
nginx -t
service nginx restart
打开你的 Web 浏览器,若出现下载php文件则是因为nginx中你开启的server与php-fpm未成功关联
请认真检查你的nextcloud.conf文件,该下载错误一定在你的配置文件中,
若出现安装完成之后未跳出登陆页面,该错误一定是你的路径问题,请看一下enable-php.conf中是否添加了include pathinfo ;该路径是相对路径,做好添加该文件的绝对路径,该文件的导入代码一定要放在include fastcgi.conf 后面。
如果如果该错误未能解决,请检查你的MySQL是否启动了innodb 引擎 然后去看nextcloud,的报错信息,报错信息在nextcloud的data文件夹下,如果你看到了Exception一大串的报错信息,只要不是与MySQL相关的可以暂时不用管,可能是因为nginx那边传过来的路径导致该excepttion
如果上面的你的问题仍未解决,请检查nginx的报错信息nginx的报错信息在你nginx.conf中找到你的error_log =……;所对应的位置,查看错误日志,如果你看到了什么与dpo相关的东西。说明你的与MySQL的依赖包未完全导入。请重新导入与dpo相关的依赖包,这些就是安装中的常见问题。接着就可以享受你的nextcloud了
设置你的管理员用户名和密码,,此步一定要点击MySQL连接,输入mysql数据验证信息,如图6-1
图6-1
记住自己的用户名和密码, 点击安装完成,至此nextcloud安装完成,
第七章 nextcloud使用
简单介绍nextcloud的使用,第一次登陆的是我们主管理员的账号和密码,该账号可以添加新的管理员和普通游客的账号,普通游客账号是无法创建其他账号的,只有管理员可以创建账号。主要介绍以下几个功能介绍。
该页面主要是关于个人信息的界面。
该界面主要关于创建账号和管理账号的界面
![这里写代码片](https://img-blog.csdn.net/20180823205813990?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njk5MDU3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
该界面主要关于nextcloud相关的配置信息
至此页面介绍完毕。