标签归档:Linux

Ubuntu 14.04 安装Redmine及整合Git环境之快速偷懒篇

现在网上转来转去的文章太不靠谱,坑太多,填坑填得心很憔悴。
这篇文章在我填坑埋土大半天后写成,已经反复测试过3遍,整个过程只需要手动copy即可。
系统环境为 Ubuntu 14.04 LTS ,不保证其他版本依然有效,但仍可作为有效参考。

一、准备工作

# 首先升级软件包
sudo apt-get update
sudo apt-get upgrade
# 安装LAMP环境
sudo apt-get install tasksel
tasksel
sudo apt-get install phpmyadmin

二、安装 Redmine

sudo apt-get install redmine-mysql
sudo apt-get install redmine
sudo apt-get install imagemagick #可选
sudo gem install bundler
#安装后主要目录结构如下:
#redmine目录:/usr/share/redmine/
#配置文件目录:/etc/redmine/default/
#日志文件目录:/var/log/redmine/

三、安装Email

sudo apt-get install postfix #Select ‘Internet Site’

四、一些必要的权限配置

#程序启动时需要创建配置文件及log,给他权限
sudo chmod 775 /etc/redmine/default/
sudo chmod -R 775 /var/log/redmine/
sudo mkdir /usr/share/redmine/tmp
sudo chmod -R 775 /usr/share/redmine/tmp
#sudo mkdir /usr/share/redmine/public/plugin_assets # 如果需要安装plugin
#sudo chmod 775 /usr/share/redmine/public/plugin_assets
sudo mkdir /usr/share/redmine/files
sudo chmod 775 /usr/share/redmine/files
#为整合apache做准备
sudo chown -R www-data:www-data /usr/share/redmine

五、使用 webrick 测试

sudo ruby /usr/share/redmine/script/rails server webrick -e production
#默认端口是3000,例如访问http://git.mimiz.cn:3000/ 查看效果

六、配置Apache

sudo apt-get install libapache2-mod-passenger
sudo ln -s /usr/share/redmine/public /var/www/redmine
sudo vi /etc/apache2/sites-available/redmine.conf
#增加一行:RailsBaseURI /redmine
sudo vi /etc/apache2/sites-enabled/000-default.conf
#修改web根目录为:DocumentRoot /var/www
#增加一行:ServerName localhost
sudo vi /etc/apache2/mods-available/passenger.conf
#增加一行:PassengerDefaultUser www-data
sudo a2ensite redmine
service apache2 reload
sudo service apache2 restart

七、配置 Redmine

#创建config配置文件
sudo cp /usr/share/redmine/config/configuration.yml.example /etc/redmine/default/configuration.yml
#编辑config文件
sudo vi /etc/redmine/default/configuration.yml
#查找修改以下内容:

production:
    email_delivery:
        delivery_method: :sendmail
attachments_storage_path: /usr/share/redmine/files
scm_stderr_log_file: /var/log/redmine/redmine_scm_stderr.log

sudo service apache2 restart #重启生效

八、安装 Git

sudo apt-get install git git-core
#一些简单的设置
git config –global user.name “mimi”
git config –global user.email “mimi@mimiz.cn”
#查看设置
git config –list

九、为Redmine创建版本库

#为图方便我创建到Redmine目录中
sudo mkdir /usr/share/redmine/gitrepo
sudo mkdir /usr/share/redmine/gitrepo/project1
cd /usr/share/redmine/gitrepo/project1
sudo git init –bare
#给他权限,同样为了方便我设置777
sudo chmod -R 777 /usr/share/redmine/gitrepo/
sudo chown -R www-data:www-data /usr/share/redmine

十、在Redmine系统中设置版本库路径

在Redmine系统中,path 路径要填系统的绝对路径 /usr/share/redmine/gitrepo/project1
这里有个大坑,需要commit一次代码才能显示出来,否则总是显示404:
The entry or revision was not found in the repository

十一、本地连接Git

#这里的username是你ssh登录系统的username
username@server-ip:/usr/share/redmine/gitrepo/project1

十二、如果你想修改目录

#参考这篇文章:
http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_a_sub-URI
sudo vi /usr/share/redmine/config/environment.rb
在文件最后一行添加:
Redmine::Utils::relative_url_root = “/path”

———-我是无敌的终结线——–

搭建CentOS6+Apache+MySQL+PHP+PostFix服务器环境之快速偷懒篇

以目前最新版CentOS6为例,整个过程只需要手动copy即可。

一、配置网络

