标签 ubuntu 下的文章

这么多年积累下来的照片(RAW文件都保留着)太多,西数的 NAS 有点不够用了,想着就入了一块 8T 的硬盘,扩展一下家里面的这台老台式机(安装的是 Elementary OS),搭建了一个 NFS 服务。

安装软件

sudo apt-get install nfs-kernel-server nfs-common

修改配置文件

sudo vi /etc/exports

在末尾添加下面这行:

/data/nfs *(rw,sync,no_root_squash,no_subtree_check)

上面这段表达的意思是:

/data/nfs            : 共享的目录
*                    : 指定哪些用户 可以访问
                       *             所有可以 ping 通本主机的用户 
                       192.168.3.*   指定网段,在该网段中的用户可以挂载
                       192.168.3.14  只有该 IP 的用户才能挂载
(                    : 共享参数
  rw,                  : 权限
                         ro: 只读
                         rw: 读写
  sync,                : 同步写入硬盘
  no_root_squash,      : root 用户访问此目录,具有 root 操作权限
  no_subtree_check     : 不检查父目录权限
)

常用的共享参数还有:

  • ro:只读访问
  • rw:读写访问
  • sync:同步写入硬盘
  • async:暂存内存
  • secure:NFS 通过 1024 以下的安全 TCP/IP 端口发送
  • insecure:NFS 通过 1024 以上的端口发送
  • wdelay:多个用户对共享目录进行写操作时,则按组写入数据(默认)
  • no_wdelay:多个用户对共享目录进行写操作时,则立即写入数据
  • hide:不共享其子目录
  • no_hide:共享其子目录
  • subtree_check:强制 NFS 检查父目录的权限
  • no_subtree_check:不检查父目录权限
  • all_squash:任何访问者,都转为匿名
  • root_squash :root 用户访问此目录, 映射成如 anonymous 用户一样的权限(默认)
  • no_root_squash:root 用户访问此目录,具有 root 操作权限

重启 nfs 服务

sudo /etc/init.d/nfs-kernel-server restart

到此,nfs 的服务就搭建好了

客户端访问服务器

  1. 检查客户端与服务端的网络是否连通

    ping 192.168.3.3
  2. 查看服务端的共享目录设置

    showmount -e 192.168.3.3
    
    Export list for 192.168.3.3:
    /data/nfs *
  3. 将该目录挂载到本地

    mount 192.168.3.3:/data/nfs /path/to/local/folder
  4. 访问

    cd /path/to/local/folder

介绍

很多软件都必须服务器提供了 Java 支持,本文将指导你完成在 Ubuntu 服务器如何安装与管理多版本的 Java.

安装默认的 JRE/JDK

这是被推荐的,也是最简单的方式,默认情况下,在 Ubuntu 12.04 上面,会安装 OpenJDK 6,而在 Ubuntu 12.10+ 上面,会安装 OpenJDK 7

通过 apt-get 工具安装 Java 很简单,首先更新包索引:

sudo apt-get update

安装检查你的服务器上面是否已经安装了 Java:

java -version

如果该命令返回 『The program java can be found in the following packages』,则表明你的服务器上面还没有安装任何版本的 Java,那么,执行下面这行命令即可安装默认版本的 Java:

sudo apt-get install default-jre

这会安装 Java 运行时环境(JRE),如果你需要安装 Java 开发工具包(JDK)来构建或编译 Java 程序(比如 Apache Ant,Apache Maven 等),那么执行下面这行命令:

sudo apt-get install default-jdk

这人安装 Java 需要的所有内容。

其它的步骤,都是可选的,而且应该在你需要的时候才执行。

安装 OpenJDK 7 (可选)

要安装 OpenJDK 7 ,执行下面的命令:

sudo apt-get install openjdk-7-jre 

这会安装 Java 运行时环境 (JRE),如果你需要安装 Java 开发工具包,则执行下面的命令:

sudo apt-get install openjdk-7-jdk

