分类
Linux

CentOS 7 64bit Minimal安装后的初步10项优化和配置(更新epel和remi源安装)

CentOS官方于2014年7月7日发布64位CentOS 7.0.1406开始,不知不觉已快半年了。也已经有越来越多的软件开始支持CentOS7了。ITGeeker也尝试将越来越多的服务架构于其之上。

CentOS 7是一个大版本更新,应该有不少提升。连服务的启动停止命令也有了很大的变化。

CentOS 6及之前:

service httpd restart

CentOS 7:

systemctl start httpd.service

centos7

1. 更新系统并安装必备的组件

yum upgrade or yum update
yum install wget telnet perl perl-devel net-tools kernel-devel 
yum groupinstall "Development tools" -y

安装这些之后会大大方便今后安装其他应用是碰到的依赖包问题。其中net-tools是为了提供dig, nslookup, ipconfig等命令,方便配置CentOS 7初始化网络环境。如果不安装这个,在CentOS 7中,可以使用ip addr命令来代替ipconfig进行当前ip地址查询。

2. 添加源(repository)REMI & EPEL

yum安装时,要想安装比较新的版本软件,可以试试这两个源。都有一些国内镜像,我添加的EPEL是阿里云镜像的。

这是适合CentOS 6的源

cd /tmp && wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm && wget http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm

真正适合CentOS 7的epel和remi源

rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

如果国外没法用,那用国内的镜像源

#中科大镜像源
rpm -Uvh http://mirrors.ustc.edu.cn/centos/7.0.1406/extras/x86_64/Packages/epel-release-7-5.noarch.rpm

#浙大源
rpm -Uvh http://mirrors.zju.edu.cn/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

#上海交大源
rpm -Uvh http://ftp.sjtu.edu.cn/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

#sohu镜像源,更新比较慢 
rpm -Uvh http://mirrors.sohu.com/fedora-epel/7/x86_64/e/epel-release-7-2.noarch.rpm

使用方法:

yum --enablerepo=remi install php mysql php-mysql mysql-server phpmyadmin 

或者

yum --enablerepo=epel install php mysql php-mysql mysql-server phpmyadmin

3. FQDN配置,全称Fully Qualified Domain Name

有些软件,特别是邮件系统对这个要求比较高。

vi /etc/hosts

127.0.0.1 localhost.localdomain localhost geeker
::1 localhost.localdomain localhost geeker

vi /etc/sysconfig/network
HOSTNAME=geeker

设置好之后,查询是否完整

hostname -f

4. 关闭Selinux

这是Centos系统的安装机制,单单往往导致很多软件无法正常安装,让我们关掉它吧!

/etc/selinux/config
在 SELINUX=enforcing 前面加个#号注释掉它
#SELINUX=enforcing
然后新加一行
SELINUX=disabled
#SELINUXTYPE=targeted #注释掉这行

保存,退出,重启系统,搞定。

不想重启,可以使用

setenforce 0 #使配置立即生效

5. CentOS 7的防火墙关闭和iptables安装

CentOS 7.0默认使用的是firewall作为防火墙,但可能一下子很难适应,让我们先改回原先的iptables防火墙吧!

关闭CentOS 7的firewall:

systemctl stop firewalld.servic #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

安装iptables防火墙

yum install iptables-services #安装
vi /etc/sysconfig/iptables #编辑防火墙配置文件

启动iptables防火墙

systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

6. 本地SMTP邮件发送功能(Postfix)

很多软件和服务可以用到这个功能给用户发送通知邮件,需要配置一下。

最好加上一个认证,使用Postfix + Saslauthd

yum remove sendmail   #如果有原先的sendmail,先移除
yum install postfix   
vi /etc/postfix/main.cf   #编辑postfix主配置文件
useradd itgeeker   #增加用户
passwd itgeeker   #设置用户密码
yum install cyrus-sasl*

/bin/systemctl restart saslauthd.service && /bin/systemctl restart postfix.service   #启动postfix和saslauth服务

最好用telnet测试一下,前面安装的telnet就发挥作用了。

telnet localhost smtp
ehlo localhost
mail from:
rcpt to:<alanljj@qq.com>
data
Welcome to itgeeker mail server
.
quit
#查看邮件内容
less /var/log/maillog
cd /root/Maildir/new #注意M要大写
ll
cat ***** #*代表列出的文件名,可以查看新的邮件内容
vi /var/log/maillog
Tips小技巧:
有时候telnet登陆后就退不出来了ctrl+c也不管用此时可以使用ctl+] 切换,然后quit退出。