如果购买的云主机可以省略这步,如果自己安装的CentOS需要先配置IP地址,以静态IP为例:
配置网卡:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0

修改网关:

vi /etc/sysconfig/network
NETWORKING=yes
GATEWAY=192.168.1.1

修改DNS:

vi /etc/resolv.conf
nameserver 8.8.8.8

重启网络:

service network restart

二、增加国内yum源

cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
wget http://mirrors.aliyun.com/repo/Centos-6.repo
yum makecache
yum install yum-fastestmirror -y

三、提前配置防火墙

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT #for ftp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT #for ftp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT #for ftp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #for apache
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #for mysql
-A INPUT -p tcp --dport 12000:13000 -j ACCEPT #for ftp PASV
service iptables restart

四、安装Apache

yum install httpd
vi /etc/httpd/conf/httpd.conf
修改以下内容:
ServerName localhost:80
AllowOverride All
Options FollowSymLinks
DirectoryIndex index.html index.html index.php

创建虚拟主机:
vi /etc/httpd/conf.d/httpd-vhosts.conf
增加以下内容:
NameVirtualHost *:80
<virtualhost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
ServerName localhost
#ErrorLog “logs/localhost-error.log”
#CustomLog “logs/localhost-access.log” common
</virtualhost>
<virtualhost *:80>
ServerAdmin webmaster@domain.com
DocumentRoot /home/domain_com/public_html
ServerName domain.com
ServerAlias http://www.domain.com
#ErrorLog logs/domain.com-error.log
#CustomLog logs/domain.com-access.log common
</virtualhost>

设置Apache开机启动

chkconfig httpd on
service httpd restart

五、安装MySQL

yum install mysql mysql-server
/etc/init.d/mysqld start
chkconfig mysqld on

设置root密码:

/usr/bin/mysqladmin -u root password 'new-password'

六、安装PHP

yum install php
service httpd restart

目前yum安装的是PHP5.3.3

根据yum源选择需要安装的组件:

yum search php
yum install php-bcmath php-gd php-imap php-ldap php-mbstring php-mysql php-odbc php-pdo php-pear php-soap php-xml php-xmlrpc php-mcrypt
service httpd restart
service mysqld restart

七、安装phpMyAdmin

目前最新版本是4.2.4,但根据yum安装的php和mysql版本,应该安装4.0.10才更合适。
首先进入要存放phpmyadmin的目录

cd /var/www/html/
wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.0.10/phpMyAdmin-4.0.10-english.zip
unzip phpMyAdmin-4.0.10-english.zip

为apache配置phpmyadmin的虚拟目录:

vi /etc/httpd/conf/httpd.conf
Alias /phpmyadmin "/var/www/phpmyadmin/"
<Directory "/var/www/phpmyadmin/">
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

八、安装vsftpd

yum install vsftpd
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
#注意这里:如果chroot_local_user设置了YES,那么chroot_list_file是不被chroot的用户(可以向上改变目录)。
#如果chroot_local_user设置了NO,那么chroot_list_file是被chroot的用户(无法向上改变目录)。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pasv_max_port=13000 #这里是设置PASV使用的端口范围 和前面iptables规则对应
pasv_min_port=12000

创建chroot_list
touch /etc/vsftpd/chroot_list

创建ftp用户

useradd -d /var/www/html/ -g ftp -s /sbin/nologin -M ftpusername
passwd ftpusername
chown -R ftpusername /var/www/domain_com
chmod -R 755 chmod -R 755
service vsftpd restart
chkconfig vsftpd on

这时登录ftp应该会出现550错误,原因是没有配置SELINUX权限
因为是偷懒,直接关闭SELINUX:

vi /etc/selinux/config
SELINUX=disabled

临时关闭:

/usr/sbin/setenforce 0

九、安装Postfix

一般来说CentOS内置了Postfix
检查下看看:

yum -qa | grep postfix

yum安装:

yum install postfix

安装后命令行运行mail测试一下,就算没问题了估计也不能通过php的mail()发送邮件,因为httpd没有maildrop的权限

chmod 777 /var/spool/postfix/maildrop

其他可能存在的权限问题:

chown apache.apache -R /var/www/html
chown mysql.mysql -R /var/lib/mysql

完毕!

iptables 端口映射的一点经验

1.对于“内部实际提供服务的机器”如果和做端口转换的机器的内网ip在同一个网段内,并且“内部实际提供服务的机器”的网关就是做端口转换的机器的内网ip,这种情况下只需要一条语句:

iptables -t nat -A PREROUTING -d “对外公网ip” -p tcp –dport “对外端口” -j DNAT –to “内部实际提供服务的ip”:”实际提供服务的端口”