安装 Orache JDK (可选)

Orache JDK 是官方的 JDK,但是它现在已经不再被是 Ubuntu 的默认安装选项了。但是你还仍然可以通过 apt-get 安装它,要安装任何版本的 Oracle JDK,都需要先执行下面的命令:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

根据你要安装的 JDK 版本的不同,选择下面不同的命令执行:

Oracle JDK 6

这是一个很古老的版本,但是同样可以安装

sudo apt-get install oracle-java6-installer

Oracle JDK 7

这是最新的稳定发布版本:

sudo apt-get install oracle-java7-installer

Oracle JDK 8

这是一个开发者预览版:

sudo apt-get install oracle-java8-installer

多版本安装 (可选)

如果你的系统中安装了多个版本的 Java,那么你可以随时设置并切换默认版本的 Java,执行下面的命令:

sudo update-alternatives --config java

如果你的系统中安装了多个版本,那么通常会有如下这样的返回结果:

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      manual mode

Press enter to keep the current choice[*], or type selection number:

你现在就可以通过输入每一个版本前面的序号来设置默认的 Java 版本,这种默认版本的设置方法,对于 Java 编译器 javac 同样适用:

sudo update-alternatives --config javac

同样的,keytooljavadoc 以及 jarsigner 等均可以通过此种方法来设置默认版本。

设置 JAVA_HOME 环境变量

有一些程序需要系统提供一个 JAVA_HOME 环境变量,首先找到当前系统安装了哪些版本的Java。

sudo update-alternatives --config java

返回如下这样的结果:

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      manual mode

Press enter to keep the current choice[*], or type selection number:

那么,安装路径就有下面这些:

/usr/lib/jvm/java-7-oracle

/usr/lib/jvm/java-6-openjdk-amd64

/usr/lib/jvm/java-7-oracle

复制你需要版本的路径,然后编辑:/etc/environment 文件:

sudo nano /etc/environment

在该文件中,添加下面这一行(同时将 YOUR_PATH 改为你刚才复制的路径):

JAVA_HOME="YOUR_PATH"

然后,重新加载该文件:

source /etc/environment

测试设置是否正确,可以执行下面这行命令:

echo $JAVA_HOME

如果成功显示了你设置的路径,则表示设置成功。

最近越来越发现自己变懒了,没有以前那么强的追根问底的勇气了,最近这几个月腾讯云一直在做活动,三折起,我买了两台服务器,配置也还不错,最高的配置的那一台现在是做为公司的备用服务器在使用,而还有一个配置稍低一些的,则做自己的个人使用了,对于个人这一台,我最开始是安装的SUSE作为服务器操作系统,然后,发现软件版本的各种老啊,如果是以前的话,可能我会通宵达旦地把这软件给升级咯,可是现在却选择了一个更简单的方法,把SUSE换成了CentOS,然后同样的问题出现了,然后,我又回到了Ubuntu的怀抱。

从各种网站上面是各种搜索,只是为了想知道,到底CentOS、Suse与Ubuntu哪一个发行版做服务器更好,最后的结果是没有人能告诉我一个确切的答案,公说公有理,婆说婆有理,索性,咱回到业务的出发点,不就是为了要一台服务器么,只要能实现我的需求,那就行,然后在各种比较之后,我还是选择了最易用的Ubuntu 12.04 LTS,然后,再一次开始这个环境的安装与配置。

安装 Nginx、MySQL、PHP

如果想运行最新版本的Nginx(版本一般会高于Ubuntu官方的),需要先运行下面两行命令:

aptitude install python-software-properties
add-apt-repository ppa:nginx/stable

直接运行下面整段命令即可完成所有必须软件的安装,对于PHP,我还安装了一些功能库:

