终于拿到驾照了
去年十一月一号考的理论,到今天为止一年堆28天,终于算是个司机了,虽然驾照还需要三天左右才寄到手里,不过也已经是确定了,本来应该是刚好一年就能拿到的,上次考科目三是11月1号,如果过的话就是刚好一年的时间,但是没过,没过的原因很简单,感觉自己开得太好了,所以就连靠边停车都没有打转向灯了。
唉,以前的事情就不用再想啦,这种算是一辈子的事情,以后就永远都是一个司机了,也应该庆祝一下……不过没有什么可庆祝的……
去年十一月一号考的理论,到今天为止一年堆28天,终于算是个司机了,虽然驾照还需要三天左右才寄到手里,不过也已经是确定了,本来应该是刚好一年就能拿到的,上次考科目三是11月1号,如果过的话就是刚好一年的时间,但是没过,没过的原因很简单,感觉自己开得太好了,所以就连靠边停车都没有打转向灯了。
唉,以前的事情就不用再想啦,这种算是一辈子的事情,以后就永远都是一个司机了,也应该庆祝一下……不过没有什么可庆祝的……
准备慢慢的把自己的台式机的操作系统从Windows转移到Linux下面(OpenSUSE或者也可能是Ubuntu),所以最近总是在寻找一些Windows下必做的工作软件在Linux下面的替代软件,其实说实施,除了店里面使用的百胜BS3000+这个ERP系统必须使用Windows外,其它的都已经没有什么需要在Windows下面工作的了,而这个软件我可以直接连程连接上服务器使用,或者在Linux下面安装VirtualBox虚拟机安装Windows系统也可以。
如果使用远程连接的话,我一直使用TeamViewer也可以解决问题,另外我希望使用的就是一个在Linux下面连接Windows远程桌面的软件了 RDesktop,该软件是直接源码发行的,我写这篇文章时最近版本是1.7.1,可能你下载的版本与我这里使用的不一样,但是安装和使用方法是一样的。
使用下面命令进行安装:
tar zxvf rdesktop-1.7.1.tar.gz
cd rdesktop-1.7
./configure
make
make install
make clean如果你使用的是Ubuntu/Debian,还可以像下面这样的安装:
apt-get install rdesktop对于CentOS还可以这样安装:
yum install rdesktop安装完成之后,会添加一个 rdesktop 命令,使用方法为:
rdesktop [options] server[:port]例如我的服务器地址是 *192.168.1.10*,并且要以32位色彩(本地连接的速度是很快的,所以使用了更高的颜色),那么像下面这样的:
rdesktop -f -a 32 192.168.1.10关于 rdesktop 更多的使用方法可以运行下面这行命令:
man rdesktop这里还有一个很有趣的使用方法,那就是让RDesktop结合Seamlessrdp使用,Seamlessrdp可以让你在Linux直接执行Windows桌面中的应用程序,就好像直接运行在Linux的源生程序一样,其实现方法如下:
rdesktop -A -s "C:seamlessrdpseamlessrdpshell.exe C:Program FilesInternet Exploreriexplore.exe" <SERVER IP>:3389 -u administrator -p <ADMINISTRATOR PASSWORD>关于 Seamlessrdp 的使用,还可以查看一下下Ubuntu Wiki
Could not find X Window System headers/libraries To specify paths manually, use the options –x-includes and –x-libraries”
# yast2 -i“configure: error: no acceptable C compiler found in $PATH See config.log' for more details.”
# yast2 -i gcc“ERROR: Could not find OpenSSL headers/libraries. To specify a path manually, use the Cwith-openssl option”
# yast2 -i openssl-devel# yast2 -i libopenssl-devel删除了运行了100多天之后滴 Ubuntu 服务器之后,Linode里面还有40美金的余额没用完(这个是9月份的时候那个Linode的活动送的,没法儿取出来,也不能转移到其它的Linode帐户里面去,只能消费完),这段时间就尝试着玩玩各种各样的Linux发行版吧,基本上都是Linode提供的,最开始就选择OpenSUSE是因为昨天看到腾讯的开放平台提供的服务器基本上都是OpenSUSE的。
OpenSUSE还只是在北京的时候看公司里面一同事玩过,后来也就只是在自己的虚拟机里面装过一两回,不过从来没有深入的去研究过,我玩Linux基本上的作用都是做网站的服务器之用,所以,最开始我就会去了解如何在某一个Linux发行版上面更好的配置安装LEMP环境。
在本文中,我使用 opensuse.antusoft.com 作为服务器的域名,IP地址还是旧服务器的 50.115.16.100,这可能与你的情况有些不一样,不过也不影响整个安装。
首先,我们像下面这样的安装 MySQL 5:
yast2 -i mysql mysql-client mysql-community-server接着我们为 MySQL 创建系统启动链接(这样一来,MySQL 就会随着系统启动而启动),再启动 MySQL 服务器:
chkconfig -f --add mysql
/etc/init.d/mysql start我们可以像下面这样的来确定是否已经运行成功:
netstat -tap | grep mysql这可能会输出像下面这样的内容:
cox: ~ # netstat - tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 8924/mysqld
cox: ~ #如果没有出现类似上面这样的信息,你可能需要打开 /etc/my.cnf 然后注释掉 skip-networking 选项:
[...]
#skip-networking
[...]修改配置之后,重起你的 MySQL 服务器
/etc/init.d/mysql restart(如果你遇到*You do not have a valid vim binary package installed. Please install either “vim”, “vim-enhanced” or “gvim.”*,请运行下面这行命令来安装 VIM 之后再尝试修改。
yast2 -i vim运行下面这行命令来设置 MySQL 服务器的 root 帐户密码:
mysql_secure_installation否则的话,任何人都可以访问你的 MySQL 数据库。进行安装设置时,脚本会询问你一些问题,你只需要回答是(Y)或者否(n),下面是我的选择:
我先使用 search 或者 se 搜索最新的 Nginx 软件包:
cox:~ # zypper se nginx现在得到的最新的Nginx版本是 Nginx-1.0,我也就安装这个版本的了,像下面这样安装它:
yast2 -i nginx-1.0与 MySQL 一样创建 Nginx 的启动链接,然后启动 Nginx
chkconfig -f --add nginx
/etc/init.d/nginx start启动之后,我们就可以访问 http://50.116.15.100 访问,Nginx 会返回一个 403 Forbidden 错误,这证明Nginx已经安装成功,这是因为在 OpenSUSE 12中,Nginx 的默认文档根目录是: /src/www/htdocs,而这个目录下面默认又是没有索引页的。

我们可以让 PHP5通过 PHP-FPM 在Nginx下工作(PHP-FPM:FastCGI Process Manager)是一个添加了一些特别功能的PHP的FastCGI实现,像下面这样安装:
yast2 -i php5-fpm在运行 PHP-FPM 之前,我们将 /etc/php5/fpm/php-fpm.conf.default 修改为 */etc/php5/fpm/php-fpm.conf*:
mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf然后打开 /etc/php5/fpm/php-fpm.conf :
vi /etc/php5/fpm/php-fpm.conf然后 error_log 为 /var/log/php-fpm.log 同时去掉 pm.min_spare_servers 与 pm.max_spare_servers 两个选项前的注释并修改为下面这样的值:
[...]
error_log = /var/log/php-fpm.log
[...]
pm.min_spare_servers = 5
[...]
pm.max_spare_servers = 35
[....]保存刚才所作的修改,然后创建系统启动链接,并系统 PHP-FPM:
chkconfig -f --add php-fpm
/etc/init.d/php-fpm startPHP-FPM 是一个由 /etc/init.d/php-fpm 创建的守护进程,它运行一个 FastCGI 服务器并监听 9000 端口,你可以看到下面这样的信息:
cox:~ # netstat -tapn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9473/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3407/sshd
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9912/php-fpm.conf)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8924/mysqld
tcp 0 0 50.116.15.100:22 113.240.81.181:16158 ESTABLISHED 8184/0
tcp 0 300 50.116.15.100:22 113.240.81.181:18023 ESTABLISHED 9937/1
tcp 0 0 :::22 :::* LISTEN 3407/sshdNginx的配置都由 /etc/nginx/nginx.conf 文件定义,我们现在打开它:
vi /etc/nginx/nginx.confNginx的文档是十分简单的,你可以Google一下如何对Nginx进行配置,在我的这个网站里面,我的配置是下面这样的:
首先,我提高了 worker_processes 到5,同时让 keepalive_timeout 为 2
[...]
worker_processes 5;
[...]
keepalive_timeout 2;
[...]在Nginx中,虚拟主机是在 server {} 容器中定义的,我修改了默认的虚拟主机为下面这样的:
[...]
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /srv/www/htdocs/;
index index.php index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /srv/www/htdocs/;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
root /srv/www/htdocs;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/htdocs$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
deny all;
}
}
[...]保存所做的修改,然后重新启动 Nginx
/etc/init.d/nginx restart接着我们创建一个 info.php 文件,并保存到 /srv/www/htdocs 目录中:
vi /srv/www/htdocs/info.php它的内容是:
<?php
phpinfo();
?>现在我们打开 http://50.116.15.100/info.php 即可看到下面这样的画面了:

