Rootop 服务器运维与web架构

2014-09-18
发表者 Venus
centos下单网卡pptp搭建vpn及速度慢的解决方法已关闭评论

centos下单网卡pptp搭建vpn及速度慢的解决方法

环境: centos6
安装:

1
[root@Rootop ~]# yum install -y pptpd

配置:
编辑配置文件:

1
2
3
[root@Rootop ~]# vi /etc/pptpd.conf #在最后添加如下两行,定义本地ip和客户端ip段
localip 192.168.100.100
remoteip 192.168.100.101-110

编辑配置文件:

1
2
3
[root@Rootop ~]# vi /etc/ppp/options.pptpd #添加dns解析地址
ms-dns 202.102.134.68
ms-dns 202.102.128.68

编辑配置文件:

1
2
[root@Rootop ~]# vi /etc/ppp/chap-secrets #添加账户
venus pptpd 123123 *

4个字段代表用户名、服务、密码、分配的ip (*为自动)

编辑配置文件:

1
2
[root@Rootop ~]# vi /etc/sysctl.conf #打开ip转发
net.ipv4.ip_forward = 1

执行 sysctl -p 生效

iptables添加规则:

1
2
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 42.96.158.236
iptables -A FORWARD -p tcp --syn -s 192.168.100.0/24 -j TCPMSS --set-mss 1356

第一条是设置192.168.100.0/24网段即客户端获取的ip允许上网
第二条是解决通过pptpd上网速度慢(原因为pptpd接口MTU太小)的问题。

最后用windows设置vpn拨号即可。
速度慢的原理参考:http://wdj01.blog.51cto.com/1059856/521113

附:
我这台服务器有2块网卡一个接内网一个接外网,阿里云机器。1723为pptpd服务端口。
我的iptables规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
 
iptables -F
iptables -Z
iptables -X
 
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 42.96.158.236
iptables -A FORWARD -p tcp --syn -s 192.168.100.0/24 -j TCPMSS --set-mss 1356
 
service iptables save
service iptables restart
exit

2014-09-17
发表者 Venus
开启Nginx目录文件列表已关闭评论

开启Nginx目录文件列表

有一个文件夹用来存放软件,提供下载用,为了方便想在访问此路径的时候列出文件目录。这样一目了然,对nginx配置如下:

在虚拟主机配置文件server{}段中添加一个location:

location /rs {
                        autoindex on; #开启目录列出
                        autoindex_exact_size off;  #以MB为单位默认BYTE
                        autoindex_localtime on;  #本地时间显示默认GMT
                                }

/rs 就是要分享的文件夹,完整路径为https://www.rootop.org/rs ,当访问此路径时,会列出当前目录所有内容。

效果图:

如果文件夹中有中文的话,可能会显示乱码,所以要指定一下默认编码。

在虚拟主机配置文件的server{}段中添加 charset utf-8; 指定为utf8为默认编码。

reload nginx即可

2014-09-16
发表者 Venus
Unable to load dynamic library ‘/usr/lib64/php/modules/pdo_mysql.so’ – /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: php_pdo_int64_to_str in Unknown on line 0已关闭评论

Unable to load dynamic library ‘/usr/lib64/php/modules/pdo_mysql.so’ – /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: php_pdo_int64_to_str in Unknown on line 0

日志报错信息:

PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/pdo_mysql.so’ – /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: php_pdo_int64_to_str in Unknown on line 0

提示pdo_mysql.so无法正儿八经加载。

解决方法:

之前的配置人员安装了php的pdo_mysql模块,在/etc/php.ini中配置加载参数(常规思路都是需要手动配置加载的):

[pdo_mysql]
extension=/usr/lib64/php/modules/pdo_mysql.so

其实在php安装模块的时候会自动将配置文件写入到 /etc/php.d/ 下。

所以不需要配置加载,并且php加载模块好像有顺序,所以屏蔽 /etc/php.ini 中加载的 pdo_mysql 配置参数即可。

2014-09-15
发表者 Venus
apache2.4基于域名的虚拟主机已关闭评论

apache2.4基于域名的虚拟主机

Apache 2.4 官网手册:http://httpd.apache.org/docs/2.4/

今天在rhel7下配置lamp,不过这里的m代表mariadb了。需要配置apache的虚拟主机。apache2.4中虚拟主机的配置基本和2.2一样。

apache 2.4主配置文件中去掉了 NameVirtualHost *:80配置参数,默认加了一行

IncludeOptional 参数,在2.2中为Include conf.d/*.conf

# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

所以直接在 /etc/httpd/conf.d/ 创建一个vhost_qdsop.com.conf (以.conf 结尾的配置文件)。

其中配置文件的参数还和以前一样:

1
2
3
4
5
6
7
<VirtualHost *:80>
DocumentRoot /var/www/html/www
DirectoryIndex index.php index.html
ServerName www.qdsop.com
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/www/error/%Y%m%d_error_log 86400 480"
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/www/access/%Y%m%d_access_log 86400 480" common
</VirtualHost>

如果你要调试虚拟主机配置,你会发现 Apache 的命令行参数 -S 非常有用。即输入以下命令:
/usr/local/apache2/bin/httpd -S
这个命令将会显示 Apache 是如何解析配置文件的。

附yum安装lamp:

[root@rhel7 ~]# yum install -y httpd php php-mysql php-gd php-mbstring mariadb mariadb-server
[root@rhel7 ~]# systemctl start httpd    #启动服务
[root@rhel7 ~]# systemctl enable httpd #开机启动
[root@rhel7 ~]# systemctl start mariadb
[root@rhel7 ~]# systemctl enable mariadb

rhel7 默认用firewalld作为防火墙,关闭切换到iptables
[root@rhel7 ~]# systemctl stop firewalld
[root@rhel7 ~]# systemctl disable firewalld

2014-09-11
发表者 Venus
配置apache支持泛域名访问已关闭评论

配置apache支持泛域名访问

之前配置Apache支持虚拟主机都是通过每个域名都有自己的配置文件,通过<VirtualHost></VirtualHost>实现。
最近发现可以通过rewrite规则实现。这种方法貌似不太常用。

只需要一个配置文件,每个虚拟主机配置一行即可实现,非常方便。个人认为不太推荐这种方式。
修改主配置文件:
/etc/httpd/conf/httpd.conf
在最后一行添加如下部分:

1
2
3
4
5
6
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/etc/httpd/conf.d/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

创建 /etc/httpd/conf.d/vhost.map 文件,内容为:
www.qdsop.com /var/www/html/www
bbs.qdsop.com    /var/www/html/bbs

一个域名对应一个目录。重启apache。

在dns后台中添加泛解析记录:

主机名为”*”,类型为”A”,指向服务器IP。


这样就可以通过www.qdsop.com和bbs.qdsop.com访问不同的页面了。