在CentOS 6.5中使用SSL和Nginx安装ownCloud
版本:3.0
作者:亚伦
CentOS已经升级了很多软件包,而且我在1年前写过的文章不再适用于CentOS 6.5,而且更新到最新版本。
我做了一个研究,看起来这将是2014年的第一个教程,如何使用nginx,postgresql和ssl在centos中安装owncloud。 因为大多数人不知道如何解决简单的问题,您现在不会使用nginx来查找CentOS和owncloud安装。
我的服务器受到影响,这是今天让我写这篇文章的原因。
EPEL和CentOS repos中的软件包已经过时,而nginx,postgresql和owncloud需要较新的软件包。 您只需留在登录页面,而不用访问您的文件,留下来刮伤你的头,问自己刚刚发生。 日志文件不会显示问题来自哪里,也不会显示自己的本地。
自己的要求是
PostgreSQL> = 9.0,但在EPEL中是8.8,它需要php 5.3.3最低限度,但它不适用于该版本,所有这些较新的软件包都将需要最新的稳定的nginx版本。
我们应该做的第一件事是删除所有的mysql库。
yum remove mysql* mysql-server mysql-devel mysql-libs
像往常一样,我们将安装第三方资料,如epel,remi和新的:最新的postgresql
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm
编辑epel存储库并确保顶部已enabled=1
enabled=1
vi /etc/yum.repos.d/epel.repo
使用remi repo做同样的事情,但确保启用php版本5.6,
vi /etc/yum.repos.d/remi.repo
创建一个nginx repo配置文件
vi /etc/yum.repos.d/nginx.repo
并添加:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
更新您的CentOS服务器,以添加那些第三方回馈
yum update
安装以下软件包以满足自己的要求:
yum install nginx postgresql93 postgresql93-libs postgresql93-server wget php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql php-pdo
启动PostgreSQL,启动nginx临时,并使用chkconfig将其添加到系统启动服务
service postgresql-9.3 initdb
service postgresql-9.3 start
chkconfig postgresql-9.3 on
service nginx start
chkconfig nginx on
service nginx stop
创建新的PostgreSQL用户和数据库。
su - -c "psql" postgres
CREATE USER cloud WITH PASSWORD 'userpass';
CREATE DATABASE cloudbase OWNER cloud ENCODING 'UTF8';
GRANT ALL PRIVILEGES ON DATABASE cloudbase TO cloud;
\q
检查并记住你的时区
cat /etc/sysconfig/clock
编辑php配置文件
vi /etc/php.ini
#搜索post_max_size并进行设置
post_max_size = 2G
#搜索cgi.fix_pathinfo,取消注释并进行设置
cgi.fix_pathinfo = 0
#搜索upload_max_filesize并进行设置
upload_max_filesize = 2G
#搜索date.timezone,取消注释并进行设置
date.timezone = "your/timezone"
编辑php-fpm配置文件,以便使用tcp而不是unix套接字
vi /etc/php-fpm.d/www.conf
确保listen不指向/var/run/php-fpm/php-fpm.sock
listen = 127.0.0.1:9000
启动php-fpm服务
chkconfig php-fpm on
service php-fpm start
编辑postgresql配置文件以允许密码登录:
vi /var/lib/pgsql/9.3/data/pg_hba.conf
并用密码更改ident - 注意光标在下图中:
重新启动postgresql数据库service postgresql-9.3 restart
创建我们将存储我们的SSL证书的空文件夹
cd /etc/nginx
mkdir -p cert
如果您熟悉apache虚拟主机,那么您将要创建的下一个文件就是这样。
cd conf.d
vi cloud.conf
upstream php-handler { server 127.0.0.1:9000; #server unix:/var/run/php5-fpm.sock; } server { listen 80; server_name 10.10.10.110; # replace with your domain name or internal server ip return 301 https://$server_name$request_uri; # enforce https } server { listen 443 ssl; server_name 10.10.10.110; # replace with your domain name or internal server ip ssl_certificate /etc/nginx/cert/server.crt; ssl_certificate_key /etc/nginx/cert/server.key; # Path to the root of your installation root /var/www/owncloud/; client_max_body_size 10G; # set max upload size fastcgi_buffers 64 4K; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; index index.php; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ ^/(data|config|\.ht|db_structure\.xml|README) { deny all; } location / { # The following 2 rules are only needed with webfinger rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ index.php; } location ~ ^(.+?\.php)(/.*)?$ { try_files $1 = 404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$1; fastcgi_param PATH_INFO $2; fastcgi_param HTTPS on; fastcgi_pass php-handler; } # Optional: set long EXPIRES header on static assets location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ { expires 30d; # Optional: Don't log access to assets access_log off; } }
我已经将这个nginx配置文件上传到我的网站,所以反而手动输入wget http://linux.sytes.net/img/nginx1-6.conf.txt
,并将其重命名为cloud.conf
正如您在上面的nginx“虚拟主机”中指定的,我们自己的Cloud服务器将使用SSL,所以让我们创建这些证书,我们呢?
cd ..
cd cert
openssl req -x509 -nodes -sha384 -days 3650 -newkey rsa:4096 -keyout server.key -out server.crt
chmod 600 server.key
chmod 600 server.csr
接下来,下载,提取owncloud存档并设置owncloud文件夹的权限。 请注意,我们将下载自己的开发版本。
cd /var/www
wget http://download.owncloud.org/community/daily/owncloud-daily-master.tar.bz2
tar xjf owncloud-daily-master.tar.bz2
mkdir -p owncloud/data
chmod 770 owncloud/data
chmod 777 owncloud/config/
chown -R root:apache owncloud
rm -rf owncloud-daily-master.tar.bz2
允许将tcp连接到您的服务器端口:80和443.如果您或其他人呼叫您的服务器内部ip,将重定向到https:// yourserverinternalip,因为您在早期指定了nginx“虚拟主机”。
iptables -I INPUT 4 -p tcp -d 10.10.10.110 --dport 80 -j ACCEPT
iptables -I INPUT 4 -p tcp -d 10.10.10.110 --dport 443 -j ACCEPT
service iptables save
service iptables restart
最后重新启动PostgreSQL,并使用较新的配置启动nginx:
service postgresql-9.3 restart
service nginx start
就是这样,打开你的浏览器并点你的服务器ip。 选择您喜欢的任何登录名和密码。