Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记

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,
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第1张图片
图,1.2_1
启动界面到这里,点击license information,点击我同意后完成,然后点击网络和主机名,打开以太网点击配置。选择 ipv4 设置,,方法选择手动,地址栏输入自己电脑的IP地址和默认网关,以及子网掩码,点击保存之后点击完成,然后点击完成配置,至此Linux启动,一直点击前进,若前进无法前进,则填写输入项,至此整个Linux系统安装启动完成,警告,若外部网络地址改变,则内部虚拟机的网络也应跟随其改变,改变网络的图标在下图1.2_2,
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第2张图片
图1.2_2
点击有线连接,进入网络配置,进入网络设置,如图1.2_3
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第3张图片
图1.2_3
点击打开旁边的设置,点击romove connection profie ,然后再次点开该界面,如下图1.2_4
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第4张图片
图 1.2_4
Ipv4设置如如下图1.2_5
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第5张图片
图:1.2_5
若此网络不可连接,建议改成手动.如下图1.2_6
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第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则表示已安装,
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第7张图片
若没安装成功,则安装 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 安装依赖包
?

yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison

4.1.2 安装boost库
mysql源码编译时要用到boost(网上说高于此版本或低于此版本的都不行,我没有验证,仅在此提出)
?
1
2
3
4
5
6
7
8
9 # 下载源码:地址一

wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

下载源码:地址二

https://pan.baidu.com/s/1dFxqb2h

解压boost

tar -zxvf boost_1_59_0.tar.gz

移动到/usr/local目录

mv boost_1_59_0 /usr/local/boost

4.1.3 添加mysql用户
?
1 # useradd mysql

4.2 源码安装mysql
# 下载源码(5.7.17版本),用浏览器打开,获取真实下载地址
https://pan.baidu.com/s/1cqA9H0

解压

tar -zxvf mysql-5.7.17.tar.gz

编译

cd mysql-5.7.17

# 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

make && make install

注意:
1. 上面步骤中填写的路径会在安装完成后的/usr/local/mysql/support-files/mysql.server脚本中体现;
2. 如果会用到Emoji表情符号,请将上面的utf8修改为utf8mb4;
3. 如果本机已经存在了其余mysql实例,请修改端口号,避免冲突,比如改为3316;
4. 如果本机已经存在了其余mysql实例,请确保上面填写的/usr/local/mysql路径没有被占用,如果已经被占用请换个其余路径;
4.2.1初始化数据库
?
1

/usr/local/mysql/bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

注意:此条语句执行时容易报错,成功至少要满足以下几个条件
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

./mysql.server start

将启动脚本做成服务

[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

mysql -h 127.0.0.1 -u root -p

修改管理员密码

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
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第8张图片
图片显示 表示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 Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第9张图片
图6-1
记住自己的用户名和密码, 点击安装完成,至此nextcloud安装完成,

第七章 nextcloud使用
简单介绍nextcloud的使用,第一次登陆的是我们主管理员的账号和密码,该账号可以添加新的管理员和普通游客的账号,普通游客账号是无法创建其他账号的,只有管理员可以创建账号。主要介绍以下几个功能介绍。
Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记_第10张图片
该页面主要是关于个人信息的界面。

该界面主要关于创建账号和管理账号的界面

![这里写代码片](https://img-blog.csdn.net/20180823205813990?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njk5MDU3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

该界面主要关于nextcloud相关的配置信息
至此页面介绍完毕。

你可能感兴趣的:(Linux初学者LNMP环境搭建以及nextlcloud安装学习笔记)