apt-get update
apt-get upgrade
apt-get install nginx mysql-client mysql-server memcached php5-common php5-dev php5-cgi php5-fpm php-apc php5-mysql php5-pgsql php5-sqlite php5-curl php5-gd php5-intl php-pear php5-mcrypt php5-memcache php5-ming php5-recode php5-tidy php5-xmlrpc php5-xsl php5-mcrypt php5-imap
注意:安装过程中,需要输入 MySQL 服务器 root 用户的密码。

安装完成之后,各服务就会自动启动了,直接访问服务器的IP即可访问,各配置文件分别保存在:

  • /etc/php5/fpm/php.ini
  • /etc/nginx/

这些目录下。

建议

  1. 将PHP-FPM 默认监听的 127.0.0.1:9000 改成了 /var/run/php5-fpm.sock,改了之后,需要把 nginx.conf 添加以下代码片段:

    upstream php {

      server unix:/var/run/php5-fpm.sock;

    }

  2. 我的 nginx 虚拟机路径都被设置为 /home/www/PRIMARY_DOMAIN_NAME/public ,需要把 PRIMARY_DOMAIN_NAME 修改成为虚拟主机主域名。

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

系统需求与安装前的准备

操作系统

Gitlab 官方提供支持的操作系统有:

  • Ubuntu Linux
  • Debian/GNU Linux

需要给官方支付费用而支持的操作系统有:

  • Red Hat Enterprise Linux (RHEL)
  • CentOS
  • Oracle Linux

官方不提供支持,但是可以已经得到第三方支持的操作系统有:

  • Arch Linux
  • Fedora
  • Gentoo

其它的如 FreeBSD 、Mac OS X等操作系统现在已经有成功配置的案例了,但是在BSD或者Unix系统上的安装配置流程相当的繁琐,如果你确定要在这些操作系统上面安装的话,请一定要做好耐心的准备。

Ruby

GitLab 是基于 Ruby on Rails 开发的程序,至本文撰写止(2014/01/12),GitLab最新版本要求Ruby 的版本达到 1.9.3 或者 2.0+ ,对于类似 JRuby 或者 Rubinius 等非原生的 Ruby 版本,也有安装成功的案例,但是同样需要你做大量的工作,因为 GitLab 使用了大量的原生 Gem。

硬件要求

CPU 要求

  • __100__用户以下,单核心CPU即可满足要求
  • 超过__100__用户,推荐至少使用双核心CPU
  • 超过__1000__用户,推荐至少使用4核心CPU
  • 超过__10000__用户,推荐至少使用8核心CPU

内存要求

  • GitLab最低要求(运行缓慢) 512MB 内存,同时还需要 250MB swap
  • 768MB 的内存能保证 GitLab 刚刚可以以正常的速度运行,但是不推荐
  • 1GB 内存 + 250MB swap 可以支持约100个用户的使用
  • 2GB 内存可以支持约1000名用户的使用
  • 4GB 内存可以支持约 10000名用户的使用

存储

可用存储空间的大小最终取决于你的项目大小与多少,但是要GitLab正常使用,你至少需要保证可用磁盘空间是你项目所占用空间的两倍,考虑到Git是一个只增不减的体系,所以建议你对磁盘使用LVM架构,以方便后期增加更多的磁盘。

依赖包

在Debian中, sudo 默认是没有安装的,这需要你手工安装,然后更新并升级系统至最新版本(以 root 帐户运行):

apt-get update -y
apt-get upgrade -y
apt-get install sudo -y

在整个 GitLab 的安装过程中,有一些文件需要编辑,所以你还需要带一个你熟悉的编辑器,比如你习惯使用 vim ,那么可以使用下面的命令安装它(安装并设置为默认编辑器):

sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic

接下来安装必要的依赖包:

sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate

安装成功之后,我们需要您确定安装了正确的 Python 版本(要求 Python 2.5+3.0 还没有被支持):

sudo apt-get install -y python
python --version
sudo apt-get install -y python2.7
python2 --version
sudo ln -s /usr/bin/python /usr/bin/python2
sudo apt-get install -y python-docutils