7.  CentOS 7时间同步及更改

和之前基本一样:

date

yum install ntpdate -y
ntpdate time.windows.com && hwclock -w

#连网更新时间,如果成功,将系统时间,写入BOIS

hwclock -w 或 hwclock --systohc

date -s 20150119
date -s 17:28:00

8. Shell登陆操作显示中文乱码问题(和CentOS 6一样,问题还是存在)

方法一:

vi /etc/sysconfig/i18n 文件中修改LANG的设置为:
#LANG="en_US.UTF-8"
#SYSFONT="latarcyrheb-sun16"
LANG="zh_CN.GBK"
LANGUAGE="zh_CN.GBK:zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

然后在/etc/profile文件中增加export LC_ALL=zh_CN.GBK内容。使得全部的LC*都统一了。

重启主机

方法二: 更改shell的显示语言

ITGeeker技术奇客使用的是xshell,直接在当前链接的属性-终端-选择UTF-8为编码即可。如果你经常使用变换使用shell,那就用第一种方法吧。

9. FTP服务安装(vsftpd安装)

 

为主机开通FTP服务还是非常有必要的,我们为主机快速安装vsftpd吧。

可以参考详细教程 CentOS6.5 64bit如何安装配置FTP服务(vsftpd)

yum install vsftpd -y
vi /etc/vsftpd/vsftpd.conf

#记得CentOS 7启动命令有所不同

systemctl restart vsftpd
systemctl enable vsftpd

10.  Vmware Tools安装

如果你使用的是虚拟机,那最好装一下Vmware Tools

 

先点击Vmwar虚拟机管理界面菜单,虚拟机–安装Vmware Tools安装。

mkdir /mnt/cdrom && mount -t iso9660 /dev/cdrom /mnt/cdrom && cd /mnt/cdrom && cp VMwareTools-9.6.2-1688356.tar.gz /root

mount -t iso9660 /dev/cdrom /mnt/cdrom && cd /mnt/cdrom && cp VMwareTools-9.6.2-1688356.tar.gz /root

cd /root && tar zxvf VMwareTools-9.6.2-1688356.tar.gz && cd vmware-tools-distrib

安装vmware tools
./vmware-install.pl

中间的问题全部选择默认,可能会有错误提示,基本没啥问题。

依赖包,如果有需要 yum -y install perl perl-devel

请使用你的版本代替VMwareTools-9.6.2-1688356.tar.gz

分类
Piwik 技术奇客

如何安装开源网站分析工具Piwik Centos 6 64-bit

因为悲催的Google Analytics在国内越来越不好用,添加谷歌分析的代码会严重拖慢网站的打开速度。国内有没有什么好的网站流量分析工具,国外的开源网站分析工具Piwik是个不错的选择,而且原生支持中文。

piwik_app

Piwik最大的特点便是容许用户将这款网站分析工具安装在自己的服务器上,使用者独立拥有自己的统计数据,而不是寄存在服务商那里,这样就可以更灵活的使用统计数据,不用担心数据丢失问题, 数据安全,反应速度都比谷歌分析好。

Piwik的官方Demo:http://demo.piwik.org

安装完成之后会有一段Js代码,将这段代码贴至Body标签之前就可实现对相应页面的跟踪。

Piwik在Centos上的安装方法:

第一步,首先要确定安装好PHP环境和MYSQL数据库。

CENTOS6 64-BIT如何安装PHP

第二步,下载piwik安装包

cd /tmp
wget http://builds.piwik.org/piwik.zip

第三步,解压缩piwik到你的apache或其它网站服务的目录

unzip -o piwik.zip /www/html

第四步,设置好httpd的网站绑定和设置

vi /etc/httpd/conf/httpd.conf

第五部,打开piwik的网址,进入配置向导

http://server-ip-address/

 可能需要解决的问题:

  • 安装pdo_mysql包

Piwik是一套基于Php+MySQL技术建的开源网站访问统计系统,前身是phpMyVisites。Piwik可以给你详细的统计信息,比 如网页 浏览人数, 访问最多的页面, 搜索引擎关键词等等,并且采用了大量的AJAX/Flash技术,使得在操作上更加便易。