2.对于“内部实际提供服务的机器”如果和做端口转换的机器的内网ip不在同一个网段内,或者“内部实际提供服务的机器”的网关不是做端口转换的机器的内网ip,这种情况下就需要条语句:

iptables -t nat -A PREROUTING -d “对外公网ip” -p tcp –dport “对外端口” -j DNAT –to “内部实际提供服务的ip”:”实际提供服务的端口”

iptables -t nat -A POSTROUTING -d “内部实际提供服务的ip”-p tcp –dport “实际提供服务的端口” -j SNAT –to “运行iptables机器的内网ip”

3.端口转发其实就是做DNAT转换,在做DNAT转换的那个机器上(也就是iptables运行的那个机器)有记录相关转换的对应关系,回去的包如何转换用户不用管系统会处理。

4.做端口转换的情况下,iptables 的3条链中nat的链才能对端口进行防火墙过滤,其他的链无法控制。

5.未完待续…… :mrgreen:

忘记Root密码的解决办法

忘记了Linux Root密码怎么办?
通过Linux单用户模式来修改密码吧。

以RHEL4.6为例,进入GRUB引导菜单,
按”e”键进入编辑模式,选择”kernel /vmlinuz-2.6.9-67…”,
再按”e”键,在文本结尾处输入”single”,回车,
按”b”键让GRUB引导单用户模式。
引导成功后,您会看到Shell提示为:
sh-3.00#
用passed命令来修改密码吧!
键入:
sh-3.00# passwd root
输入两遍新口令后reboot一下,成功!

就是喜欢Linux

(纪念2002-2004年盲目崇拜Linux的疯狂时光)

记得第一次接触Linux是在99年,由于好奇,在爱机上安装了简化版的Unix,看着一行行的命令提示符头昏眼花的,于是心有不甘安装了当时广为流行的RedHat Linux.当时做为菜鸟的我来说,Linux是那么的高不可攀,无从下手。不会驱动,无法配置中文,图形界面速度超慢,就觉得在windows那里得来的有关计算机的经验好像完全用不上。而喜欢Linux是在阅读了大量关于Linux的文章之后才渐渐对它有所了解,而后日久生情,深深的喜欢上了它。

有很多人会问Linux到底有什么优点,我不知道,我会回答我不知道。Linux安装复杂,可用的软件比起Windows也少得可怜,如果你用Linux只是办公、玩游戏,那么推荐你用XP,因为它有良好的兼容性和稳定性。而这样你永远也只是一个Windows用户,Windows系统永远是属于微软的。Linux却不同,它是一个开源的系统,你可以看到它的内部结构,学习它的工作原理,并根据自己的个性加以改造,它会成为属于你自己的系统。所以我喜欢“`

喜欢Linux,因为它代表了自由、开放、创新、共享的互联网精神。然而,在堆积如云的书籍和众口一词的说法中,都说是乔布斯和比尔盖茨创造了PC产业。事实上,他们在PC产业腾飞的初期,的确起到了力挽狂澜的作用。但是,PC业的真正缔造者却是众多无名的计算机业余爱好者。Linux就是他们智慧的结晶。

记得国外某著名杂志,将Linus列为软件业未来的新偶像,将取代盖茨。确实,Linus神话正在迅速掩过盖茨神话。过去人们往往将盖茨渲染成一个天才程序员,但实际上这多是虚构的故事。盖茨的代表作是他和艾伦在别人基础上编写的Basic语言,1K大小,代码水平一般。而Linus则一下子就端出了一个操作系统Linux,150多万行的程序,比微软4000多名高薪程序员编织出来的数千万行的Windows NT还要雅致,还要可靠。后来,Linus秉承了自由软件的传统和思想,主张源代码公开,使程序员和用户一起融入产品开发中,可以根据自己的需要修改、完善。而且用户可以自由拷贝,充分享受信息技术革命带来的好处。正是因为这样,大量的优秀程序员参与进了Linux的开发行业使之得到了快速的发展,在短短几年中如日中天。

比尔.盖茨曾公开表示,他根本没把Linux放在眼里,他预测Linux只会起一些有限的作用。而现在,微软真正感到日渐成熟的Linux带来的压迫。这就是自由共享精神的力量所在,Linux代表了这种精神,它唤回了业界久违了的PC精神,是PC和互连网精神的又一次发扬。总之,我喜欢Linux,喜欢自由、开放、创新的精神,发自内心的喜欢,喜欢的轰轰烈烈、一塌糊涂““`