确定你的系统上已经安装了正确版本的 Git (GitLab要求Git的版本为 1.7.10 或者更高,比如 1.7.12 或者 1.8.4):

sudo apt-get install -y git-core
git --version

如果系统上安装的Git版本过低,请按下面的操作移除老版本的 Git ,并安装新版本的:

sudo apt-get remove git-core
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
cd /tmp
curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz
cd git-1.8.4.1/
make prefix=/usr/local all
sudo make prefix=/usr/local install

注意: ,如果要让系统可以接收邮件通知,你需要安装一个邮件服务器,默认的,不管是 Ubuntu 还是 Debian 都没有提供这样的软件,如果你需要安装,推荐你使用Postfix,你可以使用下面的命令它:

sudo apt-get install -y postfix

Ruby

移除老版本的 Ruby 1.8(如果存在的话):

sudo apt-get remove ruby1.8

下载并安装新的Ruby:

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
cd ruby-2.0.0-p353
./configure --disable-install-rdoc
make
sudo make install

然后安装 Bundler Gem:

sudo gem install bundler --no-ri --no-rdoc

系统用户

创建一个名为 git 的系统用户,GitLab 将以它来运行:

sudo adduser --disabled-login --gecos 'GitLab' git

GitLab shell

GitLab Shell 是专门为 GitLab 开发的用来进行SSH访问与项目仓库管理的软件,我们通过下面的方式安装它:

# 进入Git的家目录
cd /home/git
# 克隆GitLab Shell
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
cd gitlab-shell
sudo -u git -H cp config.yml.example config.yml

# 编辑配置文件,修改 gitlab_url 
# 比如: 'http://git.ofsz.com/'
sudo -u git -H editor config.yml

# 安装
sudo -u git -H ./bin/install

数据库

GitLab 支持以下数据库:

  • MySQL
  • PostgreSQL

你可以任选其一为 GitLab 使用,它们的配置方式如下:

使用 MySQL

# 如果服务器上还没有安装 MySQL,使用下面这一行命令安装它
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

# 运行MySQL安全安装脚本,为数据库 root 帐户设置一个密码
# 然后再一次输入你设置的密码以验证其正确性
sudo mysql_secure_installation

# 以 root 身份登陆数据库
mysql -u root -p

# 为 GitLab 创建一个新的用户
# 在运行下面的命令时,请将 $password 修改成为你真正的密码
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';

# 数据GitLab的产品环境数据库
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

# 为 Gitlab 的数据库用户设定必须的权限
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost';

# 退出MySQL
mysql> \q

# 尝试连接
sudo -u git -H mysql -u git -p -D gitlabhq_production

# 如果你看到下面这样的提示符则表示你的数据库配置是正确的
mysql> \q

# 现在可以进入GitLab的下一步安装了

使用PostgreSQL

# 如果服务器还没有安装 PostgreSQL,使用下面的命令安装
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev

# 登陆至 PostgreSQL
sudo -u postgres psql -d template1

# 创建一个Gitlab使用的PostgreSQL用户
template1=# CREATE USER git;

# 创建GitLab使用的数据库,并为用户设定必须的权限
template1=# CREATE DATABASE gitlabhq_production OWNER git;

# 退出PostgreSQL命令行
template1=# \q

# 尝试连接是否正确
sudo -u git -H psql -d gitlabhq_production

GitLab

我们可以将 GitLab 安装至使用一个你想安装的目录下,推荐你安装在 /home/git/ 目录:

cd /home/git

克隆 GitLab 源代码

# 克 GitLab 代码
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-4-stable gitlab

# 进入 Gitlab 目录
cd /home/git/gitlab

配置 GitLab

cd /home/git/gitlab

# 复制 Gitlab 的示例配置文件
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# 注意修改 `localhost` 至你真正的域名
# 如果你是从 Git 源代码安装的 Git,请修改 bin_path 至 /usr/local/bin/git
sudo -u git -H editor config/gitlab.yml

# 确定 Gitlab 可以写入 log/ 与 tmp/ 目录
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX  log/
sudo chmod -R u+rwX  tmp/

# 为 satellites 创建目录
sudo -u git -H mkdir /home/git/gitlab-satellites

# 为 sockets/pids 创建目录,并且确定 GitLab 可以写入这些目录
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo chmod -R u+rwX  tmp/pids/
sudo chmod -R u+rwX  tmp/sockets/

# 创建 public/uploads 目录
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX  public/uploads

# 复制 Unicorn 示例配置文件
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

# 开启集群模式,如果你需要一个支持高并发量的GitLab应用
# 比如在 2GB 内存的服务器上可以修改为 3
sudo -u git -H editor config/unicorn.rb

# 复制示例的 Rack attack 配置文件
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

# 配置 git 用户的全局设置,这对于你通过Web编辑的时候是十分有用的
# 编辑 user.email 为你在 gitlab.yml 中设置的邮箱地址
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input

__重要提示__: 确定 gitlab.ymlunicorn.rb 中的配置都是一样的。

配置 GitLab 数据库设置

使用 MySQL 数据库

sudo -u git cp config/database.yml.mysql config/database.yml
sudo -u git -H editor config/database.yml

使用 PostgreSQL 数据库

sudo -u git cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml

安装 Gems

cd /home/git/gitlab

# 使用 MySQL 数据库
sudo -u git -H bundle install --deployment --without development test postgres aws

# 使用 PostgreSQL
sudo -u git -H bundle install --deployment --without development test mysql aws

在这一步骤中,如果出现以下错误:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

很有可能是 MySQL 的开发包不存在,使用下面的命令安装一般都能解决问题:

sudo apt-get install mysql-client libmysqlclient-dev

初始化数据库,并激活高级功能

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

脚本运行完成之后,会得到如下的登陆帐户与密码:

login.........admin@local.host
password......5iveL!fe

安装 Init 脚本

下载 init 脚本(保存至 /etc/init.d/gitlab):

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab

让 GitLab 随系统启动而启动:

sudo update-rc.d gitlab defaults 21

设置 Logrotate

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

检测应用状态

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

启动 GitLab 实例

sudo service gitlab start
# 或者
sudo /etc/init.d/gitlab restart

编辑静态文件

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Nginx

Nginx 默认受GitLab官方支持。

安装 Nginx

如果你还没有安装 Nginx,可以使用以下命令直接安装它:

sudo apt-get install -y nginx

网站配置

下载 Nginx 默认配置文件

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/git.ofsz.com
sudo ln -s /etc/nginx/sites-available/git.ofsz.com /etc/nginx/sites-enabled/git.ofsz.com

编辑 配置文件以使得它符合你的配置

sudo editor /etc/nginx/sites-available/git.ofsz.com

重启Nginx

sudo service nginx restart

完成

至现在为止,所有的安装已经完成,我们使用下面命令再一次检测安装运行环境是否正确:

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

初始化登陆

登陆你设置的网络地址,使用下面的用户名与密码登陆:

admin@local.host
5iveL!fe

登陆成功之后,请立马访问你的个人资料页面修改这些信息。

说明

关于智者科技

智者科技是一家专业从事于基于最选进的互联网技术的一站式解决方案供应商,我们向客户提供网站建设、SEO优化、移动应用开发、电子商务平台开发、品牌网站建设、微信二次开发等。

智者的每一位成员都有着超过五年的行业从业经验,或是来自大型企业的优秀设计师,或是在行业内有很高名望的怪才,我们因爱好而组合到一起,我们的理想是在这杂乱无章的互联网技术环境下,为企业带来真正能提升自身品牌形象、帮助自身成长的互联网产品。

联系方式

  • 网站地址:http://www.ofsz.com
  • 电话号码:18374888188 / 13973333488
  • QQ号码:54778899 / 425602
  • 邮箱地址:54778899 [at] qq.com