Piwik还采用了插件扩展及开放API架构,可以让开发人员根据 自已的实际需求创建更多的功能.Pwiki容许用户将这款网站分析工具安装在自己的服务器上,而不用寄存在别的服务商,这就是Piwik自称为实时网站分析工具的原因,不用像谷歌分析至少需要几个小时才能更新数据。

分类
PHP

Centos6 64-bit如何安装PHP

作为LANMP组件的重要组成部分,学会快速安装和测试PHP显得非常重要。

php

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收了C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。

Centos Shell底下安装和测试PHP

# yum install php -y

安装非常简单,但要是想安装比较新的稳定版本PHP 5.4.30,可能需要更改CentOS源Repository进行安装,ITGeeker建议你参考:

 在 CENTOS 6 上安装 PHP 5.4.30

据说新版本的PHP比原先的版本速度高出将近一倍。

测试PHP是否安装正确

1. 建立测试文件 “testphp.php”,放在Apache网站服务的根目录

# vi /var/www/html/testphp.php

2. 添加以下内容:

<?php
phpinfo();
?>

3. 重启httpd服务

# service httpd restart

4. 打开页面

http://server-ip-address/testphp.php

testphp

这里会显示关于PHP版本等所有的详细信息。

如果你想让你的Mysql支持你的php,只要安装php-mysql就可以了

# yum install php-mysql -y

如果现在打开testphp.php文件就会看到mysql module的所有信息。

分类
技术奇客

ITGeeker技术奇客改版 原创&分享

在计算机专业毕业10年后,忽然对IT产生了浓厚的兴趣,这就是Geeker产生的缘由。在经历将近5年的摸索,逐渐地浮现了FreeGeeker|自由奇客ITGeeker|原创与分享Geeker Consulting|奇客顾问

从2009年开始在淘宝上购买99元一年的虚拟主机开始,后来又迁移到Godaddy的新加坡Delux主机空间,到现在有3个阿里云的云端主机,期间的折腾真是百感交集。最初折腾虚拟主机只为搭建一个网站,当网站发布信息时可以自动同步到各个SNS端,这样就可以偷懒不用发微博了。

通过选择Wordpress来搭建基础网站,最终实现了同步到各大SNS网站的功能,期间还赞助了水脉香烟的同步插件。最后购买了他的插件来实现SNS同步。这个功能也为我后来运营的奇客顾问提供坚实的平台基础。互联网时代给技术专家们提供了很多的类似的机会和创造空间,在我看来这些专家都是ITGeeker,也就是技术奇客的由来。
itgeeker300 早在2000年左右就听说未来的IT开发就跟搭积木一样,但迟迟没有感受到,在经历这几年的摸索之后,发现互联网的开源软件已经相当发达,用来搭积木已绰绰有余了。真是感谢开源精神!以后ITGeeker会侧重于开源软件的安装与使用经验分享。

从便宜的虚拟主机到Godaddy的迁移是为了规避网站备案的繁琐,又因为网络的封锁,无奈的迁回国内。但回到祖国怀抱之后,发现国内的主机也以日新月异,使用起来非常方便,加上网络顺畅与高速,逐渐把Godaddy的网站悉数迁回国内。有了好的主机和网速,在阿里云的基础上,折腾了不少的开源软件,也熬了不知多少个深夜。网上的资源颇为丰富,但要找到适合自己环境的方法和指南,有时也颇为周折,需要细读官方艰涩的Wiki,也要翻越诸多的论坛资料,还要不断的尝试似是似非的解决方案,最终找到恰当的解决方案。ITGeeker将会与您分享这些宝贵的经验。