要让PHP支持MySQL,我们只需要安装 php5-mysql 包即可,我在这里还安装了一些其它的模块,这些都是很有可能在我的应用里面会用到的,像下面这样:
yast2 -i php5-mysql php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-pear php5-sysvmsg php5-sysvshm安装完成之后我们需要重新启动 PHP-FPM:
/etc/init.d/php-fpm restart重新启动之后再去查看 http://50.116.15.100/info.php,向下滚动网页直到 Modules 章节,你应该就可以看到现在PHP所支持的模块了,当然,包括了MySQL。
我一般使用 phpMyAdmin 来管理数据库,同时使用 WordPress, Drupal, TextPattern 等 基于PHP 语言的CMS程序,我这里就安装了 phpMyAdmin:

从昨天开始就在做新服务器的配置,到现在全部转移完成,花了一个晚上哈,只是昨天晚上还是睡了觉,也没有必要通宵搞,最主要是这一次我使用了自己修改过后的LEMP安装SHELL脚本,对 LNMP.ORG 的脚本做了自己必要的优化,同时对 vhost.sh 也做了文件也做了一些修改。
现在的 vhost.sh 脚本在创建虚拟主机的时候,会询问该网站是属于哪一个用户的(我现在还没有做用户是否存在的判断,准备以后有时间再加上,如果不存在的话就创建一个新用户),现在还是只允许 root 用户使用,我是准备以后让我服务器上面的所有用户都可以直接使用它。比如:名为 cox 的用户使用的话会直接在 /home/cox/websites/ 目录下面创建网站目录,最终的目录结构可能是: /home/cox/websites/cox.antusoft.com/public 。
另外,我的习惯是所有内容都转移之后,关闭旧服务器,测试是否所有网站都能正常运行,如果可以的话就将旧服务器完全关闭,并删除,旧服务器也已经成功运行了102天了,Linode的VPS还是不错滴: