下面我将详细讲解如何在CentOS7中使用Nginx和PHP7-FPM安装Nextcloud:
准备工作
在开始安装之前,我们需要准备以下环境:
- 一台安装了CentOS 7的服务器
- root用户权限和密码
- 永久性的Internet连接
- 不低于2GB的可用内存
- 一个有效的域名
安装Nginx和PHP7-FPM
要使用Nginx和PHP7-FPM,我们需要首先安装它们。
安装EPEL和Remi仓库
在CentOS 7中,Nginx和PHP7-FPM并不在默认的软件仓库中,因此我们需要添加EPEL(Extra Packages for Enterprise Linux)和Remi仓库,这样才能够安装Nginx和PHP7-FPM。
yum install epel-release -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
安装Nginx
yum install nginx -y
systemctl enable nginx
systemctl start nginx
安装PHP7-FPM
安装PHP7-FPM和必备的扩展。
yum --enablerepo=remi-php70 install php php-fpm php-gd php-mbstring php-mysql php-xml php-zip -y
systemctl enable php-fpm
systemctl start php-fpm
安装数据库
现在我们需要安装一个数据库,以便Nextcloud可以存储数据。
安装MariaDB
我们将使用MariaDB作为我们的数据库,因为它是一个免费的、开源的企业级数据库管理系统。
yum install mariadb-server mariadb -y
systemctl enable mariadb
systemctl start mariadb
配置MariaDB
mysql_secure_installation
运行上述命令,并遵循屏幕上的提示,以保证数据库通信的安全性。在此过程中,您将设置root用户的密码、删除测试数据库等。
创建Nextcloud数据库
我们需要使用MySQL命令行工具登录数据库。请在终端中输入以下命令,并按照提示输入root用户的密码。
mysql -u root -p
一旦你登录了MySQL,可以通过以下命令来创建Nextcloud数据库。
CREATE DATABASE dbname;
请注意,dbname是你为Nextcloud创建的数据库名称。接下来,我们需要为此用户创建一个密码。
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
在上面的命令中,’username’和’password’是你为Nextcloud配置的用户名和密码。你可以根据你自己的需求进行修改,但是请确保为用户名设置较强的密码。
最后,我们需要给用户授予适当的权限,并刷新MySQL特权。
GRANT ALL ON dbname.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
下载和安装Nextcloud
现在我们已经准备好了所有依赖项和配置,可以下载和安装Nextcloud了。
下载Nextcloud
cd /usr/share/nginx/html
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
解压并安装Nextcloud
将下载的tar包解压到Nginx的web目录中,并为Nextcloud文件和文件夹设置正确的权限。
tar -xvjf latest.tar.bz2
chown -R nginx:nginx /usr/share/nginx/html/nextcloud
chmod a+x /usr/share/nginx/html/nextcloud
配置Nginx
现在我们已经完成了Nextcloud的安装,我们需要允许Nginx在我们的服务器上运行它。
创建Nginx配置
我们需要为Nextcloud创建一个新的Nginx配置文件。
vi /etc/nginx/conf.d/nextcloud.conf
并添加以下内容:
server {
listen 80;
server_name domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name domain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/certificate.key;
client_max_body_size 100M;
root /usr/share/nginx/html/nextcloud/;
index index.php;
fastcgi_buffers 64 4K;
gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/json;
location / {
rewrite ^ /index.php$request_uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_PROXY "";
fastcgi_param HTTPS on;
fastcgi_param MOD_PAGESPEED OFF;
fastcgi_param ADMIN_WEB_UNZIP_PECL false;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
}
location ~* \.(png|jpg|jpeg|gif|svg|css|js|ico)$ {
expires max;
log_not_found off;
}
location ~ /.well-known {
allow all;
}
}
在以上配置中,我们需要替换server_name和certificates的路径。你需要将server_name替换为你的域名。ssl_certificate和ssl_certificate_key应该指向你的SSL证书和密钥的路径。
测试Nginx配置
nginx -t
如果配置文件已经检测到没有问题,那么我们最后重启Nginx服务器以应用修改。
systemctl restart nginx
配置Nextcloud
由于我们已经安装了Nextcloud,现在我们需要将所有服务配置到一起,以便Nextcloud可以在我们的服务器上运行。
打开配置文件
我们需要按照以下方式打开Nextcloud配置文件。
vi /usr/share/nginx/html/nextcloud/config/config.php
我们需要添加以下几行代码:
'overwriteprotocol' => 'https',
'trusted_domains' =>
array (
0 => 'domain.com',
),
启用OPcache
打开PHP的OPcache,以及其他一些重要的PHP设置。
vi /etc/php.d/10-opcache.ini
添加以下代码:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
现在重启PHP-FPM来应用这些更改。
systemctl restart php-fpm
完成Nextcloud的安装
现在你可以打开网站并进行Nextcloud的安装。将你的网址输入到Web浏览器中,以打开Nextcloud的安装页面。输入刚才为Nextcloud创建的数据库名称和用户,然后按照提示进行下一步。
在安装完成前,你将需要设置管理员用户名和密码,这将会是你登陆Nextcloud的凭证。完成安装之后,你现在可以进入到Nextcloud的控制面板,开始使用它。
示例1:配置文件server_name设置示例
例如有一个域名为example.com,则配置文件server_name的设置示例如下:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/certificate.key;
...
}
示例2:Nginx配置文件fastcgi_pass示例
在之前的Nginx配置中,我们将fastcgi_pass配置设置为:
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
如果我们使用一个TCP端口来运行PHP-FPM,则fastcgi_pass应被设置为一个类似于下面这个配置的示例:
fastcgi_pass 127.0.0.1:9000;
在这种情况下,Nginx将连接到127.0.0.1:9000端口上运行的PHP-FPM进程,以便为Nextcloud服务。