回想一下,ITGeeker目前已成功部署的10个重要的开源软件有:

  1. WordPress,著名的开源网站平台,开发了很多网站,也有成功为猎头公司量身定制的商用网站(http://thepaliogroupsa.com)
  2. OpenERP(现改名为Odoo),开发和定制了适合猎头公司使用的系统,并以成功商用(http://geekererp.com)
  3. Zimbra,开源电子邮件系统,仅次于Exchange和Lotus Note。成功开发并已商用(https://mail.geekerconsulting.com.cn)
  4. Owncloud,私有云架设,已成功架设并商用(http://cloud.geekerconsulting.com)
  5. Mibew Messenger,在线客户问答系统,成功架设并商用(http://im.geekerconsulting.com)
  6. Alfresco,企业文档管理系统,成功安装,小范围使用当中。
  7. OpenLDAP,使用Zimbra内置的轻型目录访问协议。已链接OpenERP,OwnCloud,Zimbra(当然啦)和Wordpress,只要建一个账户就可登录所有相关服务。
  8. Samba4,成功安装并启动SMB和NMB服务,尝试和LDAP建立链接当中。
  9. Piwik开源网站访问分析系统,已商用(http://ga.itgeeker.net/)
  10. Tiny Tiny RSS开源阅读器,自己个人使用中。

其它开源的比如vsftpd, MediaWiki, webadmin, phpmyadmin, lamp, mysql, bind等常用型的开源软件的使用。

其中也有一些失败或最终放弃不想使用的开源软件。在选择邮件系统Zimbra时尝试过的Zarafa, Citdel, iredmail, Kolab, 包括相关的Postfix, Roundcube的配置等等。。。

好了,回到主题。为什要改版?

ITGeeker一直未能很好的定位,内容始终不多而且有些杂乱。在学习开源系统过程当中,遍访了诸多的技术Geeker的博客,都以简洁为主,提供使用的技术精华才是根本。本着追求Geek极客(本人称为Geeker奇客)的精神,决定效仿Geek精神:“原创与分享”

首先ITGeeker觉得更改从建站之处就使用的知更鸟主题,采用Wordpress自带的twentyfourteen主题,官方原生,并在此主题上进行更改,最终拥有ITGeeker自己的主题。

分类
技术前沿

开发语言Ruby和PHP,.NET 和 Java的比较

请注意:这是一篇主观意识的文章。它的目的并不是要说服你使用或者不使用Ruby,或者其他任何技术。这篇文章所涉及到的环境是 Web 开发,而不是通用的编程。我想要通过这篇文章解释这些年来非 Ruby 社区对于 Ruby 的一些看法,并且提醒人们以开放的心态来面对新的事物。敬请欣赏!

我最近做了一个15分钟的演讲“我喜爱的 Ruby 语言以及它的生态系统”。很显然我的言论让忠实的 PHP,.NET 和 Java 开发者感到不安。他们对 Ruby 不是好奇,而是感觉我在批评他们热爱的技术。

既然这不是宗教,而是关于如何面对新的事物,我认为我们应该列出所有其他人认为不使用 Ruby 来做 Web 开发的理由。

1. Ruby 并没有 Java 或者 PHP 那么成熟

这是对的。Java 和 PHP 被用于 Web 开发要比 Ruby 早很多。但是你知道吗?我姥姥比 Ruby 要年长很多,但是我不认为我姥姥可以做 Web 应用。在 Web 时代,技术每几年就要更新一次,老和成熟不一定就有优势。在很多方面,Ruby 社区吸取了其他技术的教训,所以能做的更好,相比碎片化的 PHP 社区来讲。

如果你考察一门技术的标准只有时间的话,你从一开始就错了。

2. Ruby 的性能不如 .NET 或者 Java

你又说对了!除此之外,Ruby 还比 Erlang,Lua,C++ 等等都要慢,但是你不使用 Erlang 或者 C++ 是吗?Web 开发并仅仅是性能。你的应用不可能在上线第一天就有上百万的用户。你需要编码,测试,发布,并且循环这个过程,你需要快速迭代。所以,一开始开发效率大于运行效率。老拿性能来说事是愚蠢并且错误的。Ruby 的应用也能像 .NET 或者 Java 应用那样横向扩展。

3. Ruby 在 Windows 下工作的不好

这是一定的。Windows 在很多方面是伟大的,但不包括开源的 Web 开发。Ruby 以及很多源自 *NIX 的伟大技术都不能在 Windows 下工作的很好。与其撞破脑袋抱怨你已经习惯了 Windows ,不如试试安装 Linux ,让生活继续。技术的魅力在于学习新的事物,而不是呆在熟悉的环境里面一辈子。

4. Ruby 没有 PHP 那么流行

的确是这样的。技术并不是流行比赛,否则的话我们应该都用 JavaScript 来开发(目前在 Github 上最受欢迎的语言)。技术是一种达到目的的手段。流行度只是衡量使用率,社区活跃度的一个指标,用来帮助人们判断技术的可用性,稳定性和支持程度。

5. Ruby 社区高傲并且势力

嗯……这么说吧 Java 社区是顽固的,.NET 社区是封闭的,Perl 社区是古怪的,C++ 社区是一群抽烟的中年人。

我遇到过各种各样不同背景的开发者。我并不是说 Ruby 没有势力的人,但是绝对不是主流。我想很多时候是这样的一种情况:因为 Ruby 是相对比较新的技术,所以一些简单的任务例如和第三方的测试,开发,迭代都相对容易。所以当 Ruby 程序员称赞这些事情使用 Ruby 更容易的时候,他们并不是在看低其他技术,而只是在表述一种更简单的开发方式。

6. Ruby 非常顽固,不自由

这个观点不仅仅是错误,简直就是愚蠢。让我问你一个问题:编写一个 HTTP 路由组件或者图像处理类库有多少种方式?

约定优于配置,最佳实践和清晰的编码标准不会让开发者不自由。相反,它让开发者专注于重要的事情,例如业务逻辑。

Ruby 固有的约定驱动的开发方式帮助开发者提高了开发效率,但同时尊崇社区驱动的标准,使得样板文件最小化。

有趣的是,Ruby 是我知道的唯一一门语言,可以让你在任何地方,任何时间更改任何东西。人们很喜欢这些标准和约定,应为它让他们更有效率。

7. Ruby 没有 Java 和.NET 可靠

Windows 没有 NetBSD 那样安全!!!如果你考察可靠性的唯一标准就是类型检查的话,你看事情的角度就错了。

虽然静态语言严格的类型检查和编译属性让他们获得了更好的性能,但是,坦白说,在你编程生涯中,有多少 bug 是应为错误的变量类型引起的?

Ruby 用来解决这个问题的方式是宣扬测试文化。也就是说,你的代码的可靠性跟你的测试挂钩,而不是你的方法声明。

8. Ruby 缺少企业级的支持

恐怕你孤陋寡闻了吧?听说过 Engine Yard吗?没有?他们提供非常出色的企业级 Ruby 支持。

所谓的企业级支持是很久以前企业通过绑定用户销售昂贵的,可靠的,最新的技术来获得收入。但是你必须这么做吗?难道你是如此的无能,因为缺少所谓的“支持”就不去选择一项合适的技术?

让我问你一个问题:你认为微软需要多久才能发现,修复,承认,并且发布一个IIS的安全补丁?再想想,你真的认为金钱驱动的垄断企业关心你 Web 应用的安全性吗?

在以开源代码为代表的技术创新时代,为了所谓的支持选择一个封闭的,垄断的技术,就是选择了落后所有人一步。正大眼睛看看这些公司吧,Basho, Redhat, Canonical, 10gen, Cloudera, Engine Yard,他们提供开源的技术,并且提供企业级的付费支持。

9. Ruby 没有很好的可扩展性

这是很老的话题,要追溯到 Twitter 刚刚开始的时候。当 Twitter 飞速发展的时候,他们必须修改 ActiveRecord 中深层次的代码以获得在 Rails 中支持多个 MySQL 数据库。不幸的是,人们混淆了 Ruby 和 Rails。在 Twitter 这个案例中忽略了 Twitter 的快速成长得益于 Rails 的易于使用和快速开发。

任何成功的应用到最后都会遇到扩展性问题。Facebook 最后把 PHP 编译成了 C++,Twitter 转向了 Scala, Youtube 依然使用 Python,Apache 和 MySQL。没有任何两个 Web 应用是完全一样的,我们应该从成功的 Web 应用中学习经验,而不是上来就宣布某项技术的扩展性强于另外一项技术。

10. 寻找有经验的 Ruby 程序员很困难

这倒是真的,但取决于你在世界的哪个地方。比如在 Israel,.NET 和 PHP 盛行,所以找到好的 Ruby 程序员是很困难的。但是你知道吗?在那里更难找到有经验的 Javascript 开发者!

非要较真的话,我也可以说找到好的 PHP 程序员比 Ruby 更困难。因为 PHP 社区分散,用户生成的文档和不一致的 API 是的学习难度提高。

不要因为困难而放弃一样好东西,你可以自己培养 Ruby 开发者。我的意思是,如果你认为 Ruby 是正确的技术,那么为什么不多投入一些呢?