https://wiki.ubuntu.org.cn/api.php?action=feedcontributions&user=Oneleaf&feedformat=atom
Ubuntu中文 - 用户贡献 [zh-hans]
2024-03-29T08:01:54Z
用户贡献
MediaWiki 1.26.3
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155303
OpenVZ
2020-08-31T09:46:58Z
<p>Oneleaf:/* 查看内存被什么消耗 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/pip3<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple gunicorn flask image<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple numpy tensorflow==1.15<br />
<br />
=== 安装pytorch ===<br />
pip3 install torch==1.2.0+cpu torchvision==0.4.0+cpu -f https://download.pytorch.org/whl/torch_stable.html<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20<br />
<br />
=== 解决系统更新后ssh服务无法启动的问题 ===<br />
mkdir -p -m0755 /var/run/sshd && systemctl restart ssh.service</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155302
OpenVZ
2020-07-23T09:26:30Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/pip3<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple gunicorn flask image<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple numpy tensorflow==1.15<br />
<br />
=== 安装pytorch ===<br />
pip3 install torch==1.2.0+cpu torchvision==0.4.0+cpu -f https://download.pytorch.org/whl/torch_stable.html<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155290
OpenVZ
2019-11-26T08:51:52Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/pip3<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple gunicorn flask image<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple numpy tensorflow==1.15<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155289
OpenVZ
2019-11-26T08:48:58Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/pip3<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple gunicorn flask image<br />
pip3 install -i https://mirrors.aliyun.com/pypi/simple numpy tensorflow<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155288
OpenVZ
2019-11-26T07:52:05Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/pip3<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gunicorn flask image<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy tensorflow<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155287
OpenVZ
2019-11-26T07:44:46Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gunicorn flask image<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy tensorflow<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155286
OpenVZ
2019-11-26T07:42:57Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gunicorn flask image<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy tensorflow<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155285
OpenVZ
2019-11-26T07:34:28Z
<p>Oneleaf:/* 安装tf支持 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gunicorn flask<br />
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy tensorflow<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155284
OpenVZ
2019-11-26T06:38:24Z
<p>Oneleaf:/* 常用维护命令 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
=== 安装tf支持 ===<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
locale-gen --lang zh_CN.UTF-8<br />
apt-get install python3-pip<br />
pip3 install gunicorn flask<br />
pip3 install numpy tensorflow<br />
<br />
<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155283
Move To Docker
2019-04-19T03:37:41Z
<p>Oneleaf:/* Docker */</p>
<hr />
<div>== gitlib ==<br />
<br />
=== Docker ===<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname 192.168.1.5 \<br />
--publish 80:80 \<br />
--publish 1022:22 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
注意,还原的时候很多指南都要求终止 gitlib 服务,这个是错误的,因为需要重建Table等,不能用 sudo docker exec -t gitlab gitlab-ctl stop 来停止服务 ,这样会导致 postgres 被停止。<br />
<br />
修改配置中的ssh端口号,避免和主机冲突:<br />
<pre><br />
sudo vim /var/lib/gitlab/config/gitlab.rb<br />
</pre><br />
<br />
<pre><br />
gitlab_rails['gitlab_shell_ssh_port'] = 1022<br />
</pre><br />
<br />
重启容器<br />
<pre><br />
sudo docker container restart gitlab<br />
</pre><br />
<br />
查看 Docker 中的版本:<br />
<br />
https://hub.docker.com/r/gitlab/gitlab-ce/tags<br />
<br />
=== 传统 ===<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155282
Move To Docker
2019-04-19T03:37:15Z
<p>Oneleaf:/* Docker */</p>
<hr />
<div>== gitlib ==<br />
<br />
=== Docker ===<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname 192.168.1.5 \<br />
--publish 80:80 \<br />
--publish 1022:22 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
注意,还原的时候很多指南都要求终止 gitlib 服务,这个是错误的,因为需要重建Table等,不能用 sudo docker exec -t gitlab gitlab-ctl stop 来停止服务 ,这样会导致 postgres 被停止。<br />
<br />
修改配置中的ssh端口号,避免和主机冲突:<br />
<pre><br />
sudo vim /var/lib/gitlab/config/gitlab.rb<br />
</pre><br />
<br />
<pre><br />
gitlab_rails['gitlab_shell_ssh_port'] = 4422<br />
</pre><br />
<br />
重启容器<br />
<pre><br />
sudo docker container restart gitlab<br />
</pre><br />
<br />
查看 Docker 中的版本:<br />
<br />
https://hub.docker.com/r/gitlab/gitlab-ce/tags<br />
<br />
=== 传统 ===<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155281
Move To Docker
2019-04-19T03:18:25Z
<p>Oneleaf:</p>
<hr />
<div>== gitlib ==<br />
<br />
=== Docker ===<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname 192.168.1.5 \<br />
--publish 80:80 \<br />
--publish 1022:22 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
注意,还原的时候很多指南都要求终止 gitlib 服务,这个是错误的,因为需要重建Table等,不能用 sudo docker exec -t gitlab gitlab-ctl stop 来停止服务 ,这样会导致 postgres 被停止。<br />
<br />
修改配置中的ssh端口号,避免和主机冲突:<br />
vim /var/lib/gitlab/config/gitlab.rb<br />
gitlab_rails['gitlab_shell_ssh_port'] = 4422<br />
<br />
查看 Docker 中的版本:<br />
<br />
https://hub.docker.com/r/gitlab/gitlab-ce/tags<br />
<br />
=== 传统 ===<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155280
Move To Docker
2019-04-18T09:43:55Z
<p>Oneleaf:/* Docker */</p>
<hr />
<div>== gitlib ==<br />
<br />
=== Docker ===<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname kfb \<br />
--publish 80:80 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
注意,还原的时候很多指南都要求终止 gitlib 服务,这个是错误的,因为需要重建Table等,不能用 sudo docker exec -t gitlab gitlab-ctl stop 来停止服务 ,这样会导致 postgres 被停止。<br />
<br />
查看 Docker 中的版本:<br />
<br />
https://hub.docker.com/r/gitlab/gitlab-ce/tags<br />
<br />
=== 传统 ===<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155279
Move To Docker
2019-04-18T09:43:04Z
<p>Oneleaf:/* Docker */</p>
<hr />
<div>== gitlib ==<br />
<br />
=== Docker ===<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname kfb \<br />
--publish 80:80 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
注意,还原的时候很多指南都要求终止 gitlib 服务,这个是错误的,因为需要创建DB等,不能用 sudo docker exec -t gitlab gitlab-ctl stop 来停止服务 <br />
<br />
查看 Docker 中的版本:<br />
<br />
https://hub.docker.com/r/gitlab/gitlab-ce/tags<br />
<br />
=== 传统 ===<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155278
Move To Docker
2019-04-18T09:40:56Z
<p>Oneleaf:/* gitlib */</p>
<hr />
<div>== gitlib ==<br />
<br />
=== Docker ===<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname kfb \<br />
--publish 80:80 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
查看 Docker 中的版本:<br />
<br />
https://hub.docker.com/r/gitlab/gitlab-ce/tags<br />
<br />
=== 传统 ===<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155277
Move To Docker
2019-04-18T09:30:48Z
<p>Oneleaf:</p>
<hr />
<div>== gitlib ==<br />
<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname kfb \<br />
--publish 80:80 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre><br />
<br />
传统升级<br />
升级需要先升级到当前大版本的最后一个版本,再依次升级:<br />
1. 先查看仓库的版本号:<br />
<pre>aptitude versions gitlab-ce</pre><br />
然后,按照 8.0.1-ce.0 -> 8.17.8-ce.0 -> 9.5.10-ce.0 -> 10.8.7-ce.0 -> 11.9.8-ce.0 的顺序依次升级<br />
<pre>sudo apt-get install gitlab-ce=版本号</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Move_To_Docker&diff=155276
Move To Docker
2019-04-18T09:25:12Z
<p>Oneleaf:创建页面,内容为“== gitlib == 运行 gitlib 私有仓库 <pre> sudo docker run --detach \ -e TZ=Asia/Shanghai \ --hostname kfb \ --publish 80:80 \ --name gitlab \ --restar...”</p>
<hr />
<div>== gitlib ==<br />
<br />
运行 gitlib 私有仓库<br />
<pre><br />
sudo docker run --detach \<br />
-e TZ=Asia/Shanghai \<br />
--hostname kfb \<br />
--publish 80:80 \<br />
--name gitlab \<br />
--restart always \<br />
--volume /var/lib/gitlab/config:/etc/gitlab \<br />
--volume /var/lib/gitlab/logs:/var/log/gitlab \<br />
--volume /var/lib/gitlab/data:/var/opt/gitlab \<br />
gitlab/gitlab-ce:latest<br />
</pre><br />
<br />
备份<br />
<pre><br />
sudo docker exec -t gitlab gitlab-rake gitlab:backup:create<br />
</pre><br />
<br />
还原<br />
<pre><br />
sudo docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1555553246_2019_04_18_11.9.8<br />
</pre></div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Zabbix&diff=155275
Zabbix
2018-10-29T06:54:01Z
<p>Oneleaf:</p>
<hr />
<div>在Ubuntu 上安装 Zabbix<br />
<br />
==安装==<br />
安装Apache、Mysql、Php、zabbix<br />
sudo apt-get update <br />
sudo apt-get install apache2 mysql-server libapache2-mod-php5 php5-gd php5-mysql php5-common zabbix-server-mysql zabbix-frontend-php<br />
<br />
<br />
==服务端配置==<br />
=== 配置数据库连接 ===<br />
sudo vim /etc/zabbix/zabbix_server.conf<br />
修改相关<br />
DBHost=localhost<br />
DBName=zabbix<br />
DBUser=zabbix<br />
DBPassword=zabbix<br />
#非必需,但推荐<br />
StartDiscoverers=5<br />
<br />
=== 创建mysql账号 ===<br />
mysql -u root -p<br />
mysql> create user 'zabbix'@'localhost' identified by 'zabbix';<br />
mysql> create database zabbix;<br />
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';<br />
mysql> flush privileges;<br />
mysql> exit;<br />
<br />
=== 导入初始化数据 ===<br />
cd /usr/share/zabbix-server-mysql/<br />
sudo gunzip *.gz<br />
mysql -u zabbix -p zabbix < schema.sql<br />
mysql -u zabbix -p zabbix < images.sql<br />
mysql -u zabbix -p zabbix < data.sql<br />
<br />
=== 修改 PHP 参数 ===<br />
sudo vim /etc/php5/apache2/php.ini<br />
修改项:<br />
post_max_size = 16M<br />
max_execution_time = 300<br />
max_input_time = 300<br />
date.timezone = "Asia/Shanghai"<br />
<br />
wwwwww<br />
<br />
=== 配置网页 ===<br />
sudo cp /usr/share/doc/zabbix-frontend-php/examples/zabbix.conf.php.example /etc/zabbix/zabbix.conf.php<br />
sudo vim /etc/zabbix/zabbix.conf.php<br />
修改项<br />
$DB['DATABASE'] = 'zabbix';<br />
$DB['USER'] = 'zabbix';<br />
$DB['PASSWORD'] = 'zabbix'<br />
配置apache<br />
sudo cp /usr/share/doc/zabbix-frontend-php/examples/apache.conf /etc/apache2/conf-available/zabbix.conf<br />
sudo a2enconf zabbix.conf<br />
sudo a2enmod alias<br />
sudo service apache2 restart<br />
<br />
=== 配置 zabbix server 启动 ===<br />
sudo vim /etc/default/zabbix-server<br />
修改项:<br />
START=yes<br />
启动:<br />
sudo service zabbix-server start<br />
<br />
=== 本机监控 ===<br />
sudo apt-get install zabbix-agent<br />
sudo service zabbix-agent restart<br />
<br />
=== 访问 ===<br />
http://xxx.xxx.xxx.xxx/zabbix<br />
缺省的账户:<br />
Username = admin<br />
Password = zabbix<br />
<br />
== 客户端配置 ==<br />
sudo apt-get install zabbix-agent<br />
修改配置<br />
sudo vim /etc/zabbix/zabbix_agentd.conf<br />
调整项<br />
Server=127.0.0.1 #修改为 zabbix server 服务器的IP,如果有网关或被监控机为虚拟机也加上母机的IP<br />
ServerActive=127.0.0.1 #修改为 zabbix server 服务器的IP<br />
Hostname=Zabbix server #修改为网页里面添加的Hostname,需要保持一致。<br />
<br />
简易脚本:<br />
<pre><br />
sudo -Hs<br />
<br />
#仅仅用于ubuntu 12.04<br />
#echo "deb http://ppa.launchpad.net/9v-shaun-42/zabbix22/ubuntu precise main" > /etc/apt/sources.list.d/zabbix.list<br />
apt-get update<br />
<br />
apt-get install zabbix-agent<br />
<br />
echo "Server=192.168.3.52,192.168.3.10" > /etc/zabbix/zabbix_agentd.conf.d/server.conf<br />
echo "ServerActive=192.168.3.52" >> /etc/zabbix/zabbix_agentd.conf.d/server.conf<br />
#echo "Hostname=`/sbin/ifconfig eth0|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'`" >> /etc/zabbix/zabbix_agentd.conf.d/server.conf<br />
echo "Hostname=`/sbin/ifconfig venet0:0|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'`" >> /etc/zabbix/zabbix_agentd.conf.d/server.conf<br />
/etc/init.d/zabbix-agent restart<br />
</pre><br />
<br />
[[Category:服务器]]</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155274
OpenVZ
2018-09-13T02:23:44Z
<p>Oneleaf:/* 安装python */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python3-pip python3-dev build-essential<br />
pip3 install --upgrade pip<br />
rm /usr/bin/pip3<br />
ln -s /usr/local/bin/pip3 /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155265
OpenVZ
2018-03-16T08:38:59Z
<p>Oneleaf:/* 配置防火墙 */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE<br />
# 不能按下面的设置地址伪装,会造成不同服务器的 192.168.2.0/24 网段之间的访问也地址伪装,这样是不对的<br />
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
#iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155257
OpenVZ
2017-10-25T05:38:19Z
<p>Oneleaf:/* 安装 OpenVZ Web Panel */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
gem install sqlite3-ruby<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155256
OpenVZ
2017-10-25T05:08:23Z
<p>Oneleaf:/* 安装 OpenVZ Web Panel */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155255
OpenVZ
2017-10-25T03:56:06Z
<p>Oneleaf:/* 安装 OpenVZ Web Panel */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems ruby-devel<br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155254
OpenVZ
2017-10-25T03:38:19Z
<p>Oneleaf:/* 安装 OpenVZ Web Panel */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install rubygems<br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155253
OpenVZ
2017-10-25T02:53:05Z
<p>Oneleaf:/* 安装 OpenVZ Web Panel */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
yum install ruby<br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Vps&diff=155252
Vps
2017-08-13T15:05:40Z
<p>Oneleaf:/* VPN 和代理 */</p>
<hr />
<div>Linux VPS Ubuntu 系统配置指南<br />
== 拿到的帐号 ==<br />
VPS 开通后,你将收到如下的帐号:<br />
<br />
VPS IP Address: 184.82.9.30<br />
SSH Root Password: pass001<br />
<br />
面板地址在 http://vps.ubuntu.org.cn/vm/ 需要使用你的开通时留下的邮箱注册。<br />
<br />
以下的指南都是针对 ubuntu 的,请 centos 或其它 Linux 用户到面板 reload 到ubuntu 14.04 然后继续。<br />
<br />
{{Qref Alarm}} <font color="red">注意:</font>如果你安装 ubuntu 14.04 可能会无法登录,提示访问拒绝,这并不是密码输入错误了,而是因为 sshd 的默认配置里面禁止了 root 帐号登录,所以你需要使用面板的 临时通道 上去,<font color="red">逐行</font>执行如下命令开启 root 登录权限:<br />
<br />
sed -i "s/PermitRootLogin.*$/PermitRootLogin yes/" /etc/ssh/sshd_config<br />
service ssh restart<br />
<br />
顺便提一句,如果你是老手,不用开启 root 登录,可以直接创建一个普通帐号,加入到 sudo 组,使用sudo 来执行命令,这样更安全。<br />
<br />
== 如何远程访问 ==<br />
Linux VPS支持ssh远程访问,因此需要使用putty工具来访问。<br />
<br />
1 下载putty<br />
<br />
下载地址: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe<br />
<br />
2 运行putty<br />
<br />
这个程序不需要安装,下载后直接运行,后在Host地址输入VPS的IP如下:<br />
<br />
[[Image:Vps_putty1.png]]<br />
<br />
3 登录vps <br />
<br />
点击上图中的 Open 按钮,第一次登录会出现确认密钥的提示,如下图,请点击 “是” 按钮。<br />
<br />
[[Image:Vps_putty2.png]]<br />
<br />
4 如下图输入登录用户名 root 回车,继续输入密码。<br />
<br />
{{Qref Alarm}} <font color="red">'''注意输入密码是不会显示 “*” 的,'''</font>同时密码是区分大小写的。<br />
<br />
有个技巧,直接去复制密码后,鼠标点击 putty 的输入密码窗口,直接按下鼠标右键,然后回车即可登录。 在putty的窗口按下鼠标右键表示粘贴。<br />
<br />
[[Image:Vps_putty3.png]]<br />
<br />
5 如果显示下图则表示登录成功了。<br />
<br />
[[Image:Vps_putty4.png]]<br />
<br />
6 设置 putty 支持 vps 的中文文件名或中文文件内容显示,此步骤非必需,可以忽略:<br />
<br />
在主窗口,点击左上角的图标,在弹出菜单中选择 Change Settings... 菜单,出现设置窗口。<br />
<br />
设置显示字体,左边窗口点击 Window -> Appearance ,右边点击 Font settings -> Change 如下图:<br />
<br />
[[Image:Vps_putty5.png]]<br />
<br />
字体选择 新宋体 字符集选择 CHINESE_GB2312 ,字体大小随你喜好设置。设置完毕后点确定<br />
<br />
[[Image:Vps_putty6.png]]<br />
<br />
设置终端字符,左边窗口点 Window -> Translation ,右边选择 Remote character set 的下拉框选择 UTF-8 ,如下图:<br />
<br />
[[Image:Vps_putty7.png]]<br />
<br />
设置Socket5代理,左边窗口点 Connection -> SSH -> Tunnels,右边如下图选择 Dynamic ,Source port 输入 7070,然后点 Add 按钮,就启用了本机代理。<br />
<br />
[[Image:PuttySocket5.png]]<br />
<br />
== 如何上传和下载文件 ==<br />
VPS 直接支持ssh协议,因此不需要采用 ftp 方式上传,可以直接使用支持 sftp 协议的客户端上传文件,这里使用 FileZilla。<br />
<br />
1 下载FileZilla<br />
<br />
官网下载地址: http://filezilla-project.org/download.php?type=client<br />
<br />
或直接点击下载: http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.5.0/FileZilla_3.5.0_win32-setup.exe/download<br />
<br />
2 下载完毕后安装 FileZilla<br />
<br />
3 添加站点<br />
<br />
运行FileZilla,点击菜单 文件 -> 站点管理器<br />
<br />
[[Image:Vps_FileZilla1.png]]<br />
<br />
点击后如下图:<br />
<br />
[[Image:Vps_FileZilla2.png]]<br />
<br />
再点击面板的 "新站点" 按钮,在右边的输入地方,输入:<br />
<br />
主机:VPS的IP,本例输入 184.82.9.30<br />
协议:选择 SFTP<br />
登录类型:选一般<br />
用户:输入root<br />
密码:输入ssh的登录密码,注意密码区分大小写。<br />
<br />
如下图:<br />
<br />
[[Image:Vps_FileZilla3.png]]<br />
<br />
输入完毕后,再切换到字符集,选择 "强制 UTF-8" ,如下图:<br />
<br />
[[Image:Vps_FileZilla4.png]]<br />
<br />
输入完毕后直接点击 “连接” 按钮即可,连接完毕后如下图所示,你就可以直接上传和下载文件了。<br />
<br />
[[Image:Vps_FileZilla5.png]]<br />
<br />
下一次打开 FileZilla 时,直接到站点管理器,点击连接即可。<br />
<br />
== 更新软件源 (不可跳过) ==<br />
以下命令均需要使用 putty 登录到服务器远程执行命令操作,你可以直接复制下面的命令,然后点击 putty 窗口按鼠标右键,粘贴命令。<br />
<br />
本步骤不可跳过,需要先执行,后面才可以继续,建议每次安装新软件时,都执行一遍本步骤。<br />
<br />
输入如下命令更新软件源:<br />
<br />
apt-get update<br />
<br />
下面的提示不同的Linux的版本存在不同的差异,但有如下类似的提示时,表示更新成功:<br />
<source lang=bash><br />
root@241541:~# apt-get update<br />
Get:1 http://archive.ubuntu.com maverick Release.gpg [198B]<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick/main Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick/restricted Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick/universe Translation-en<br />
Get:2 http://archive.ubuntu.com maverick-updates Release.gpg [198B]<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-updates/main Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-updates/restricted Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-updates/universe Translation-en<br />
Get:3 http://archive.ubuntu.com maverick-security Release.gpg [198B]<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-security/main Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-security/restricted Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-security/universe Translation-en<br />
Get:4 http://archive.ubuntu.com maverick Release [39.8kB]<br />
Get:5 http://archive.ubuntu.com maverick-updates Release [31.4kB]<br />
Get:6 http://archive.ubuntu.com maverick-security Release [31.4kB]<br />
Get:7 http://archive.ubuntu.com maverick/main i386 Packages [1492kB]<br />
Get:8 http://archive.ubuntu.com maverick/restricted i386 Packages [5992B]<br />
Get:9 http://archive.ubuntu.com maverick/universe i386 Packages [5791kB]<br />
Get:10 http://archive.ubuntu.com maverick-updates/main i386 Packages [380kB]<br />
Get:11 http://archive.ubuntu.com maverick-updates/restricted i386 Packages [1797B]<br />
Get:12 http://archive.ubuntu.com maverick-updates/universe i386 Packages [157kB]<br />
Get:13 http://archive.ubuntu.com maverick-security/main i386 Packages [157kB]<br />
Get:14 http://archive.ubuntu.com maverick-security/restricted i386 Packages [14B]<br />
Get:15 http://archive.ubuntu.com maverick-security/universe i386 Packages [77.9kB]<br />
Fetched 8166kB in 4s (1724kB/s)<br />
Reading package lists... Done<br />
</source><br />
<br />
<br />
如果看到如下的提示<br />
<source lang=bash><br />
W: GPG 错误:http://security.ubuntu.com trusty-security Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
W: GPG 错误:http://archive.canonical.com trusty Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
W: GPG 错误:http://archive.ubuntu.com trusty Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
W: GPG 错误:http://archive.ubuntu.com trusty-updates Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
</source><br />
<br />
请执行以下代码,导入秘钥,重新执行更新软件源:<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
<br />
<br />
如果VPS有启用IPv6,有可能长时间执行这个没有反应,请输入 Ctrl + C 中断上面的命令。先执行如下命令,使IPV4优先:<br />
<br />
全部关闭 IPv6:<br />
echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf<br />
<br />
仅仅针对 apt-get 关闭IPv6,仅 Ubuntu 14.04 以上版本有效:<br />
echo "Acquire::ForceIPv4 true;" > /etc/apt/apt.conf.d/99force-ipv4<br />
<br />
执行完毕上面的命令后,重新运行 apt-get update 来更新软件源即可。<br />
<br />
== 安装常用软件 (不可跳过) ==<br />
VPS里面缺乏一些常用工具软件,一次安装好:<br />
<br />
输入如下命令安装解压缩、下载和数据同步以及系统日志软件:<br />
apt-get install unzip zip wget rsync<br />
<br />
如果提示如下命令,表示之前已经安装好:<br />
<br />
<source lang=bash><br />
root@241541:~# apt-get install unzip zip wget rsync <br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
unzip is already the newest version.<br />
wget is already the newest version.<br />
rsync is already the newest version.<br />
0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.<br />
</source><br />
<br />
如果之前没有安装会提示如下命令,表示已经安装好<br />
<source lang=bash><br />
root@241541:~# apt-get install unzip zip wget rsync<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following NEW packages will be installed:<br />
rsync unzip wget zip<br />
0 upgraded, 4 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 319kB/1125kB of archives.<br />
After this operation, 2314kB of additional disk space will be used.<br />
Get:1 http://archive.ubuntu.com/ubuntu/ maverick/main zip i386 3.0-3 [319kB]<br />
Fetched 319kB in 0s (417kB/s)<br />
Selecting previously deselected package wget.<br />
(Reading database ... 22549 files and directories currently installed.)<br />
Unpacking wget (from .../wget_1.12-1.1ubuntu3_i386.deb) ...<br />
Selecting previously deselected package rsync.<br />
Unpacking rsync (from .../rsync_3.0.7-2ubuntu1.1_i386.deb) ...<br />
Selecting previously deselected package unzip.<br />
Unpacking unzip (from .../archives/unzip_6.0-4_i386.deb) ...<br />
Selecting previously deselected package zip.<br />
Unpacking zip (from .../archives/zip_3.0-3_i386.deb) ...<br />
Setting up wget (1.12-1.1ubuntu3) ...<br />
Setting up rsync (3.0.7-2ubuntu1.1) ...<br />
Setting up unzip (6.0-4) ...<br />
Setting up zip (3.0-3) ...<br />
</source><br />
<br />
== 使用 Apache 搭建站点 ==<br />
Apache 是最常见的 Web 服务器,功能强大。如果希望使用轻量级的 Nginx ,可以跳过此部分,直接转到指南的 nginx 部分来安装。<br />
<br />
=== 安装 Apache2 Web 服务 ===<br />
VPS 默认有安装Apache2,但如果你删除了,就需要重新安装;如果没有删除,执行下面的命令会退出来,不会对系统产生任何影响。<br />
<br />
输入如下命令安装<br />
apt-get install apache2<br />
<br />
正常情况下会给出如下提示,说明Apache2默认已经安装好了:<br />
<source lang=bash><br />
root@241541:~# apt-get install apache2<br />
Reading package lists... Done<br />
Building dependency tree... Done<br />
apache2 is already the newest version.<br />
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.<br />
</source><br />
<br />
=== 开启 Apache2 的伪静态 ===<br />
如果希望开启Apache2 伪静态 rewrite 支持,输入如下命令安装<br />
<br />
a2enmod rewrite<br />
<br />
正常情况下会给出如下提示,说明已经安装成功:<br />
<source lang=bash><br />
root@241541:~# a2enmod rewrite<br />
Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.<br />
</source><br />
<br />
提示需要重新加载Apache2的配置,由于下一步是安装mysql,所以暂时不用重启。<br />
<br />
或出现如下提示,表示已经开启了 rewrite <br />
<source lang=bash><br />
root@241541:~# a2enmod rewrite<br />
Mudule rewrite already enabled<br />
</source><br />
<br />
=== 安装 mysql 数据库服务 ===<br />
[[MySQL]] 是 Linux 下最常用的开源数据库。<br />
<br />
输入如下命令安装mysql<br />
apt-get install mysql-server<br />
<br />
如果输入正确,会提示如下信息,<br />
<source lang=bash><br />
root@241541:~# apt-get install mysql-server<br />
Reading package lists... Done<br />
Building dependency tree... Done<br />
The following extra packages will be installed:<br />
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient16<br />
libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-client-core-5.1<br />
mysql-common mysql-server-5.1 mysql-server-core-5.1<br />
Suggested packages:<br />
libipc-sharedcache-perl libterm-readkey-perl tinyca<br />
The following NEW packages will be installed:<br />
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient16<br />
libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-client-core-5.1<br />
mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1<br />
0 upgraded, 12 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 22.9MB of archives.<br />
After this operation, 54.4MB of additional disk space will be used.<br />
Do you want to continue [Y/n]? <br />
</source><br />
<br />
输入 Y 回车,继续安装<br />
会提示输入 mysql 的 root 用户密码,你可以输入密码后回车,也可以不输入任何密码直接回车。<br />
(不输入密码不会影响到Mysql的安全性,因为Mysql仅仅用于本地监听,但不输入密码会导致后续phpmyadmin无法运行)<br />
<br />
[[Image:Vps_Mysql1.png]]<br />
<br />
需要重新输入一遍密码,如下图所示:<br />
<br />
[[Image:Vps_Mysql2.png]]<br />
<br />
最后提示如下界面,表示mysql安装成功。<br />
<br />
[[Image:Vps_Mysql3.png]]<br />
<br />
=== mysql 数据库管理 ===<br />
对于mysql数据库维护可以使用下面指南中安装的 phpmyadmin 进行维护,或直接在 putty 中输入 mysql -p 进行管理如图所示:<br />
<br />
[[Image:Vps_mysql1.png]]<br />
<br />
在 mysql> 的提示符下输入 quit 回车,将退出 mysql 命令,返回到正常操作提示符。<br />
<br />
=== mysql 数据库优化 ===<br />
如果你的VPS的内存只有512M,请按如下步骤进行优化,如果是1G或以上可以忽略本步骤。执行本步骤可以将Mysql的占用内存由150M降到100M。<br />
<br />
输入如下命令配置 Mysql<br />
<br />
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s`<br />
find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \;<br />
sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf<br />
<br />
执行结果如下所示:<br />
<source lang=bash><br />
root@241541:~# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s`<br />
root@241541:~# find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \;<br />
root@241541:~# sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf<br />
</source><br />
<br />
重启下 Mysql服务:<br />
service mysql restart<br />
<br />
执行结果如下所示:<br />
<source lang=bash> <br />
root@241541:~# service mysql restart<br />
Rather than invoking init scripts through /etc/init.d, use the service(8)<br />
utility, e.g. service mysql restart<br />
<br />
Since the script you are attempting to invoke has been converted to an<br />
Upstart job, you may also use the restart(8) utility, e.g. restart mysql<br />
mysql start/running, process 9886<br />
</source><br />
<br />
=== 安装php环境 ===<br />
执行如下命令安装apache2的php5扩展和php的mysql扩展<br />
<br />
apt-get install libapache2-mod-php5 php5-gd php5-mysql php5-curl php5-mcrypt php5-common php-apc<br />
php5enmod mcrypt<br />
<br />
如下提示:<br />
<source lang=bash><br />
root@241541:~# apt-get install libapache2-mod-php5 php5-gd php5-mysql php5-mcrypt php5-common php-apc<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
libgd2-xpm libjpeg62 libt1-5 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6<br />
libxpm4 php5-cli php5-common php-apc<br />
Suggested packages:<br />
php-pear libgd-tools <br />
The following NEW packages will be installed:<br />
libapache2-mod-php5 libgd2-xpm libjpeg62 libt1-5 libx11-6 libx11-data<br />
libxau6 libxcb1 libxdmcp6 libxpm4 php5-cli php5-common php5-gd php5-mysql php5-mcrypt<br />
0 upgraded, 15 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 8128kB of archives.<br />
After this operation, 22.7MB of additional disk space will be used.<br />
Do you want to continue [Y/n]?<br />
</source><br />
<br />
输入 Y,回车继续,以下表示安装完成。<br />
<br />
[[Image:Vps_php1.png]]<br />
<br />
重新启动apache2, 输入如下命令:<br />
service apache2 restart<br />
<br />
提示如下,表示启动成功:<br />
<source lang=bash><br />
root@241541:~# service apache2 restart<br />
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
[ OK ]<br />
</source><br />
<br />
=== 测试站点 ===<br />
以上命令已经完整安装好一台Web服务器所具有的环境,以下来搭建一个最简单的站点。<br />
<br />
web 的根目录位于 /var/www/html 你可以将自己的程序直接放到此目录。<br />
<br />
==== 安装 phpsysinfo ====<br />
<br />
使用putty登录到服务器,依次执行如下命令安装phpsysinfo:<br />
<br />
<source lang=bash><br />
cd /var/www/html<br />
wget http://sourceforge.net/projects/phpsysinfo/files/phpsysinfo/3.0.13/phpsysinfo-3.0.13.tar.gz/download -O phpsysinfo-3.0.13.tar.gz<br />
tar xzvf phpsysinfo-3.0.13.tar.gz <br />
cd phpsysinfo<br />
mv config.php.new config.php<br />
</source><br />
<br />
执行完毕后,在浏览器的地址输入: http://184.82.9.30/phpsysinfo/ 查看,显示如下:<br />
<br />
[[Image:Vps_phpsysinfo.png]]<br />
<br />
==== 安装 php 探针 ====<br />
使用putty登录到服务器,依次执行如下命令安装:<br />
<source lang=bash><br />
cd /var/www/html<br />
wget http://www.yahei.net/tz/tz.zip<br />
unzip tz.zip<br />
</source><br />
运行结果如下所示:<br />
<source lang=bash><br />
root@241541:~# cd /var/www/html<br />
root@241541:/var/www/html# wget http://www.yahei.net/tz/tz.zip<br />
--2011-08-13 09:18:40-- http://www.yahei.net/tz/tz.zip<br />
Resolving www.yahei.net... 110.34.192.14<br />
Connecting to www.yahei.net|110.34.192.14|:80... connected.<br />
HTTP request sent, awaiting response... 200 OK<br />
Length: 16087 (16K) [application/zip]<br />
Saving to: `tz.zip'<br />
<br />
100%[======================================>] 16,087 --.-K/s in 0.07s<br />
<br />
2011-08-13 09:18:41 (152 KB/s) - `tz.zip' saved [16,087/16,087]<br />
<br />
root@241541:/var/www/html# unzip tz.zip<br />
Archive: tz.zip<br />
inflating: tz.php<br />
</source><br />
<br />
执行完毕后,在浏览器的地址输入: http://184.82.9.30/tz.php 查看,显示如下:<br />
<br />
[[Image:Vps_tz1.png]]<br />
<br />
==== 安装 phpmyadmin ====<br />
安装phpmyadmin,需要mysql事先配置好root的密码。<br />
<br />
使用putty登录到服务器,执行下面安装<br />
<br />
apt-get install phpmyadmin<br />
<br />
提示如下:<br />
<source lang=bash><br />
root@241541:~# apt-get install phpmyadmin<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
dbconfig-common javascript-common libjs-mootools libmcrypt4 php5-mcrypt<br />
wwwconfig-common<br />
Suggested packages:<br />
libmcrypt-dev mcrypt postgresql-client apache apache-ssl<br />
The following NEW packages will be installed:<br />
dbconfig-common javascript-common libjs-mootools libmcrypt4 php5-mcrypt<br />
phpmyadmin wwwconfig-common<br />
0 upgraded, 7 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 5184kB of archives.<br />
After this operation, 21.3MB of additional disk space will be used.<br />
Do you want to continue [Y/n]?<br />
</source><br />
输入 Y, 回车继续。<br />
<br />
{{Qref Alarm}} <font color="red">'''按 空格键 选择 Apche2'''</font> 如下图:<br />
<br />
[[Image:Vps_phpmyadmin1.png]]<br />
<br />
选择完毕后,回车继续,提示如下图,是否需要创建phpmyadmin数据库,<br />
<br />
[[Image:Vps_phpmyadmin2.png]]<br />
<br />
直接回车继续,提示输入mysql的管理员密码,输入后如下所示:<br />
<br />
[[Image:Vps_phpmyadmin3.png]]<br />
<br />
回车继续后,如下图,提示输入phpmyadmin连接数据的密码,直接回车由系统随机产生一个即可。<br />
<br />
[[Image:Vps_phpmyadmin4.png]]<br />
<br />
完成安装提示如下:<br />
<br />
[[Image:Vps_phpmyadmin5.png]]<br />
<br />
现在访问如下地址测试: http://184.82.9.30/phpmyadmin/<br />
<br />
如果打开提示 404 错误,即 Not Found ,在putty里面执行如下命令:<br />
ln -s /usr/share/phpmyadmin /var/www/html/<br />
然后再访问,如下:<br />
<br />
[[Image:Vps_phpmyadmin6.png]]<br />
<br />
输入mysql的root帐号和mysql的密码,点击 执行 进行登录,进行正常访问如下:<br />
<br />
[[Image:Vps_phpmyadmin7.png]]<br />
<br />
=== 配置虚拟站点 ===<br />
<br />
假设前提: 你有一个域名 test.com ,你希望搭建两个站点,第一个站点是 www.test.com 和 test.com 为主页,同时希望提供 bbs.test.com 为论坛。<br />
<br />
注意,下面的文档对多个不同的域名也是适用的。<br />
<br />
==== 配置域名 ====<br />
去域名商提供的面板将 test.com 域名的 A 记录修改为 VPS 的 IP.<br />
<br />
==== 上传程序 ====<br />
约定两个站点的目录如下,为了方便备份,站点的目录最好集中存放在 /var/www/html 目录。<br />
<br />
www.test.com(test.com) 对应目录: /var/www/html/test<br />
bbs.test.com 对应目录: /var/www/html/bbs<br />
<br />
假设主站点安装帝国的CMS程序,论坛采用DZ的论坛,程序需要下载UTF-8的版本。<br />
<br />
[[Image:Vps_ApacheSite1.png]]<br />
<br />
使用前面提到的上传方法,利用 FileZilla 连接服务器,创建这两个目录。<br />
<br />
[[Image:Vps_ApacheSite2.png]]<br />
<br />
如果找不到如上图的目录,请点击 / 即可看到了。<br />
<br />
[[Image:Vps_ApacheSiteFile4.png]]<br />
<br />
创建目录后,分别上传程序,如下:<br />
<br />
[[Image:Vps_ApacheSite3.png]]<br />
<br />
==== 多域名配置 ====<br />
这里推荐编辑器直接使用记事本,不要使用其他的高级编辑器。<br />
<br />
注意下面的 '''DocumentRoot /var/www/html/test/''' 中的 '''/var/www/html/test/''' 应该修改为你上传站点的文件目录。<br />
<br />
编辑www.test.com的站点配置文件test.com.txt ,其中站点 http://www.test.com 和 http://test.com 的网站目录为 /var/www/html/test/<br />
<br />
<VirtualHost *:80><br />
ServerName www.test.com<br />
ServerAlias test.com<br />
DocumentRoot /var/www/html/test/<br />
</VirtualHost> <br />
<br />
编辑bbs.test.com的站点配置文件 bbs.test.com.txt , 其中站点 bbs.test.com 的网站目录为 /var/www/html/bbs/<br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
</VirtualHost><br />
<br />
如图所示:<br />
<br />
[[Image:Vps_ApacheSite4.png]]<br />
<br />
将这两个文件上传到 /etc/apache2/sites-enabled/ 目录<br />
<br />
如图所示:<br />
<br />
[[Image:Vps_ApacheSite5.png]]<br />
<br />
==== Apache2 伪静态 ====<br />
有两种方法做伪静态,一种是用 .htaccess 文件。 例如将上面的 bbs.test.com 的站点配置文件编辑为如下:<br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
<Directory /var/www/html/bbs/><br />
AllowOverride AuthConfig<br />
</Directory><br />
</VirtualHost> <br />
<br />
重新上传,重启 apache2 后, 然后将准备好的 .htaccess 文件放到对应的 /var/www/html/bbs/ 网站根目录即可。<br />
<br />
另外一种是直接加入到配置文件,如下:<br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
#伪静态代码段开始 <br />
<Directory /var/www/html/bbs/><br />
...............................<br />
</Directory><br />
#伪静态代码段结束 <br />
</VirtualHost> <br />
<br />
下面是常用的一些伪静态配置,复制出来,保存为 .htaccess 文件,或 插入到站点的配置文件最后一行 <Directory> 和 </Directory> 之间。 <br />
<br />
Discuz!X 在 Apche2 下的伪静态配置如下: <br />
<br />
RewriteEngine On<br />
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2<br />
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2<br />
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1<br />
RewriteRule ^article-([0-9]+)\.html$ portal.php?mod=article&articleid=$1<br />
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2<br />
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2<br />
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2<br />
<br />
<br />
将这一段代码加入到上面的站点配置文件中,如下: <br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
<Directory /var/www/html/bbs/><br />
RewriteEngine On<br />
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2<br />
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2<br />
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1<br />
RewriteRule ^article-([0-9]+)\.html$ portal.php?mod=article&articleid=$1<br />
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2<br />
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2<br />
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2<br />
</Directory><br />
</VirtualHost><br />
<br />
WordPress 在 Apache2 下的伪静态配置如下: <br />
<Directory /><br />
RewriteEngine On<br />
RewriteRule ^index\.php$ - [L]<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule . /index.php [L]<br />
</Directory><br />
<br />
<br />
ECShop 在 Apache2 下的伪静态配置如下: <br />
<Directory /><br />
RewriteEngine On<br />
RewriteRule ^(.*)/index.html$ $1/index\.php [I]<br />
RewriteRule ^(.*)/category$ $1/index\.php [I]<br />
RewriteRule ^(.*)/feed-c([0-9]+).xml$ $1/feed\.php\?cat=$2 [I]<br />
RewriteRule ^(.*)/feed-b([0-9]+).xml$ $1/feed\.php\?brand=$2 [I]<br />
RewriteRule ^(.*)/feed-type([^-]+)\.xml$ $1/feed\.php\?type=$2 [I]<br />
RewriteRule ^(.*)/feed.xml$ $1/feed\.php [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6&page=$7&sort=$8&order=$9 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)\.html$ $1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3&page=$4&sort=$5&order=$6 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3&page=$4 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)(.*)\.html$ $1/category\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)\.html(.*)$ $1/category\.php\?$4&id=$2&brand=$3<br />
RewriteRule ^(.*)/goods-([0-9]+)(.*)\.html$ $1/goods\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/article_cat\.php\?id=$2&page=$3&sort=$4&order=$5 [I]<br />
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2&page=$3 [I]<br />
RewriteRule ^(.*)/article_cat-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/article-([0-9]+)(.*)\.html$ $1/article\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html $1/brand\.php\?id=$2&cat=$3&page=$4&sort=$5&order=$6 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3&page=$4 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)\.html(.*)$ $1/brand\.php\?$4&id=$2&cat=$3 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)(.*)\.html $1/brand\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/tag-(.*)\.html $1/search\.php\?keywords=$2 [I]<br />
RewriteRule ^(.*)/snatch-([0-9]+)\.html$ $1/snatch\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/group_buy-([0-9]+)\.html$ $1/group_buy\.php\?act=view&id=$2 [I]<br />
RewriteRule ^(.*)/auction-([0-9]+)\.html$ $1/auction\.php\?act=view&id=$2 [I]<br />
RewriteRule ^(.*)/exchange-id([0-9]+)(.*)\.html$ $1/exchange\.php\?id=$2&act=view [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&integral_min=$3&integral_max=$4&page=$5&sort=$6&order=$7 [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&page=$3&sort=$4&order=$5 [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&page=$3 [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2 [I]<br />
</Directory><br />
<br />
==== 修改上传文件权限 ====<br />
由于上传的文件的所有者为 root ,Apache 无法正常写入,所以需要设置上传文件的宿主为 www-data。<br />
<br />
使用putty登录vps执行如下命令,设置 /var/www下的所有文件的宿主都是 www-data,这样apache2就可以正常读写:<br />
<br />
chown -R www-data:www-data /var/www<br />
service apache2 restart<br />
<br />
执行结果如下所示:<br />
<source lang=bash><br />
root@241541:~# chown -R www-data:www-data /var/www<br />
root@241541:~# service apache2 restart<br />
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
</source> [ OK ]<br />
<br />
==== 安装配置 ====<br />
主站点程序访问 http://www.test.com 如下图所示,进一步安装:<br />
<br />
[[Image:Vps_ApacheSite8.png]]<br />
<br />
论坛程序访问 http://bbs.test.com 如下图所示,进一步安装:<br />
<br />
[[Image:Vps_ApacheSite7.png]]<br />
<br />
以上就是完成多域名的配置。<br />
<br />
=== Apache2 301 跳转 ===<br />
如果希望将 test.com 跳转到 www.test.com ,如下配置 test.com.txt 上传到 /etc/apache2/sites-enabled/ 目录即可。<br />
<source lang=bash><br />
<VirtualHost *:80><br />
ServerName test.com<br />
RewriteCond %{HTTP_HOST} ^test\.com [NC]<br />
RewriteRule ^(.*)$ http://www.test.com/$1 [L,R=301]<br />
</VirtualHost> <br />
</source><br />
当然你也可以去 test.com 的域名那里设置 301 跳转。<br />
<br />
=== Apache2 优化 ===<br />
请一定要执行本步骤,不要认为小站,访问的人数少,有时候蜘蛛会按照超过20个以上的并发抓取数据,直接爆掉vps。表现为:可以ping,但网站打不开、数据库连不上或无法ssh。<br />
<br />
为了防止Vps被大的访问量爆掉,需要限制并发数,这里#1 VPS 调整为10, #2可以将下面的10修改为20,#3为30,以此类推。<br />
<br />
也可以根据指南最后的压力测试来确定最大并发数,确定后,将下面的命令中的 10 改为你确定的并发数即可,其它数值如 5 不要修改。<br />
<br />
请复制命令后到putty直接按鼠标右键粘贴执行:<br />
<br />
<source lang=bash><br />
sed -i -e "s/^[[:blank:]]*StartServers[[:blank:]]*.*/StartServers 5/" \<br />
-e "s/^[[:blank:]]*MinSpareServers[[:blank:]]*.*/MinSpareServers 5/" \<br />
-e "s/^[[:blank:]]*MaxSpareServers[[:blank:]]*.*/MaxSpareServers 10/" \<br />
-e "s/^[[:blank:]]*ServerLimit[[:blank:]]*.*/ServerLimit 10/" \<br />
-e "s/^[[:blank:]]*MaxClients[[:blank:]]*.*/MaxClients 10/" \<br />
-e "s/^[[:blank:]]*MinSpareThreads[[:blank:]]*.*/MinSpareThreads 5/" \<br />
-e "s/^[[:blank:]]*MaxSpareThreads[[:blank:]]*.*/MaxSpareThreads 10/" /etc/apache2/apache2.conf<br />
</source><br />
执行完毕后后,再执行以下命令,重启下apache2。<br />
<br />
service apache2 restart<br />
<br />
执行结果如下所示:<br />
<source lang=shell-session><br />
root@241541:~# sed -i -e "s/^[[:blank:]]*StartServers[[:blank:]]*.*/StartServers 5/" \<br />
> -e "s/^[[:blank:]]*MinSpareServers[[:blank:]]*.*/MinSpareServers 5/" \<br />
> -e "s/^[[:blank:]]*MaxSpareServers[[:blank:]]*.*/MaxSpareServers 10/" \<br />
> -e "s/^[[:blank:]]*ServerLimit[[:blank:]]*.*/ServerLimit 10/" \<br />
> -e "s/^[[:blank:]]*MaxClients[[:blank:]]*.*/MaxClients 10/" \<br />
> -e "s/^[[:blank:]]*MinSpareThreads[[:blank:]]*.*/MinSpareThreads 5/" \<br />
> -e "s/^[[:blank:]]*MaxSpareThreads[[:blank:]]*.*/MaxSpareThreads 10/" /etc/apache2/apache2.conf<br />
root@241541:~# service apache2 restart<br />
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.4.54.225 for ServerName<br />
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 0.4.54.225 for ServerName<br />
[ OK ]<br />
</source><br />
<br />
=== 查看 Apache2 日志 ===<br />
Apache2的日志放在 /var/log/apache2/ 目录下,可以直接使用filezilla去下载下来看。<br />
<br />
== 使用 Nginx 搭建站点 ==<br />
为什要使用 nginx?因为 apache 太耗内存了,使用 nginx 可以节约内存。<br />
<br />
采用 nginx + php-fpm + mysql 搭建。<br />
<br />
=== 删除 apache2 ===<br />
使用putty登录vps,执行如下命令:<br />
<br />
输入如下命令关闭 apache2<br />
<br />
service apache2 stop<br />
<br />
如果输入正确,会提示如下信息,表示apache2已经停止<br />
<br />
root@241541:~# service apache2 stop<br />
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
... waiting [ OK ]<br />
<br />
输入如下命令删除 apache2<br />
apt-get remove apache2 apache2.2-common<br />
<br />
出现类似如下提示时,输入 Y 并回车。<br />
<br />
0 upgraded, 1 newly installed, 7 to remove and 26 not upgraded.<br />
Need to get 5837kB of archives.<br />
After this operation, 14.5MB disk space will be freed.<br />
Do you want to continue [Y/n]?<br />
<br />
最后会出现如下提示,表示已经删除 apache2<br />
Removing libapache2-mod-php5 ...<br />
Module php5 disabled.<br />
Run '/etc/init.d/apache2 restart' to activate new configuration!<br />
Removing apache2-mpm-prefork ...<br />
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
... waiting [ OK ]<br />
Removing apache2.2-common ...<br />
Removing apache2-utils ...<br />
Removing apache2.2-bin ...<br />
<br />
=== 安装 php5-fpm php5-cgi ===<br />
安装 php5-fpm 执行如下命令:<br />
apt-get install php5-cgi php5-fpm php5-gd php5-mysql php5-curl php5-mcrypt php5-common php-apc<br />
php5enmod mcrypt<br />
<br />
出现下面的提示表示安装成功<br />
<source lang=bash><br />
root@241541:~# apt-get install php5-cgi php5-fpm php5-gd php5-mysql php5-mcrypt php5-common php-apc<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
php5-cgi is already the newest version.<br />
php5-cgi set to manually installed.<br />
Suggested packages:<br />
php-pear<br />
The following NEW packages will be installed:<br />
libevent-1.4-2 php5-fpm<br />
0 upgraded, 2 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 3002kB of archives.<br />
After this operation, 7967kB of additional disk space will be used.<br />
Get:1 http://archive.ubuntu.com/ubuntu/ maverick/main libevent-1.4-2 i386 1.4.13-stable-1 [56.2kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ maverick-updates/universe php5-fpm i386 5.3.3-1ubuntu9.5 [2946kB]<br />
Fetched 3002kB in 1s (2181kB/s)<br />
Selecting previously deselected package libevent-1.4-2.<br />
(Reading database ... 21902 files and directories currently installed.)<br />
Unpacking libevent-1.4-2 (from .../libevent-1.4-2_1.4.13-stable-1_i386.deb) ...<br />
Selecting previously deselected package php5-fpm.<br />
Unpacking php5-fpm (from .../php5-fpm_5.3.3-1ubuntu9.5_i386.deb) ...<br />
Setting up libevent-1.4-2 (1.4.13-stable-1) ...<br />
Setting up php5-fpm (5.3.3-1ubuntu9.5) ...<br />
update-rc.d: warning: php5-fpm stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (none)<br />
* Starting PHP5 FPM... Aug 13 06:25:50.352643 [WARNING] [pool www] pm.start_servers is not set. It's been set to 20.<br />
[ OK ]<br />
<br />
Creating config file /etc/php5/fpm/php.ini with new version<br />
Processing triggers for libc-bin ...<br />
ldconfig deferred processing now taking place<br />
</source><br />
安装完毕后,我们调整下 php5-fpm 使其采用 127.0.0.1:9000 进行监听,执行如下命令:<br />
sed -i -e 's/listen =.*$/listen = 127.0.0.1:9000/' `grep -R -l listen /etc/php5/fpm`<br />
<br />
完毕后,重启下 php5-fpm,执行如下命令重启<br />
service php5-fpm restart <br />
<br />
出现如下提示,表示重启成功<br />
root@241541:~# service php5-fpm restart<br />
php5-fpm stop/waiting<br />
php5-fpm start/running, process 6899<br />
<br />
=== 安装 mysql ===<br />
[[Vps#.E5.AE.89.E8.A3.85_mysql_.E6.95.B0.E6.8D.AE.E5.BA.93.E6.9C.8D.E5.8A.A1|见前面的安装 mysql 的步骤。]]<br />
<br />
=== 安装 nginx ===<br />
使用putty登录vps,执行如下命令: <br />
<br />
apt-get install nginx<br />
<br />
出现如下提示,表示已经安装完毕:<br />
<br />
<source lang=bash><br />
root@241541:~# apt-get install nginx<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
Suggested packages:<br />
ufw<br />
The following NEW packages will be installed:<br />
nginx<br />
0 upgraded, 1 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 341kB of archives.<br />
After this operation, 827kB of additional disk space will be used.<br />
Get:1 http://archive.ubuntu.com/ubuntu/ maverick/universe nginx i386 0.7.67-3ubuntu1 [341kB]<br />
Fetched 341kB in 0s (437kB/s)<br />
Selecting previously deselected package nginx.<br />
(Reading database ... 21918 files and directories currently installed.)<br />
Unpacking nginx (from .../nginx_0.7.67-3ubuntu1_i386.deb) ...<br />
Setting up nginx (0.7.67-3ubuntu1) ...<br />
</source><br />
<br />
再执行下面的命令启动nginx服务:<br />
<br />
service nginx start<br />
<br />
结果如下所示,表示nginx顺利启动:<br />
<br />
root@241541:~# service nginx start<br />
Starting nginx: nginx.<br />
<br />
=== 测试站点 ===<br />
由于nginx默认的站点不支持php,所以需要修改默认站点。<br />
<br />
编辑文件名为 default.txt ,注意下面的 server_name 修改为你的vps的ip地址,可以写一个IP,也可以都写上,IP和IP之间有空格。<br />
<br />
配置文件中的 root 就是站点的目录了,可以更改为你的站点的路径。<br />
<br />
server {<br />
listen 80;<br />
server_name 184.82.9.30 184.82.9.31;<br />
index index.html index.htm index.php;<br />
root /var/www/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
<br />
将 default.txt 文件使用 filezilla 上传到 /etc/nginx/sites-enabled 目录下<br />
<br />
使用 putty 登录vps,输入如下命令重启 nginx 服务<br />
<br />
service nginx restart<br />
<br />
重启结果如下所示:<br />
root@241541:~# service nginx restart<br />
Restarting nginx: nginx.<br />
<br />
==== 安装phpsysinfo ====<br />
按照前面apache2讲述的安装<br />
<br />
==== 安装 php 探针 ====<br />
[[Vps#.E5.AE.89.E8.A3.85_php_.E6.8E.A2.E9.92.88|按照前面apache2讲述的安装]]<br />
<br />
==== 安装 phpmyadmin ====<br />
照前面 Apache2 安装 phpmyadmin, 注意第二步不要再按空格选择 apache2 , 直接回车下一步。<br />
<br />
如果已经之前已经安装过 phpmyadmin ,不需要删除,继续使用。<br />
<br />
安装完毕 phpmyadmin 后, 继续在 putty 里面执行如下命令即可:<br />
<br />
cd /var/www<br />
ln -s /usr/share/phpmyadmin .<br />
<br />
执行情况如下所示:<br />
root@241541:~# cd /var/www<br />
root@241541:/var/www# ln -s /usr/share/phpmyadmin .<br />
root@241541:/var/www#<br />
<br />
然后就可以在浏览器里面访问 phpmyadmin 了。 访问地址: http://184.82.9.30/phpmyadmin/<br />
<br />
=== 配置虚拟站点 ===<br />
以上运行环境均已经安装完毕,下面讲如何配置 nginx 的多域名。<br />
<br />
假设前提: 你有一个域名 test.com ,你希望搭建两个站点,第一个站点是 www.test.com 和 test.com 为主页,同时希望提供 bbs.test.com 为论坛。<br />
<br />
下面的文档对多个不同的域名也是适用的。<br />
<br />
==== 配置域名 ====<br />
参考上面 apache2 的配置域名部分。<br />
<br />
==== 上传程序 ====<br />
参考上面 apache2 的上传程序部分。<br />
<br />
==== 多域名配置 ====<br />
这里推荐编辑器直接使用记事本,不要使用其他的高级编辑器。<br />
<br />
编辑www.test.com的站点配置文件 test.com.txt <br />
<br />
server {<br />
listen 80;<br />
server_name www.test.com test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/test/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
<br />
编辑bbs.test.com的站点配置文件 bbs.test.com.txt<br />
<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
<br />
将这两个文件使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录<br />
<br />
==== Nginx 伪静态 ====<br />
下面是常用的一些伪静态配置,复制出来,插入到站点的配置文件最后一个 } 号之前,如下:<br />
<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
#伪静态代码段开始 <br />
location / {<br />
...............................<br />
}<br />
#伪静态代码段结束 <br />
}<br />
<br />
Discuz!X 在 Nginx 下的伪静态配置如下:<br />
<br />
location / {<br />
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;<br />
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;<br />
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;<br />
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;<br />
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;<br />
}<br />
<br />
将这一段代码加入到上面的站点配置文件中,例如:<br />
<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
location / {<br />
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;<br />
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;<br />
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;<br />
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;<br />
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;<br />
}<br />
}<br />
<br />
WordPress 在 Nginx 下的伪静态配置如下:<br />
location / {<br />
if (-f $request_filename/index.html){<br />
rewrite (.*) $1/index.html break;<br />
}<br />
if (-f $request_filename/index.php){<br />
rewrite (.*) $1/index.php;<br />
}<br />
if (!-f $request_filename){<br />
rewrite (.*) /index.php;<br />
}<br />
}<br />
<br />
<br />
ECShop 在 Nginx 下的伪静态配置如下:<br />
location / {<br />
if (!-e $request_filename) {<br />
rewrite "^/index\.html" /index.php last;<br />
rewrite "^/category$" /index.php last;<br />
rewrite "^/feed-c([0-9]+)\.xml$" /feed.php?cat=$1 last;<br />
rewrite "^/feed-b([0-9]+)\.xml$" /feed.php?brand=$1 last;<br />
rewrite "^/feed\.xml$" /feed.php last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)(.*)\.html$" /category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /category.php?id=$1&brand=$2&page=$3&sort=$4&order=$5 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$" /category.php?id=$1&brand=$2&page=$3 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)(.*)\.html$" /category.php?id=$1&brand=$2 last;<br />
rewrite "^/category-([0-9]+)(.*)\.html$" /category.php?id=$1 last;<br />
rewrite "^/goods-([0-9]+)(.*)\.html" /goods.php?id=$1 last;<br />
rewrite "^/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /article_cat.php?id=$1&page=$2&sort=$3&order=$4 last;<br />
rewrite "^/article_cat-([0-9]+)-([0-9]+)(.*)\.html$" /article_cat.php?id=$1&page=$2 last;<br />
rewrite "^/article_cat-([0-9]+)(.*)\.html$" /article_cat.php?id=$1 last;<br />
rewrite "^/article-([0-9]+)(.*)\.html$" /article.php?id=$1 last;<br />
rewrite "^/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html" /brand.php?id=$1&cat=$2&page=$3&sort=$4&order=$5 last;<br />
rewrite "^/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html" /brand.php?id=$1&cat=$2&page=$3 last;<br />
rewrite "^/brand-([0-9]+)-c([0-9]+)(.*)\.html" /brand.php?id=$1&cat=$2 last;<br />
rewrite "^/brand-([0-9]+)(.*)\.html" /brand.php?id=$1 last;<br />
rewrite "^/tag-(.*)\.html" /search.php?keywords=$1 last;<br />
rewrite "^/snatch-([0-9]+)\.html$" /snatch.php?id=$1 last;<br />
rewrite "^/group_buy-([0-9]+)\.html$" /group_buy.php?act=view&id=$1 last;<br />
rewrite "^/auction-([0-9]+)\.html$" /auction.php?act=view&id=$1 last;<br />
rewrite "^/exchange-id([0-9]+)(.*)\.html$" /exchange.php?id=$1&act=view last;<br />
rewrite "^/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /exchange.php?cat_id=$1&integral_min=$2&integral_max=$3&page=$4&sort=$5&order=$6 last;<br />
rewrite "^/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /exchange.php?cat_id=$1&page=$2&sort=$3&order=$4 last;<br />
rewrite "^/exchange-([0-9]+)-([0-9]+)(.*)\.html$" /exchange.php?cat_id=$1&page=$2 last;<br />
rewrite "^/exchange-([0-9]+)(.*)\.html$" /exchange.php?cat_id=$1 last;<br />
}<br />
}<br />
<br />
==== 修改上传文件权限 ====<br />
由于上传的文件的所有者为 root ,Nginx 无法正常写入,所以需要设置上传文件的宿主为 www-data。<br />
<br />
使用putty登录vps执行如下命令,设置 /var/www下的所有文件的宿主都是 www-data,这样nginx就可以正常读写:<br />
<br />
chown -R www-data:www-data /var/www<br />
service nginx restart<br />
<br />
执行结果如下所示:<br />
<br />
root@241541:~# chown -R www-data:www-data /var/www<br />
root@195669:~# service nginx restart<br />
Restarting nginx: nginx.<br />
<br />
==== 安装配置 ====<br />
见 apache2 的安装配置部分<br />
<br />
=== nginx 301 跳转 ===<br />
如果希望将 test.com 跳转到 www.test.com ,如下配置 test.com.txt 上传到 /etc/nginx/sites-enabled/ 目录即可。<br />
<source lang=bash><br />
server {<br />
listen 80;<br />
server_name test.com;<br />
rewrite ^/(.*) http://www.test.com/$1 permanent;<br />
}<br />
</source><br />
当然你也可以去 test.com 的域名那里设置 301 跳转。<br />
<br />
=== nginx 优化 ===<br />
请一定要执行本步骤,不要认为小站,访问的人数少,有时候蜘蛛会按照超过20个以上的并发抓取数据,直接爆掉vps。表现为:可以ping,但网站打不开、数据库连不上或无法ssh。<br />
<br />
为了防止Vps被大的访问量爆掉,需要限制并发数,这里#1 VPS 调整为10, #2可以将下面的10修改为20,#3为30,以此类推。 <br />
<br />
也可以根据指南最后的压力测试来确定最大并发数,确定后,将下面的命令中的 10 改为你确定的并发数即可,其它数值如 5 不要修改。<br />
<br />
因为命令中包括了 ` 号,所以请复制命令后到putty直接按鼠标右键粘贴执行:<br />
<br />
sed -i -e 's/pm.max_children =.*$/pm.max_children = 10/' `grep -R -l pm.max_children /etc/php5/fpm`<br />
sed -i -e 's/pm.start_servers =.*$/pm.start_servers = 5/' `grep -R -l pm.max_children /etc/php5/fpm`<br />
sed -i -e 's/pm.max_spare_servers =.*$/pm.max_spare_servers = 10/' `grep -R -l pm.max_children /etc/php5/fpm`<br />
<br />
执行完毕后,重启下 php-fpm 服务:<br />
<br />
service php5-fpm restart<br />
<br />
=== nginx 限制同一IP的并发数和连接流量 ===<br />
在终端执行下面语句开启nginx并发支持:<br />
echo "limit_conn_zone \$binary_remote_addr zone=one:10m;" > /etc/nginx/conf.d/limitconn.conf<br />
<br />
然后打开虚拟站点配置文件,如编辑上面例子中的 bbs.test.com 站点配置文件 bbs.test.com.txt,<br />
<br />
在 server_name bbs.test.com; 这一行下面插入如下:<br />
<br />
limit_conn one 20;<br />
limit_rate 200k;<br />
<br />
上面的20,标示同一IP的最大并发数为20。200k为连接的最大速度为200k。<br />
<br />
注意,这里控制的流量是针对单一连接的,并不是同一IP的最大速度,其最大速度为200k*20=4000k。<br />
<br />
最终修改后的结果如下所示:<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
limit_conn one 20;<br />
limit_rate 200k;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
将上面的配置文件重新使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录,覆盖后,执行以下命令重启 nginx 使配置生效:<br />
service nginx restart<br />
<br />
=== 查看 nginx 日志 ===<br />
Nginx的日志放在 /var/log/nginx/ 目录下,可以使用 filezilla 下载下来查看。<br />
<br />
=== 配置CDN或反向代理 ===<br />
我们需要将 www.test.com 或 test.com 的访问反向代理到 192.168.1.1 地址上。<br />
<br />
1 执行如下命令来建立缓存目录和临时目录,这里默认为最大20g的缓存空间,可以根据你的实际情况增加或减小,修改地方为 max_size=20g;<br />
<br />
mkdir /var/www/cache<br />
mkdir /var/www/temp<br />
chown -R www-data:www-data /var/www<br />
echo "proxy_cache_path /var/www/cache levels=1:2 keys_zone=cache_one:100m inactive=7d max_size=20g;" > /etc/nginx/conf.d/cdn.conf<br />
echo "proxy_temp_path /var/www/temp;" >> /etc/nginx/conf.d/cdn.conf<br />
<br />
2 编辑 www.test.com 站点的反向代理配置文件 test.com.txt 如下:<br />
<source lang=bash><br />
server {<br />
listen 80;<br />
server_name www.test.com test.com;<br />
location / { <br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_pass_header Server;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
location ~ .*\.(gif|png|jpg|jpeg|swf|zip|gz|tar|bz2|rar|doc|txt|ico|cur)$ {<br />
proxy_cache cache_one;<br />
proxy_cache_valid 30d;<br />
proxy_cache_key $host$uri$is_args$args;<br />
proxy_set_header Host $host;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
location ~ .*\.(css|js)?$ {<br />
proxy_cache cache_one;<br />
proxy_cache_valid 1h;<br />
proxy_cache_key $host$uri$is_args$args;<br />
proxy_set_header Host $host;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
}<br />
</source><br />
<br />
上面的配置中 "gif|png|jpg|jpeg|swf|zip|gz|tar|bz2|rar|doc|txt|ico|cur" 的后缀缓存设置的为30天,css|js 后缀的为1小时,你可以根据实际需求调整 proxy_cache_valid 30d; 行最后的 30d 为其它的值,如缓存1天为: proxy_cache_valid 1d; <br />
<br />
如果不需要缓存,直接设置为如下:<br />
<source lang=bash><br />
server {<br />
listen 80;<br />
server_name www.test.com test.com;<br />
location / { <br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_pass_header Server;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
}<br />
</source><br />
<br />
3 将这个文件使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录 <br />
<br />
4 执行下面的重启 nginx 命令,使配置生效。<br />
service nginx restart<br />
<br />
5 然后就可以去域名管理那里将 www.test.com test.com 的IP设置为VPS的IP即可。<br />
<br />
=== 反向代理 Google ===<br />
由于谷歌需要 https 才可以访问,所以反向代理谷歌需要占用服务器的 https 443 端口。<br />
<br />
1 产生 https 证书<br />
apt-get install openssl<br />
cd /etc/nginx/<br />
openssl genrsa -out google.key 1024<br />
openssl req -new -key google.key -out google.csr<br />
openssl x509 -req -days 3650 -in google.csr -signkey google.key -out google.crt<br />
2 建立配置文件 google.test.com.txt 这里用 google.test.com 来反向代理 google.com 如下:<br />
<source lang=bash>server {<br />
listen 80;<br />
server_name google.test.com;<br />
rewrite ^(.*) https://google.test.com$1 permanent;<br />
}<br />
<br />
server {<br />
listen 443;<br />
server_name google.test.com;<br />
ssl on;<br />
ssl_certificate /etc/nginx/google.crt;<br />
ssl_certificate_key /etc/nginx/google.key;<br />
location / {<br />
proxy_redirect https://www.google.com.hk/ /;<br />
proxy_cookie_domain google.com.hk google.test.com;<br />
proxy_set_header Host www.google.com.hk;<br />
proxy_pass https://www.google.com.hk;<br />
}<br />
}</source><br />
<br />
3 将这个文件使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录 <br />
<br />
4 执行下面的重启 nginx 命令,使配置生效。<br />
service nginx restart<br />
<br />
5 然后就可以去域名管理那里将 google.test.com 的IP设置为VPS的IP即可。<br />
<br />
6 完成,可以通过访问 https://google.test.com 来访问google了。<br />
<br />
== 安装邮件服务器 ==<br />
注意:官方对架设邮件服务器非常限制,担心对外发垃圾邮件,一旦被举报,就直接封VPS,所以下面的配置中,我们将邮件通过 Gmail 的账号转发出去。<br />
<br />
在 Putty 使用如下命令,安装 postfix,替换下面命令中的第一行 mydomain.com 为 你VPS上绑定的域名,如果有多个域名,选择其中一个即可。<br />
<br />
hostname mydomain.com<br />
apt-get -y install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules<br />
<br />
在弹出的对话框中,如果你的邮件服务器仅仅为你本地的程序使用,可以直接选择 Local only ,否则请选择其它选项。<br />
<br />
安装完成后,请运行如下命令限制 postfix 为 10 个并发:<br />
postconf -e default_process_limit=10<br />
<br />
将邮件服务器采用gmail账号做邮件中转,首先你需要先有一个gmail的账号: USERNAME@gmail.com PASSWORD ,为了避免出现Gmail的图形验证登陆,你可以开启Gmail的账号的二次验证,然后创建一个应用密码,这样你可以采用应用密码来配置。<br />
postconf -e relayhost=smtp.gmail.com:587<br />
postconf -e smtp_sasl_auth_enable=yes<br />
postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd<br />
postconf -e smtp_sasl_security_options=noanonymous<br />
postconf -e smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt<br />
postconf -e smtp_use_tls=yes<br />
<br />
下面的脚本中的 USERNAME 和 PASSWORD 单词请改为你正确的用户名和密码,<br />
echo "smtp.gmail.com:587 USERNAME@gmail.com:PASSWORD" > /etc/postfix/sasl_passwd<br />
chmod 400 /etc/postfix/sasl_passwd<br />
postmap /etc/postfix/sasl_passwd<br />
service postfix restart<br />
<br />
完成了本地邮件服务器的搭建。<br />
<br />
测试下:<br />
echo "Test mail" | mail -s "Test" you@example.com<br />
<br />
查看邮件投递日志:<br />
tail /var/log/mail.log<br />
<br />
这样你的程序就可以直接使用本地的SMTP服务对外发邮件了。<br />
<br />
== 搭建临时的FTP服务 ==<br />
前面已经提到了可以直接使用 Sftp 来访问 Vps,如果需要临时的搭建Ftp,则按下面的指南进行。<br />
<br />
=== 下载 pyftpdlib 库 ===<br />
<br />
在 Putty 使用如下命令,下载 pyftpdlib 库并解压缩。<br />
<source lang=bash><br />
cd /root<br />
wget https://pypi.python.org/packages/a8/f8/0f6db156898616dbcbd7bf865660295c81479071ab0fcd1898fe1b3a4fc4/pyftpdlib-1.5.1.tar.gz<br />
tar xzvf pyftpdlib-1.5.1.tar.gz<br />
</source><br />
解压缩完毕后,我们可以临时开启ftp了:<br />
<br />
=== 开启匿名ftp服务 ===<br />
<br />
开启匿名ftp服务,主目录为 /var/www ;默认是21端口;-d 是设置主目录。<br />
<br />
cd /root/pyftpdlib-1.5.1/<br />
python -m pyftpdlib -d /var/www<br />
<br />
运行该命令后,客户端就可以使用 anonymous 帐号登录,下载了。<br />
<br />
按 Ctrl+C 结束 Ftp 服务器。<br />
<br />
=== 开启允许写入ftp服务 ===<br />
<br />
添加 -w 参数即可允许写入,不可以长时间开,小心被其它人删除数据。<br />
<br />
cd /root/pyftpdlib-1.5.1/<br />
python -m pyftpdlib -w -d /var/www <br />
<br />
运行该命令后,客户端就可以使用匿名帐号登录,下载和上传了。<br />
<br />
=== 登录ftp的账号 ===<br />
<br />
IP: VPS服务器的IP 用户名: anonymous 密码:随便输入一个邮箱即可。<br />
<br />
=== 关闭ftp服务 ===<br />
直接关闭终端就会退出ftp服务,如果不想关闭可以同时按下 ctrl+c 退出ftp服务。<br />
<br />
== VPS 自我监控 ==<br />
<br />
=== 监控内存和负载 ===<br />
为了防止VPS的内存超过,或系统负载过重,建议采用如下监控脚本:<br />
<br />
规则:当剩余内存小于1M或当前负载大于3时,系统重启。<br />
<br />
在 Putty 里面执行下面的语句,创建 /usr/bin/vpscheck.sh 脚本,<br />
cat << "EOF" > /usr/bin/vpscheck.sh<br />
#!/bin/bash<br />
free_mem=$(grep MemFree /proc/meminfo | awk '{print $2}')<br />
echo 'Free Memory:'$free_mem<br />
if [ $free_mem -lt 1000 ];then<br />
shutdown -r now<br />
fi<br />
load=$(awk '$1 > 3 {print $1}' /proc/loadavg)<br />
echo "Load:"$load<br />
if [ -n "$load" ];then<br />
shutdown -r now<br />
fi<br />
EOF<br />
<br />
再配置定时器,让上面的脚本可以每5分钟运行一次检查,继续在putty里面执行如下命令:<br />
chmod +x /usr/bin/vpscheck.sh<br />
echo "*/5 * * * * root /usr/bin/vpscheck.sh" > /etc/cron.d/vpscheck<br />
service cron restart<br />
<br />
完成性能监控。<br />
<br />
=== 监控网站并发数 ===<br />
为了防止网站无法访问,做如下检测:<br />
<br />
规则:当访问的并发数超过100,系统重启。<br />
<br />
在 Putty 里面执行下面的语句,创建 /usr/bin/wwwcheck.sh 脚本,<br />
cat << "EOF" > /usr/bin/wwwcheck.sh<br />
#!/bin/bash<br />
count=`netstat -na|grep :80|wc -l`<br />
echo 'Count:'$count<br />
if [ $count -gt 100 ];then<br />
shutdown -r now<br />
fi<br />
EOF<br />
<br />
再配置定时器,让上面的脚本可以每5分钟运行一次检查,继续在putty里面执行如下命令:<br />
chmod +x /usr/bin/wwwcheck.sh<br />
echo "*/5 * * * * root /usr/bin/wwwcheck.sh" > /etc/cron.d/wwwcheck<br />
service cron restart<br />
<br />
完成网站并发监控。<br />
<br />
== 安全相关事项 ==<br />
<br />
=== 防止扫描 ===<br />
<br />
vps的root密码不要设置的太简单,这样很容易被攻破,你可以安装如下软件来降低vps被攻破的机会。<br />
<br />
输入如下命令:<br />
<br />
apt-get install fail2ban<br />
<br />
提示如下表示安装完成:<br />
<source lang=bash><br />
root@241541:/# ~# apt-get install fail2ban<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
python-pyinotify<br />
Suggested packages:<br />
python-gamin python-pyinotify-doc<br />
The following NEW packages will be installed:<br />
fail2ban python-pyinotify<br />
0 upgraded, 2 newly installed, 0 to remove and 62 not upgraded.<br />
Need to get 154 kB of archives.<br />
After this operation, 763 kB of additional disk space will be used.<br />
Do you want to continue? [Y/n] y<br />
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe fail2ban all 0.8.11-1 [129 kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main python-pyinotify all 0.9.4-1build1 [24.5 kB]<br />
Fetched 154 kB in 0s (213 kB/s)<br />
Selecting previously unselected package fail2ban.<br />
(Reading database ... 28959 files and directories currently installed.)<br />
Preparing to unpack .../fail2ban_0.8.11-1_all.deb ...<br />
Unpacking fail2ban (0.8.11-1) ...<br />
Selecting previously unselected package python-pyinotify.<br />
Preparing to unpack .../python-pyinotify_0.9.4-1build1_all.deb ...<br />
Unpacking python-pyinotify (0.9.4-1build1) ...<br />
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...<br />
fopen: Permission denied<br />
Setting up fail2ban (0.8.11-1) ...<br />
* Starting authentication failure monitor fail2ban [ OK ]<br />
Setting up python-pyinotify (0.9.4-1build1) ...<br />
</source><br />
这样如果用户5次密码输入错误,将会自动将其IP加到黑名单,禁止登录10分钟,10分钟后才可以再登录。<br />
<br />
=== 防止php木马 ===<br />
<br />
{{Qref Alarm}} 通过设置限制php的 eval 函数来防止木马,可能会导致某些程序无法正常运行,目前在 Ubuntu 14.04 版本上测试通过。<br />
<br />
编辑 /etc/php5/conf.d/suhosin.ini 文件,如果找不到这个文件,执行如下命令安装 php5-suhosin 模块<br />
<br />
sudo apt-get install php5-suhosin<br />
<br />
打开此文件后,找到行: <br />
;suhosin.executor.eval.blacklist =<br />
<br />
修改为:<br />
<br />
suhosin.executor.eval.blacklist = include,include_once,require,require_once,curl_init,fpassthru,file,base64_encode,base64_decode,mail,exec,system,proc_open,leak,syslog,pfsockopen,shell_exec,ini_restore,symlink,stream_socket_server,proc_nice,popen,proc_get_status,dl, pcntl_exec, pcntl_fork, pcntl_signal,pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled,pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept,socket_bind, socket_connect, socket_create, socket_create_listen,socket_create_pair,link,register_shutdown_function,register_tick_function <br />
<br />
然后重启下 apache2 或 php5-fpm 即可<br />
<br />
=== 木马基本检查和手工清除 ===<br />
一般采用如下命令去检查有危险文件:<br />
cd /var/www/<br />
grep -R base64_decode *|more<br />
<br />
如果看到类似这样的东西,就可以肯定中木马了:<br />
<br />
eval(base64_decode("一大串无意义字母<br />
或<br />
eval(base64_decode($_POST["<br />
或<br />
eval(gzuncompress(base64_decode<br />
<br />
最佳方案,重装系统,重新配置过。<br />
<br />
也可以尝试使用下面的命令手工清除<br />
<br />
find /var/www/ -name '*.php' -exec sed -i -r "s/eval.{0,10}\(.{0,10}base64_decode.*?\);//g" {} \;<br />
find /var/www/ -name '*.php' -exec sed -i -r "s/eval.{0,10}\(.{0,10}gzuncompress.{0,10}\(.{0,10}base64_decode.*?\);//g" {} \;<br />
find /var/www/ -name '*.php' -exec sed -i -r "s/eval.{0,10}\(.{0,10}stripslashes.*?\);//g" {} \;<br />
<br />
然后继续检查有没有群发邮件的木马:<br />
<br />
grep -R -E 'POST.*pfsockopen.*EHLO' /var/www/<br />
<br />
发现后,如果确定是木马,采用如下命令批量删除木马文件:<br />
<br />
grep -R -l -E 'POST.*pfsockopen.*EHLO' /var/www/ | xargs rm -f<br />
<br />
查查 eval 和 fwrite 函数<br />
<br />
grep -R -E 'REQUEST.*eval.*fwrite' /var/www/<br />
<br />
发现后,如果确认是木马,采用如下命令批量删除木马文件:<br />
<br />
grep -R -l -E 'REQUEST.*eval.*fwrite' /var/www/ | xargs rm -f<br />
<br />
最后重点检查 包含 eval 函数的 php 文件<br />
<br />
find . -name "*.php" -exec grep -l eval {} \;<br />
<br />
如果发现有无意义的单词,多半也是中木马了,不过这种需要手工删除相关被感染代码。<br />
<br />
<br />
=== 根据访问日志批量封IP ===<br />
有时候,我们可以去检查 HTTP 的访问日志发现异常,然后根据这些异常来封 IP。<br />
<br />
首先检查异常, 关键词:xmlrpc.php ,下面的命令可以根据你的需求来调整关键词,其中 access.log 为你的 HTTP 的访问日志文件,可以根据实际情况修改。<br />
<br />
执行下面的命令,可以显示所有的 IP 地址,来进行查看:<br />
cat access.log | grep "xmlrpc.php" | awk '{print $1}' | sort | uniq<br />
<br />
确认无误后,执行下面的命令进行封禁:<br />
cat access.log | grep "xmlrpc.php" | awk '{print $1}' | sort | uniq | xargs -n1 -I {} iptables -A INPUT -p tcp --dport 80 -s {}/32 -j DROP<br />
<br />
执行完毕后,可以使用如下命令查看封禁结果:<br />
iptables -L<br />
<br />
注意,上面只是临时封禁,如果重启VPS,将会清空规则。<br />
<br />
=== 关闭邮件服务 ===<br />
由于国外对发垃圾邮件的处罚很重,会导致 VPS 被终止,所以为了防止误发邮件或被木马、黑客利用,如果你不需要发送邮件,则关闭邮件服务:<br />
<br />
1 删除邮件服务<br />
执行如下命令删除服务器的邮件程序:<br />
apt-get remove postfix* sendmail* procmail*<br />
<br />
2 防火墙屏蔽邮件转发<br />
执行如下命令屏蔽邮件端口转发:<br />
iptables -I FORWARD -p tcp --dport 25 -j DROP<br />
sed -i '$i\iptables -I FORWARD -p tcp --dport 25 -j DROP' /etc/rc.local<br />
<br />
== 备份站点 ==<br />
将 vps 成功安装好软件后,面临的第二大的事情是如何备份现有的东西?<br />
<br />
你需要备份 3 个方面的内容: 1 站点配置文件 2 站点文件 3 数据库, 分别讲解如下:<br />
<br />
=== 备份站点配置文件 ===<br />
看前面的设置,一般情况,我们需要备份Apache或Nginx,如果你修改了Mysql的配置,则需要备份Mysql的配置。<br />
<br />
注意在使用 tar 备份时,推荐使用 “tar czf 备份文件名 需要备份的路径” 来备份,你也可以使用 “tar czvf ..." 来显示备份详细的进度;但当备份文件很多时,显示中间的备份过程会很花时间和带宽,所以并不建议使用。<br />
<br />
备份完毕后,就可以直接使用 filezilla 到 /root 目录去下载你备份的文件了。<br />
<br />
==== 备份Apache配置文件 ====<br />
执行如下命令备份Apache的配置到 /root 下 :<br />
<br />
cd<br />
tar czf apache2.tar.gz /etc/apache2<br />
<br />
备份的文件名叫 apache2.tar.gz ,执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# tar czf apache2.tar.gz /etc/apache2<br />
tar: Removing leading `/' from member names<br />
<br />
检查下备份的文件大小,输入<br />
ls -l apache2.tar.gz<br />
结果显示如下,表示备份成功<br />
root@241541:~# ls -l apache2.tar.gz<br />
-rw-r--r-- 1 root root 31021 Aug 13 18:32 apache2.tar.gz<br />
<br />
==== 备份Nginx配置文件 ====<br />
执行如下命令备份Nginx的配置到 /root 下 :<br />
<br />
cd<br />
tar czf nginx.tar.gz /etc/nginx<br />
<br />
备份的文件名叫 nginx.tar.gz ,执行结果如下:<br />
<br />
root@241541:~# cd<br />
root@241541:~# tar czf nginx.tar.gz /etc/nginx<br />
tar: Removing leading `/' from member names<br />
检查下<br />
root@241541:~# ls -l nginx.tar.gz<br />
-rw-r--r-- 1 root root 5179 Aug 13 18:21 nginx.tar.gz<br />
<br />
==== 备份Mysql配置文件 ====<br />
执行如下命令备份Mysql的配置到 /root 下 :<br />
<br />
cd<br />
tar czf mysql.tar.gz /etc/mysql<br />
<br />
备份的文件名叫 mysql.tar.gz ,执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# tar czf mysql.tar.gz /etc/mysql<br />
tar: Removing leading `/' from member names<br />
<br />
检查下<br />
root@241541:~# ls -l mysql.tar.gz<br />
-rw-r--r-- 1 root root 2639 Aug 13 18:25 mysql.tar.gz<br />
<br />
=== 备份站点文件 ===<br />
执行如下命令备份 /var/www 的配置到 /root 下 :<br />
<br />
cd<br />
tar czf www.tar.gz /var/www<br />
<br />
备份的文件名叫 www.tar.gz ,执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# tar czf www.tar.gz /var/www<br />
tar: Removing leading `/' from member names<br />
<br />
检查如下<br />
root@241541:~# ls -l www.tar.gz<br />
-rw-r--r-- 1 root root 12042534 Aug 13 18:43 www.tar.gz<br />
<br />
=== 备份数据库 ===<br />
由于数据库本身包含了帐号和权限信息,所以我们完整备份整个数据库。<br />
<br />
执行以下命令备份数据库到 /root 目录<br />
<br />
cd<br />
mysqldump -p --all-databases |gzip > mysql.sql.gz<br />
<br />
会提示输入密码,输入mysql的密码后回车完成备份,如下所示。<br />
<br />
root@241541:~# mysqldump -p --all-databases |gzip > mysql.sql.gz<br />
Enter password:<br />
<br />
备份的文件名为 mysql.sql.gz ,检查一下备份的时间和大小<br />
root@241541:~# ls -l mysql.sql.gz<br />
-rw-r--r-- 1 root root 133351 Aug 13 19:01 mysql.sql.gz<br />
<br />
== 恢复站点 ==<br />
当 vps 出现故障后如何恢复?<br />
<br />
首先你需要重新去reload系统到原来的系统,然后再按照前面的指南,安装好和之前一样的运行环境。<br />
<br />
然后将你备份的所有文件使用 filezilla 上传到 vps 的 /root 目录下。<br />
<br />
最后需要恢复 3 个方面的内容: 1 站点配置文件 2 站点文件 3 数据库, 分别讲解如下:<br />
<br />
=== 恢复站点配置文件 ===<br />
==== 恢复Apache配置文件 ====<br />
假设 apache 的备份文件名为 apache2.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf apache2.tar.gz<br />
cp -a etc/apache2 /etc/apache2<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf apache2.tar.gz<br />
root@241541:~# cp -a etc/apache2 /etc/<br />
<br />
使用如下命令重启 Apache2 :<br />
service apache2 restart<br />
<br />
==== 恢复Nginx配置文件 ====<br />
假设 nginx 的备份文件名为 nginx.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf nginx.tar.gz<br />
cp -a etc/nginx /etc/nginx<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf nginx.tar.gz<br />
root@241541:~# cp -a etc/nginx /etc/<br />
<br />
使用如下命令重启 nginx :<br />
service nginx restart<br />
<br />
==== 恢复Mysql配置文件 ====<br />
假设 mysql 的备份文件名为 mysql.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf mysql.tar.gz<br />
cp -a etc/mysql /etc/<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf mysql.tar.gz<br />
root@241541:~# cp -a etc/mysql /etc/mysql<br />
<br />
=== 恢复站点文件 ===<br />
由于站点占用的空间比较大,所有我们不复制过去,解压缩后直接移动过去。<br />
<br />
假设站点的备份文件名为 www.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf www.tar.gz<br />
rm -fr /var/www/*<br />
mv var/www/* /var/www/<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf www.tar.gz<br />
root@241541:~# rm -fr /var/www/*<br />
root@241541:~# mv var/www/* /var/www/<br />
<br />
=== 恢复数据库 ===<br />
假设 mysql 的备份文件名为 mysql.sql.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
gunzip < mysql.sql.gz | mysql -p<br />
<br />
会提示输入当前新安装的mysql密码,输入密码后回车继续。<br />
<br />
执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# gunzip < mysql.sql.gz | mysql -p<br />
Enter password:<br />
<br />
== 使用 Dropbox 每天自动备份 ==<br />
=== 注册 Dropbox ===<br />
Dropbox 是一个美国的在线网盘,默认提供了2G的空间,同时可以通过邀请其他朋友使用的手段增加容量。<br />
<br />
为什么使用这个,主要是 VPS 到 Dropbox 备份可以到 1M 的真实传输速度,加上可以加容量,所以是非常理想的备份方式。<br />
<br />
点击 [https://www.dropbox.com/ 注册 Dropbox] 并登录到 Dropbox 网页。<br />
<br />
BTW:淘宝上也有人提供扩容到20G的服务,风险自行承担。<br />
<br />
Dropbox 将申请150M内存,实际消耗17M内存,所以请注意控制内存。<br />
<br />
[[Image:Vps dropbox.png]]<br />
<br />
=== 安装 Dropbox 客户端 ===<br />
打开 putty 执行如下命令安装,如果是32位的系统,采用如下命令。执行完毕后,请不要再执行下面给64位系统执行的命令:<br />
<source lang=bash>cd ~ && wget -O - https://www.dropbox.com/download?plat=lnx.x86 | tar xzf -</source><br />
64位系统的采用如下命令,<br />
<source lang=bash> cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -</source><br />
执行结果如下所示:<br />
<br />
<source lang=bash><br />
root@241541:~# cd ~ && wget -O - https://www.dropbox.com/download?plat=lnx.x86 | tar xzf -<br />
--2012-02-22 06:44:40-- https://www.dropbox.com/download?plat=lnx.x86<br />
Resolving www.dropbox.com... 199.47.217.171, 199.47.216.170, 199.47.216.171, ...<br />
Connecting to www.dropbox.com|199.47.217.171|:80... connected.<br />
HTTP request sent, awaiting response... 302 FOUND<br />
Location: https://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.2.52.tar.gz [following]<br />
--2012-02-22 06:44:40-- https://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.2.52.tar.gz<br />
Resolving dl-web.dropbox.com... 107.20.132.92, 107.20.138.135, 107.20.170.126, ...<br />
Connecting to dl-web.dropbox.com|107.20.132.92|:80... connected.<br />
HTTP request sent, awaiting response... 200 OK<br />
Length: 15794278 (15M) [application/x-tar]<br />
Saving to: `STDOUT'<br />
<br />
100%[======================================>] 15,794,278 893K/s in 15s <br />
<br />
2012-02-22 06:44:57 (1.01 MB/s) - written to stdout [15794278/15794278]<br />
</source><br />
<br />
看到类似信息,表示安装完成。<br />
<br />
=== 设置帐号 ===<br />
<br />
执行如下命令开始设置帐号<br />
~/.dropbox-dist/dropboxd<br />
<br />
当看到 <br />
<source lang=bash>Please visit https://www.dropbox.com/cli_link?host_id=xxx&cl=en_US to link this machine. </source><br />
的提示时,复制里面https的链接地址使用浏览器打开,会出现Dropbox的密码框,输入你刚刚注册的密码,等到 putty 里面出现 <br />
Client successfully linked, Welcome xxx! <br />
的提示即可完成设置。完成后,使用 Ctrl+C 键中断运行。<br />
<br />
完整如下所示:<br />
<br />
<source lang=bash><br />
root@241541:~# ~/.dropbox-dist/dropboxd <br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
Client successfully linked, Welcome guest!<br />
</source><br />
<br />
=== 开始使用 ===<br />
完成以上设置后,会在当然的目录下出现 Dropbox 目录,这个目录就是同步目录,当在这个目录下放置的任何文件都会同步到 Dropbox 网盘上。<br />
<br />
root@241541:~# ls<br />
Dropbox<br />
root@241541:~# cd Dropbox/<br />
root@241541:~/Dropbox# ls<br />
Getting Started.pdf Photos Public<br />
<br />
第一次测试:<br />
在Dropbox目录下创建一个内容为 Hello 的 a.txt 文件。<br />
root@241541:~/Dropbox# echo "Hello" > a.txt<br />
<br />
运行同步程序<br />
root@241541:~/Dropbox# ~/.dropbox-dist/dropboxd <br />
<br />
打开Dropbox网页的 Files ,就会看到你的文件了。<br />
输入 Ctrl+C 中断同步,下面开始讲如何配置自动运行同步。<br />
<br />
=== 自动运行 Dropbox ===<br />
512M内存的VPS请不要自动启动服务,需要时,手工运行即可,启动后会太占内存。<br />
<br />
直接复制下面的命令到Putty并执行,以下为创建 dropbox 的自动启动文件,命令内容如下:<br />
<br />
<source lang=bash><br />
cat << "EOF" > /etc/init.d/dropbox<br />
#!/bin/bash<br />
# dropbox service<br />
DAEMON=.dropbox-dist/dropboxd<br />
<br />
start() {<br />
echo "Starting dropbox..."<br />
if [ -x /root/$DAEMON ]; then<br />
HOME="/root" start-stop-daemon -b -o -c root -S -u root -x /root/$DAEMON<br />
fi<br />
}<br />
<br />
stop() {<br />
echo "Stopping dropbox..."<br />
if [ -x /root/$DAEMON ]; then<br />
start-stop-daemon -o -c root -K -u root -x /root/$DAEMON<br />
fi<br />
}<br />
<br />
status() {<br />
dbpid=`pgrep -u root dropboxd`<br />
if [ -z $dbpid ]; then<br />
echo "dropboxd not running."<br />
else<br />
echo "dropboxd running (pid $dbpid)"<br />
fi<br />
}<br />
<br />
<br />
case "$1" in<br />
start)<br />
start<br />
;;<br />
<br />
stop)<br />
stop<br />
;;<br />
<br />
restart|reload|force-reload)<br />
stop<br />
start<br />
;;<br />
<br />
status)<br />
status<br />
;;<br />
<br />
*)<br />
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"<br />
exit 1<br />
<br />
esac<br />
<br />
exit 0<br />
EOF<br />
</source><br />
<br />
然后继续执行如下命令,设置自动启动 dropbox 同步服务:<br />
<br />
chmod +x /etc/init.d/dropbox<br />
update-rc.d dropbox defaults<br />
/etc/init.d/dropbox start<br />
<br />
执行命令的结果如下所示:<br />
<source lang=bash><br />
root@241541:~/Dropbox# sed -i "s/\r//" /etc/init.d/dropbox <br />
root@241541:~/Dropbox# chmod +x /etc/init.d/dropbox<br />
root@241541:~/Dropbox# update-rc.d dropbox defaults<br />
perl: warning: Setting locale failed.<br />
perl: warning: Please check that your locale settings:<br />
LANGUAGE = (unset),<br />
LC_ALL = (unset),<br />
LANG = "zh_CN.UTF-8"<br />
are supported and installed on your system.<br />
perl: warning: Falling back to the standard locale ("C").<br />
update-rc.d: warning: /etc/init.d/dropbox missing LSB information<br />
update-rc.d: see <http://wiki.debian.org/LSBInitScripts><br />
Adding system startup for /etc/init.d/dropbox ...<br />
/etc/rc0.d/K20dropbox -> ../init.d/dropbox<br />
/etc/rc1.d/K20dropbox -> ../init.d/dropbox<br />
/etc/rc6.d/K20dropbox -> ../init.d/dropbox<br />
/etc/rc2.d/S20dropbox -> ../init.d/dropbox<br />
/etc/rc3.d/S20dropbox -> ../init.d/dropbox<br />
/etc/rc4.d/S20dropbox -> ../init.d/dropbox<br />
/etc/rc5.d/S20dropbox -> ../init.d/dropbox<br />
root@241541:~/Dropbox# /etc/init.d/dropbox start<br />
Starting dropbox...<br />
</source><br />
现在你的VPS已经可以自动同步 /root/Dropbox 目录下的所有文件了。<br />
<br />
=== 自动每天备份数据库和站点 ===<br />
输入如下命令,创建自动备份脚本,注意脚本中的“数据库密码”需要换成你自己的Mysql数据库密码:<br />
echo '#!/bin/bash' > /etc/cron.daily/dropboxbackup<br />
echo 'tar czf /root/Dropbox/www.tar.gz /var/www' >>/etc/cron.daily/dropboxbackup<br />
echo 'mysqldump -p数据库密码 --all-databases |gzip > /root/Dropbox/mysql.sql.gz' >>/etc/cron.daily/dropboxbackup<br />
chmod +x /etc/cron.daily/dropboxbackup<br />
service cron restart<br />
执行结果如下<br />
root@241541:~# echo '#!/bin/bash' > /etc/cron.daily/dropboxbackup<br />
root@241541:~# echo 'tar czf /root/Dropbox/www.tar.gz /var/www' >>/etc/cron.daily/dropboxbackup<br />
root@241541:~# echo 'mysqldump -p123456 --all-databases |gzip > /root/Dropbox/mysql.sql.gz' >>/etc/cron.daily/dropboxbackup<br />
root@241541:~# chmod +x /etc/cron.daily/dropboxbackup<br />
root@241541:~# service cron restart <br />
Rather than invoking init scripts through /etc/init.d, use the service(8)<br />
utility, e.g. service cron restart<br />
<br />
Since the script you are attempting to invoke has been converted to an<br />
Upstart job, you may also use the restart(8) utility, e.g. restart cron<br />
cron start/running, process 3094<br />
<br />
看到上面的提示,表示自动备份设置完成,然后你可以手工执行下 /etc/cron.daily/dropboxbackup 看看效果。<br />
<br />
== 使用 BitTorrent Sync 备份系统 ==<br />
<br />
=== 说明 ===<br />
这个是 BitTorrent 公司写的一个非开源备份系统,具体请自行 Google,这里直接讲如何安装和使用。<br />
<br />
使用这个好处有两点,第一:占用内存非常少,不到20M;第二:不限空间,可以直接备份到你的本地电脑。<br />
<br />
=== 安装 ===<br />
在 Putty 里面,依次执行如下命令安装,安装过程中在提示输入[Y]或[ENTER]的地方,直接回车即可:<br />
apt-get install python-software-properties<br />
add-apt-repository ppa:tuxpoldo/btsync<br />
apt-get update<br />
apt-get install btsync<br />
<br />
当出现 “The password for accessing the web interface:” 提示输入密码时,输入你的管理密码;其余默认,直接回车即可。<br />
<br />
安装完毕后,btsync 的配置文件在 /etc/btsync/debconf-default.conf ,你可以去修改这个文件,配置新的密码。<br />
<br />
修改密码后,需要重启 btsync 服务:<br />
service btsync restart<br />
<br />
=== 使用 ===<br />
打开浏览器访问 http://VPSIP:8888 ,在本例中如下: http://184.82.9.30:8888 <br />
<br />
登录默认账号: admin ,密码是你前面输入的。<br />
<br />
好了,然后 点击 Add Folder 按钮选择需要备份的目录(推荐备份 /var 目录),并产生一个随机安全 Secret 号。<br />
<br />
=== 客户端安装 ===<br />
访问 http://labs.bittorrent.com/experiments/sync.html ,点击红色的 Download 按钮,再点击 Windows 按钮,下载并安装<br />
<br />
打开程序,输入前面得到的随机安全 Secret 号,选择一个下载的目录,你会看到,备份开始了。<br />
<br />
大功告成。<br />
<br />
== 安装 Zend Guard Loader ==<br />
一般情况我们推荐直接安装 Zend Guard Loader 来代替 Zend Optimizer,因为 Zend Optimizer 已经过时,并且不被支持。<br />
<br />
<source lang=bash><br />
cd ~<br />
wget http://phpcj.googlecode.com/files/ZendGuardLoader.so<br />
mkdir -p /usr/local/zend/<br />
cp ZendGuardLoader.so /usr/local/zend/ZendGuardLoader.so<br />
echo "zend_extension=/usr/local/zend/ZendGuardLoader.so" > /etc/php5/conf.d/zend.ini<br />
echo "zend_loader.enable=1" >> /etc/php5/conf.d/zend.ini<br />
</source><br />
<br />
然后重启下php即可。<br />
<br />
== 关于Zend Optimizer ==<br />
如果已经安装了上面的 Zend Guard Loader,请忽略执行本段。<br />
<br />
关于Zend,我们推荐安装上面的 Zend Guard Loader ,Zend Optimizer 已经被官方放弃,如果一定需要,请看本段。<br />
<br />
由于Zend Optimizer 不支持 php 5.3.x ,如果必须要使用,则需要降级:<br />
<br />
注意不要去尝试安装 ZendServer-CE 的 optimizerplus 或 Zend Guard Loader,因为,php 5.3.x 上的解密都不支持 php5.2.x 上的加密,除非你手头上的加密程序可以重新针对 php 5.3.x 重新加密,所以必须降级 php 的版本为 5.2.x 。<br />
<br />
并且仅仅支持 Apache , 不支持 Nginx (问题是降级后不再支持 php5-fpm,当然有能力者,可以采用 spawn-fcgi 来代替)。<br />
<br />
如果是Nginx用户,请还原到 Apache 环境,并且参考上面步骤事先安装好Apache和php,并测试php正常运行。<br />
<br />
=== php 降级 ===<br />
依次逐行输入如下命令:<br />
<source lang=bash><br />
apt-get install aptitude lsb-release<br />
php_installed=`dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`<br />
aptitude purge $php_installed<br />
echo -e "Package: php5\nPin: release a=karmic\nPin-Priority: 991\n" > /etc/apt/preferences.d/php <br />
apt-cache search php5-|grep php5-|awk '{print "Package:", $1,"\nPin: release a=karmic\nPin-Priority: 991\n"}' >> /etc/apt/preferences.d/php <br />
apt-cache search -n libapache2-mod-php5 |awk '{print "Package:", $1,"\nPin: release a=karmic\nPin-Priority: 991\n"}' >> /etc/apt/preferences.d/php <br />
echo -e "Package: php-pear\nPin: release a=karmic\nPin-Priority: 991\n" >> /etc/apt/preferences.d/php <br />
egrep '(main restricted|universe|multiverse)' /etc/apt/sources.list|grep -v "#"| sed s/`lsb_release -s -c`/karmic/g | sed s/'http:\/\/.*\/'/'http:\/\/old-releases.ubuntu.com\/'/g > /etc/apt/sources.list.d/karmic.list<br />
apt-get update<br />
apt-get install $php_installed<br />
aptitude hold `dpkg -l | grep php5| awk '{print $2}' |tr "\n" " "`<br />
</source><br />
<br />
如果碰到如下:<br />
<br />
Do you want to continue? [Y/n/?] <br />
<br />
请出入 y 回车继续<br />
<br />
=== php 高级安装技巧 ===<br />
如果需要支持nginx或采用fastcgi来运行php,在执行完毕上面的步骤后,参考如下命令安装(注意,Apache环境不需要执行):<br />
<br />
采用fastcgi,即用于spawn-fcgi:<br />
aptitude install -t karmic php5-cli php5-cgi <br />
<br />
返回到Apache:<br />
apt-get install -t karmic libapache2-mod-php5<br />
<br />
=== 安装 Zend Optimizer ===<br />
<source lang=bash><br />
cd ~<br />
wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
mkdir -p /usr/local/zend/<br />
cp ZendOptimizer-3.3.3-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/<br />
echo "zend_extension=/usr/local/zend/ZendOptimizer.so" > /etc/php5/conf.d/zend.ini<br />
</source><br />
<br />
=== 安装成功验证 ===<br />
运行:<br />
<br />
php -v<br />
<br />
返回如下提示:<br />
<br />
root@241541:~# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10)<br />
<br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies<br />
<br />
显示成功安装 Zend Optimizer。<br />
<br />
=== 重启 Web 服务 ===<br />
如果是 apache :<br />
service apache2 restart<br />
如果是Nginx:<br />
service php5-fpm restart<br />
<br />
== 额外支持 ==<br />
=== XEN VPS 增加交换分区大小 ===<br />
XEN VPS 专用,OPEN VZ的请忽略。<br />
<br />
增加之前:<br />
<source lang=bash><br />
root@289085:~# free<br />
total used free shared buffers cached<br />
Mem: 506088 46008 460080 0 3624 21944<br />
-/+ buffers/cache: 20440 485648<br />
Swap: 262140 0 262140<br />
</source><br />
<br />
运行如下命令增加256M交换内存<br />
dd if=/dev/zero of=/mnt/256M.swap bs=1M count=256<br />
chmod 600 /mnt/256M.swap<br />
mkswap /mnt/256M.swap<br />
swapon /mnt/256M.swap<br />
echo '/mnt/256M.swap none swap sw 0 0' >> /etc/fstab<br />
<br />
增加之后:<br />
<source lang=bash><br />
root@289085:~# free<br />
total used free shared buffers cached<br />
Mem: 506088 312740 193348 0 3952 284180<br />
-/+ buffers/cache: 24608 481480<br />
Swap: 524280 0 524280<br />
</source><br />
<br />
=== 配置 php 加速器 ===<br />
如果你 VPS 的内存大于或等于 1G,可以考虑开启 php 的 apc 加速,否则请忽略本步骤。<br />
echo "extension=apc.so" > /etc/php5/conf.d/apc.ini<br />
echo "apc.enabled=1" >> /etc/php5/conf.d/apc.ini<br />
echo "apc.shm_size=64M" >> /etc/php5/conf.d/apc.ini<br />
echo "apc.ttl=7200" >> /etc/php5/conf.d/apc.ini<br />
如果你安装的是apache2,执行下面命令重启下:<br />
service apache2 restart<br />
如果你安装的是nginx,执行下面命令重启下:<br />
service php5-fpm restart<br />
<br />
=== 安装 JAVA ===<br />
由于 java 非常消耗内存,1G以下的 VPS 请不要考虑使用 java,java 理想的内存在2G以上。<br />
<br />
采用如下命令安装JAVA JDK 1.7:<br />
apt-get install openjdk-7-jdk<br />
<br />
验证如下:<br />
$ java -version<br />
java version "1.7.0_25" <br />
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)<br />
OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)<br />
<br />
如果你安装了多个版本的JDK,需要配置默认的JDK,采用如下命令:<br />
update-alternatives --config java<br />
<br />
== 日常维护 ==<br />
=== 查看硬盘剩余空间大小 ===<br />
df<br />
显示<br />
root@241541:/# df<br />
Filesystem 1K-blocks Used Available Use% Mounted on<br />
/dev/simfs 20971520 583508 20388012 3% /<br />
<br />
=== 查看硬盘可用文件数 ===<br />
df -i<br />
显示<br />
root@241541:/# df -i<br />
Filesystem Inodes IUsed IFree IUse% Mounted on<br />
/dev/simfs 400000 26568 373432 7% /<br />
<br />
=== 查看内存剩余大小 ===<br />
free<br />
显示<br />
root@241541:/# free<br />
total used free shared buffers cached<br />
Mem: 524800 245240 279560 0 0 0<br />
-/+ buffers/cache: 245240 279560<br />
Swap: 0 0 0<br />
<br />
=== 如何从其他网站上下载文件 ===<br />
wget "下载文件的链接地址"<br />
<br />
如下所示下载 DZ 论坛的最新版:<br />
<source lang=bash><br />
wget http://download.comsenz.com/DiscuzX/2.0/Discuz_X2_SC_UTF8.zip<br />
</source><br />
你也可以指定需要保存的文件名为 dz.zip 如下:<br />
<source lang=bash><br />
wget http://download.comsenz.com/DiscuzX/2.0/Discuz_X2_SC_UTF8.zip -O dz.zip<br />
</source><br />
<br />
如果对方有防盗链可以这样下:<br />
<source lang=bash><br />
wget http://download.comsenz.com/DiscuzX/2.0/Discuz_X2_SC_UTF8.zip --referer=http://download.comsenz.com/<br />
</source><br />
<br />
=== 常用服务重启 ===<br />
重启 Apache2<br />
service apache2 restart<br />
重启 Mysql<br />
service mysql restart<br />
重启 Nginx<br />
service nginx restart<br />
重启 php<br />
service php5-fpm restart<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20<br />
<br />
显示:<br />
<source lang=bash><br />
root@241541:~# ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20<br />
VSZ RSS PID CMD<br />
146384 36860 1629 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock<br />
62908 3676 8026 nginx: worker process<br />
62660 2884 8027 nginx: cache manager process<br />
62660 3404 17440 nginx: master process /usr/sbin/nginx<br />
50380 11160 1517 /usr/sbin/named -u bind<br />
33948 13076 32345 /usr/bin/php-cgi<br />
33796 12912 32344 /usr/bin/php-cgi<br />
33764 12828 32351 /usr/bin/php-cgi<br />
33684 12804 32350 /usr/bin/php-cgi<br />
32892 12012 32346 /usr/bin/php-cgi<br />
32892 11984 32349 /usr/bin/php-cgi<br />
28864 7952 32347 /usr/bin/php-cgi<br />
28864 7956 32348 /usr/bin/php-cgi<br />
27708 5624 32342 /usr/bin/php-cgi<br />
8688 1924 3089 sendmail: MTA: accepting connections <br />
8136 2924 32338 /usr/sbin/sendmail -i -FCronDaemon -oem root<br />
8096 2804 20387 sshd: root@pts/0 <br />
8096 2756 23759 sshd: root@pts/1 <br />
5304 1084 1547 /usr/sbin/sshd<br />
</source><br />
<br />
=== 动态显示系统程序情况 ===<br />
top<br />
显示<br />
[[Image:Vps_top.png]]<br />
<br />
=== mysql 常用命令 ===<br />
mysql 创建数据库<br />
mysqladmin -u root -p create 数据库名<br />
<br />
mysql 删除数据库<br />
mysqladmin -u root -p drop 数据库名<br />
<br />
mysql 创建用户<br />
mysql> GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;<br />
<br />
mysql 修复表<br />
mysqlcheck -A --auto-repair -p<br />
<br />
mysql 手工恢复 phpmyadmin 备份的 sql 文件<br />
xxxx.sql 是你备份的sql文件名。<br />
mysql -p 数据库名 < xxxx.sql<br />
<br />
手工备份单个 mysql 数据库<br />
xxxx.sql 是你备份的sql文件名。<br />
mysqldump -p 数据库名 > xxxx.sql<br />
<br />
修改mysql的root的密码<br />
mysqladmin -u root password '新密码'<br />
<br />
mysql 无法启动的处理<br />
<br />
运行 mysqld_safe --user=mysql<br />
<br />
然后 tail -n 50 /var/log/syslog 看日志,根据错误来判断<br />
<br />
如果提示日志不存在,运行: apt-get install rsyslog 安装日志服务。<br />
<br />
=== 在线解压缩 ===<br />
解压缩 xxx.zip<br />
unzip xxx.zip<br />
<br />
解压缩 xxx.tar.gz<br />
tar -xzvf xxx.tar.gz<br />
<br />
解压缩 xxx.tar.bz2<br />
tar -xjvf xxx.tar.bz2<br />
<br />
压缩aaa bbb目录为xxx.tar.gz<br />
tar -zcvf xxx.tar.gz aaa bbb<br />
<br />
压缩aaa bbb目录为xxx.tar.bz2<br />
tar -jcvf xxx.tar.bz2 aaa bbb<br />
<br />
=== 封掉某个IP或IP段 ===<br />
只是运行后封掉,由于未保存所以重启后失效,对 192.168.2.0 或 192.168.2.23 进行封掉:<br />
iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp -j DROP<br />
iptables -t filter -I INPUT -s 192.168.2.23 -p tcp -j DROP<br />
<br />
=== 查看日志 ===<br />
如果需要查看访问日志,请查看 /var/log/ 文件夹,所有的日志都在这个目录下。<br />
<br />
=== 查看网络流量 ===<br />
执行如下命令安装nload <br />
apt-get install nload<br />
安装完毕后,xen的直接运行nload,即可查看,openvz的运行 nload venet0 查看带宽。<br />
<br />
=== 更多命令参考 ===<br />
点击查看 [[UbuntuSkills|Ubuntu 技巧]]<br />
<br />
== 根据压力测试来调整最大并发数 ==<br />
<br />
因为VPS的内存是有限的,如果不限制最大并发数,会照成内存爆掉或负载过高。内存爆掉,对于openvz的管理会kill掉最耗内存的程序,这样很可能杀掉web服务和sshd服务,表现形式为,vps可以ping通,但网站打不开,也无法登录,需要到面板重启vps才正常;如果负载大于3则会导致VPS由于滥用被官方冻结。如果已经发生了上述现象,请尽快按如下步骤进行调整。<br />
<br />
=== 测试内存的使用情况 ===<br />
使用 putty 登录到到 vps 输入命令 free 即可看到当前内存的使用情况,如下所示:<br />
<br />
root@241541:~# free<br />
total used free shared buffers cached<br />
Mem: 524800 296004 228796 0 0 0<br />
-/+ buffers/cache: 296004 228796<br />
Swap: 0 0 0<br />
<br />
全部内存为 524800 K,已经使用 296004 K 剩余 228796 K,也就是还剩余 228 M的内存。<br />
<br />
如果需要长时间监控,使用如下命令:<br />
<br />
watch -n 1 free<br />
<br />
=== 安装压力测试软件 ===<br />
我们这里使用 ab 软件,作为我们的压力测试软件。<br />
<br />
使用 apache2的 vps 已经自带了,如果使用nginx的vps,需要安装 apache2-utils 包,使用如下命令安装。<br />
apt-get install apache2-utils<br />
<br />
=== 开始压力测试 ===<br />
你的站点都已经配置完整,需要找一个动态页面,最好内容多一点的,这里采用 http://www.test.com/index.php 作为测试页面。<br />
<br />
在 putty 里面输入如下,将每秒刷新一次显示内存情况:<br />
<br />
watch -n 1 free<br />
<br />
重点在于观察位于 free 单词下面的数字。<br />
<br />
再开一个putty,输入我们要进行的压力测试命令如下,其中测试网址修改为你自己的测试网址:<br />
<source lang=bash><br />
ab -n 100 -c 5 http://www.test.com/index.php<br />
</source><br />
这个命令是按 5 个并发,做100次请求 ,注意看内存情况,如果出现内存小于50M的情况,表示非常危险了。<br />
<br />
执行完毕的结果如下:<br />
<source lang=bash><br />
[root@241541 ~]# ab -n 100 -c 5 http://www.test.com/index.php<br />
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Copyright 2006 The Apache Software Foundation, http://www.apache.org/<br />
<br />
Benchmarking www.test.com (be patient).....done<br />
<br />
<br />
Server Software: Apache/2.2.16<br />
Server Hostname: www.test.com<br />
Server Port: 80<br />
<br />
Document Path: /index.php<br />
Document Length: 56446 bytes<br />
<br />
Concurrency Level: 5<br />
Time taken for tests: 53.147069 seconds<br />
Complete requests: 100<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 5721547 bytes<br />
HTML transferred: 5695792 bytes<br />
Requests per second: 1.88 [#/sec] (mean)<br />
Time per request: 2657.354 [ms] (mean)<br />
Time per request: 531.471 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 105.12 [Kbytes/sec] received<br />
<br />
Connection Times (ms)<br />
min mean[+/-sd] median max<br />
Connect: 218 219 2.9 218 230<br />
Processing: 1463 2407 258.5 2429 3126<br />
Waiting: 450 1280 217.7 1291 1832<br />
Total: 1681 2627 258.6 2648 3344<br />
<br />
Percentage of the requests served within a certain time (ms)<br />
50% 2648<br />
66% 2691<br />
75% 2759<br />
80% 2818<br />
90% 2885<br />
95% 3093<br />
98% 3339<br />
99% 3344<br />
100% 3344 (longest request)<br />
</source><br />
<br />
这个结果中需要掌握的有:<br />
<br />
成功完成的请求数: Complete requests: 100<br />
<br />
失败的请求数: Failed requests: 0<br />
<br />
每秒完成的请求数: Requests per second: 1.88 [#/sec] (mean)<br />
<br />
执行每个请求需要的时间(也就是用户打开这个页面的最快时间): Time per request: 2657.354 [ms] (mean)<br />
<br />
=== 进一步压力测试 ===<br />
在内存还有剩余的情况下,我们继续增加压力测试的并发数,可以慢慢增加,<br />
<br />
当这边的内存监控窗口出现低于50M的时候,就表示这个数值为这个vps可以承受的最大并发数。<br />
<br />
出现低于50M可以内存的情况如下,表示这个站只能支撑8个并发访问不会挂掉:<br />
<source lang=bash><br />
[root@241541 ~]# ab -n 100 -c 8 http://www.test.com/index.php<br />
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Copyright 2006 The Apache Software Foundation, http://www.apache.org/<br />
<br />
Benchmarking www.test.com (be patient).....done<br />
<br />
<br />
Server Software: Apache/2.2.16<br />
Server Hostname: www.test.com<br />
Server Port: 80<br />
<br />
Document Path: /index.php<br />
Document Length: 56446 bytes<br />
<br />
Concurrency Level: 8<br />
Time taken for tests: 41.779898 seconds<br />
Complete requests: 100<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 5670100 bytes<br />
HTML transferred: 5644600 bytes<br />
Requests per second: 2.39 [#/sec] (mean)<br />
Time per request: 3342.392 [ms] (mean)<br />
Time per request: 417.799 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 132.53 [Kbytes/sec] received<br />
<br />
Connection Times (ms)<br />
min mean[+/-sd] median max<br />
Connect: 218 218 0.9 218 223<br />
Processing: 1684 3021 461.5 3087 4525<br />
Waiting: 495 1820 418.3 1927 3165<br />
Total: 1903 3239 461.6 3307 4744<br />
<br />
Percentage of the requests served within a certain time (ms)<br />
50% 3307<br />
66% 3384<br />
75% 3452<br />
80% 3521<br />
90% 3654<br />
95% 3763<br />
98% 4695<br />
99% 4744<br />
100% 4744 (longest request)<br />
</source><br />
在8个并发的情况下,用户打开这个网页最快也需要3.3秒。<br />
<br />
=== 配置并发参数 ===<br />
<br />
根据上面的压力测试情况去配置相应最大的并发为当前测试的值,上例中,我们测试出的最大并发为 8.<br />
<br />
Apache2 参考:<br />
<br />
[[Vps#Apache2_.E4.BC.98.E5.8C.96|Apache2 的优化]]<br />
<br />
Nginx 参考:<br />
<br />
[[Vps#nginx_.E4.BC.98.E5.8C.96|Nginx 的优化]]<br />
<br />
== 常见故障 ==<br />
=== "Temporary failure resolving" 或 正在解析主机...失败,未知的名称或服务 ===<br />
使用 wget 或 apt-get 时出现上面的提示,是官方的dns服务器出现故障了,采用如下命令修复:<br />
echo nameserver 208.67.222.222 > /etc/resolv.conf<br />
或者<br />
echo dns-nameservers 208.67.222.222 >> /etc/network/interfaces<br />
<br />
=== "locale: Cannot set LC_ALL to default locale: No such file or directory" ===<br />
如果出现如下故障提示:<br />
<source lang=bash><br />
perl: warning: Setting locale failed.<br />
perl: warning: Please check that your locale settings:<br />
LANGUAGE = (unset),<br />
LC_ALL = (unset),<br />
LANG = "zh_CN.UTF-8"<br />
are supported and installed on your system.<br />
perl: warning: Falling back to the standard locale ("C").<br />
locale: Cannot set LC_CTYPE to default locale: No such file or directory<br />
locale: Cannot set LC_MESSAGES to default locale: No such file or directory<br />
locale: Cannot set LC_ALL to default locale: No such file or directory<br />
</source><br />
虽然不影响使用,可以使用下面的命令解决:<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
<br />
=== 修正时区 ===<br />
使用如下命令调整本地的系统的时区为上海。<br />
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
<br />
=== 开启 GBK/GB2312 支持 ===<br />
使用如下命令在 local 文件中增加 GBK/GB2312:<br />
echo "zh_CN.GBK GBK" >> /var/lib/locales/supported.d/local <br />
echo "zh_CN.GB2312 GB2312" >> /var/lib/locales/supported.d/local <br />
<br />
然后运行:<br />
dpkg-reconfigure --force locales <br />
即可支持了。<br />
<br />
=== 修复cron问题 ===<br />
#检查cron的任务文件名是否包括 . ,如果有扩展名会导致无法运行,<br />
#可以使用如下命令检查 run-parts --test /etc/cron.daily<br />
apt-get remove anacron<br />
service cron restart<br />
<br />
=== 禁止执行的命令 ===<br />
以下命令是严格禁止的,运行后直接导致数据丢失或vps无法正常启动,如果遇到有人建议你运行如下命令,请停止。<br />
<br />
系统所有文件被删除<br />
rm -fr /<br />
<br />
系统权限混乱,启动错误,无法ssh连接<br />
chmod -R 777 /<br />
<br />
系统损坏,数据丢失<br />
dd if=/dev/zero of=/dev/xxx<br />
<br />
如果遇到有人建议你,运行包括 rm 、 chmod 、 dd 等命令,请慎重。<br />
<br />
=== 使用 mtr 检测网络丢包 ===<br />
<br />
有时我们发现 ping 丢包,因此需要通过 mtr 来定位故障的位置,使用 mtr 需要双向运行,才可以比较准确的发现故障点。<br />
<br />
VPS上安装 mtr :<br />
<br />
*Ubuntu Linux<br />
apt-get install mtr<br />
*Centos Linux<br />
yum install mtr<br />
<br />
访问 http://ip.cn 获得本地的公网地址,从VPS执行如下命令:<br />
mtr -n --report 本地公网地址<br />
<br />
获得路由的丢包位置。<br />
<br />
然后本地 Windows 上安装 mtr:<br />
<br />
下载地址: http://winmtr.net/download-winmtr/<br />
<br />
下载运行后,直接输入VPS的IP进行测试。<br />
<br />
最后两边对比结果,就可以准确的找到出问题的路由地址。<br />
<br />
找到丢包路由器的IP后,通过 http://ip.cn 去查询该路由器IP的所在地。如果该IP在国内,只能等待了;如果在国外,可以尝试去报障,要求官方协调解决。<br />
<br />
=== VPS之间备份、下载、上传需要限速 ===<br />
由于美国VPS之间的速度是200M共享,所以很容易达到满速,这样会导致带宽滥用封掉,所以必须限速,以下按1M限速:<br />
<br />
==== 常用软件限速 ====<br />
wget/scp/rsync/lftp 等常用客户端下载限速如下。<br />
wget --limit-rate=1024k ......<br />
scp -l 8196 ......<br />
rsync -auvzP --bwlimit=1024 --size-only ......<br />
lftp :~> set net:limit-rate 1024000,1024000<br />
<br />
==== 采用 trickle 限速 ====<br />
也可以使用 trickle 来限速,安装 trickle 使用如下命令<br />
apt-get install trickle<br />
<br />
运行如下命令,限制 wget 的上传速度和下载速度为1M,其中 -d 后面是下载速度,-u 后面是上传速度,以K为单位:<br />
trickle -d 1024 -u 1024 wget ....<br />
<br />
Dropbox 限速:<br />
<br />
trickle -d 1024 -u 1024 ~/.dropbox-dist/dropboxd<br />
<br />
=== 快速安装配置lnmp的命令 ===<br />
删除Apache2:<br />
<br />
service apache2 stop<br />
apt-get update<br />
apt-get -y remove apache2 apache2.2-common<br />
<br />
安装 php nginx<br />
<br />
apt-get -y install php5-cgi php5-fpm php5-gd php5-mysql php5-curl php5-mcrypt php5-common php-apc mysql-server nginx<br />
<br />
配置 nginx:<br />
<br />
mkdir /var/www<br />
chown www-data:www-data /var/www<br />
sed -i 's/\/usr\/share\/nginx\/www/\/var\/www/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(location.*php\)/\1/' /etc/nginx/sites-available/default <br />
sed -i 's/#\(.*fastcgi_split_path_info\)/\1/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(.*fastcgi_pass.*9000\)/\1/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(.*fastcgi_index\)/\1/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(.*fastcgi_params\)/\1/' /etc/nginx/sites-available/default<br />
sed -i '/fastcgi_params/{ n; s/#}/}/; }' /etc/nginx/sites-available/default<br />
sed -i -e 's/listen =.*$/listen = 127.0.0.1:9000/' `grep -R -l listen /etc/php5/fpm`<br />
service php5-fpm restart<br />
service nginx restart<br />
<br />
== 常用链接 ==<br />
* [http://ubuntuchina.taobao.com/ 淘宝店铺]<br />
* [http://dwz.cn/3qCmMe BudgetVM]</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155243
TensorFlow
2017-06-15T07:13:23Z
<p>Oneleaf:/* 安装 pip3 */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
sudo mv /usr/bin/pip3 /usr/bin/pip3.bak<br />
sudo ln -s /usr/local/bin/pip3 /usr/bin/<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
sudo pip3 install gunicorn flask image<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
==== 设置环境变量 ====<br />
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> .bashrc<br />
echo 'export CUDA_HOME=/usr/local/cuda' >> .bashrc<br />
source ~/.bashrc<br />
<br />
==== 查看显卡信息 ====<br />
nvidia-smi<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155241
TensorFlow
2017-06-08T08:06:21Z
<p>Oneleaf:/* 安装 tensorflow gpu 版本 */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
sudo mv /usr/bin/pip3 /usr/bin/pip3.bak<br />
sudo ln -s /usr/local/bin/pip3 /usr/bin/<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
sudo pip3 install gunicorn flask image<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
==== 设置环境变量 ====<br />
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> .bashrc<br />
echo 'export CUDA_HOME=/usr/local/cuda' >> .bashrc<br />
source ~/.bashrc<br />
<br />
==== 查看显卡信息 ====<br />
nvidia-smi<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155240
TensorFlow
2017-06-08T07:57:31Z
<p>Oneleaf:/* 安装 pip3 */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
sudo mv /usr/bin/pip3 /usr/bin/pip3.bak<br />
sudo ln -s /usr/local/bin/pip3 /usr/bin/<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
==== 设置环境变量 ====<br />
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> .bashrc<br />
echo 'export CUDA_HOME=/usr/local/cuda' >> .bashrc<br />
source ~/.bashrc<br />
<br />
==== 查看显卡信息 ====<br />
nvidia-smi<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155239
TensorFlow
2017-05-19T07:46:08Z
<p>Oneleaf:/* 安装 pip3 */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
sudo rm /usr/bin/pip3<br />
sudo ln -s /usr/local/bin/pip3 /usr/bin/<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
==== 设置环境变量 ====<br />
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> .bashrc<br />
echo 'export CUDA_HOME=/usr/local/cuda' >> .bashrc<br />
source ~/.bashrc<br />
<br />
==== 查看显卡信息 ====<br />
nvidia-smi<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155238
OpenVZ
2017-05-19T02:28:59Z
<p>Oneleaf:/* 安装python */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get -y install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155237
OpenVZ
2017-05-19T02:28:31Z
<p>Oneleaf:/* 安装python */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get install -y python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Vps&diff=155229
Vps
2017-03-28T07:42:25Z
<p>Oneleaf:/* "Temporary failure resolving" 或 正在解析主机...失败,未知的名称或服务 */</p>
<hr />
<div>Linux VPS Ubuntu 系统配置指南<br />
== 拿到的帐号 ==<br />
VPS 开通后,你将收到如下的帐号:<br />
<br />
VPS IP Address: 184.82.9.30<br />
SSH Root Password: pass001<br />
<br />
面板地址在 http://vps.ubuntu.org.cn/vm/ 需要使用你的开通时留下的邮箱注册。<br />
<br />
以下的指南都是针对 ubuntu 的,请 centos 或其它 Linux 用户到面板 reload 到ubuntu 14.04 然后继续。<br />
<br />
{{Qref Alarm}} <font color="red">注意:</font>如果你安装 ubuntu 14.04 可能会无法登录,提示访问拒绝,这并不是密码输入错误了,而是因为 sshd 的默认配置里面禁止了 root 帐号登录,所以你需要使用面板的 临时通道 上去,<font color="red">逐行</font>执行如下命令开启 root 登录权限:<br />
<br />
sed -i "s/PermitRootLogin.*$/PermitRootLogin yes/" /etc/ssh/sshd_config<br />
service ssh restart<br />
<br />
顺便提一句,如果你是老手,不用开启 root 登录,可以直接创建一个普通帐号,加入到 sudo 组,使用sudo 来执行命令,这样更安全。<br />
<br />
== 如何远程访问 ==<br />
Linux VPS支持ssh远程访问,因此需要使用putty工具来访问。<br />
<br />
1 下载putty<br />
<br />
下载地址: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe<br />
<br />
2 运行putty<br />
<br />
这个程序不需要安装,下载后直接运行,后在Host地址输入VPS的IP如下:<br />
<br />
[[Image:Vps_putty1.png]]<br />
<br />
3 登录vps <br />
<br />
点击上图中的 Open 按钮,第一次登录会出现确认密钥的提示,如下图,请点击 “是” 按钮。<br />
<br />
[[Image:Vps_putty2.png]]<br />
<br />
4 如下图输入登录用户名 root 回车,继续输入密码。<br />
<br />
{{Qref Alarm}} <font color="red">'''注意输入密码是不会显示 “*” 的,'''</font>同时密码是区分大小写的。<br />
<br />
有个技巧,直接去复制密码后,鼠标点击 putty 的输入密码窗口,直接按下鼠标右键,然后回车即可登录。 在putty的窗口按下鼠标右键表示粘贴。<br />
<br />
[[Image:Vps_putty3.png]]<br />
<br />
5 如果显示下图则表示登录成功了。<br />
<br />
[[Image:Vps_putty4.png]]<br />
<br />
6 设置 putty 支持 vps 的中文文件名或中文文件内容显示,此步骤非必需,可以忽略:<br />
<br />
在主窗口,点击左上角的图标,在弹出菜单中选择 Change Settings... 菜单,出现设置窗口。<br />
<br />
设置显示字体,左边窗口点击 Window -> Appearance ,右边点击 Font settings -> Change 如下图:<br />
<br />
[[Image:Vps_putty5.png]]<br />
<br />
字体选择 新宋体 字符集选择 CHINESE_GB2312 ,字体大小随你喜好设置。设置完毕后点确定<br />
<br />
[[Image:Vps_putty6.png]]<br />
<br />
设置终端字符,左边窗口点 Window -> Translation ,右边选择 Remote character set 的下拉框选择 UTF-8 ,如下图:<br />
<br />
[[Image:Vps_putty7.png]]<br />
<br />
设置Socket5代理,左边窗口点 Connection -> SSH -> Tunnels,右边如下图选择 Dynamic ,Source port 输入 7070,然后点 Add 按钮,就启用了本机代理。<br />
<br />
[[Image:PuttySocket5.png]]<br />
<br />
== 如何上传和下载文件 ==<br />
VPS 直接支持ssh协议,因此不需要采用 ftp 方式上传,可以直接使用支持 sftp 协议的客户端上传文件,这里使用 FileZilla。<br />
<br />
1 下载FileZilla<br />
<br />
官网下载地址: http://filezilla-project.org/download.php?type=client<br />
<br />
或直接点击下载: http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.5.0/FileZilla_3.5.0_win32-setup.exe/download<br />
<br />
2 下载完毕后安装 FileZilla<br />
<br />
3 添加站点<br />
<br />
运行FileZilla,点击菜单 文件 -> 站点管理器<br />
<br />
[[Image:Vps_FileZilla1.png]]<br />
<br />
点击后如下图:<br />
<br />
[[Image:Vps_FileZilla2.png]]<br />
<br />
再点击面板的 "新站点" 按钮,在右边的输入地方,输入:<br />
<br />
主机:VPS的IP,本例输入 184.82.9.30<br />
协议:选择 SFTP<br />
登录类型:选一般<br />
用户:输入root<br />
密码:输入ssh的登录密码,注意密码区分大小写。<br />
<br />
如下图:<br />
<br />
[[Image:Vps_FileZilla3.png]]<br />
<br />
输入完毕后,再切换到字符集,选择 "强制 UTF-8" ,如下图:<br />
<br />
[[Image:Vps_FileZilla4.png]]<br />
<br />
输入完毕后直接点击 “连接” 按钮即可,连接完毕后如下图所示,你就可以直接上传和下载文件了。<br />
<br />
[[Image:Vps_FileZilla5.png]]<br />
<br />
下一次打开 FileZilla 时,直接到站点管理器,点击连接即可。<br />
<br />
== 更新软件源 (不可跳过) ==<br />
以下命令均需要使用 putty 登录到服务器远程执行命令操作,你可以直接复制下面的命令,然后点击 putty 窗口按鼠标右键,粘贴命令。<br />
<br />
本步骤不可跳过,需要先执行,后面才可以继续,建议每次安装新软件时,都执行一遍本步骤。<br />
<br />
输入如下命令更新软件源:<br />
<br />
apt-get update<br />
<br />
下面的提示不同的Linux的版本存在不同的差异,但有如下类似的提示时,表示更新成功:<br />
<source lang=bash><br />
root@241541:~# apt-get update<br />
Get:1 http://archive.ubuntu.com maverick Release.gpg [198B]<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick/main Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick/restricted Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick/universe Translation-en<br />
Get:2 http://archive.ubuntu.com maverick-updates Release.gpg [198B]<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-updates/main Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-updates/restricted Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-updates/universe Translation-en<br />
Get:3 http://archive.ubuntu.com maverick-security Release.gpg [198B]<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-security/main Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-security/restricted Translation-en<br />
Ign http://archive.ubuntu.com/ubuntu/ maverick-security/universe Translation-en<br />
Get:4 http://archive.ubuntu.com maverick Release [39.8kB]<br />
Get:5 http://archive.ubuntu.com maverick-updates Release [31.4kB]<br />
Get:6 http://archive.ubuntu.com maverick-security Release [31.4kB]<br />
Get:7 http://archive.ubuntu.com maverick/main i386 Packages [1492kB]<br />
Get:8 http://archive.ubuntu.com maverick/restricted i386 Packages [5992B]<br />
Get:9 http://archive.ubuntu.com maverick/universe i386 Packages [5791kB]<br />
Get:10 http://archive.ubuntu.com maverick-updates/main i386 Packages [380kB]<br />
Get:11 http://archive.ubuntu.com maverick-updates/restricted i386 Packages [1797B]<br />
Get:12 http://archive.ubuntu.com maverick-updates/universe i386 Packages [157kB]<br />
Get:13 http://archive.ubuntu.com maverick-security/main i386 Packages [157kB]<br />
Get:14 http://archive.ubuntu.com maverick-security/restricted i386 Packages [14B]<br />
Get:15 http://archive.ubuntu.com maverick-security/universe i386 Packages [77.9kB]<br />
Fetched 8166kB in 4s (1724kB/s)<br />
Reading package lists... Done<br />
</source><br />
<br />
<br />
如果看到如下的提示<br />
<source lang=bash><br />
W: GPG 错误:http://security.ubuntu.com trusty-security Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
W: GPG 错误:http://archive.canonical.com trusty Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
W: GPG 错误:http://archive.ubuntu.com trusty Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
W: GPG 错误:http://archive.ubuntu.com trusty-updates Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32<br />
</source><br />
<br />
请执行以下代码,导入秘钥,重新执行更新软件源:<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
<br />
<br />
如果VPS有启用IPv6,有可能长时间执行这个没有反应,请输入 Ctrl + C 中断上面的命令。先执行如下命令,使IPV4优先:<br />
<br />
全部关闭 IPv6:<br />
echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf<br />
<br />
仅仅针对 apt-get 关闭IPv6,仅 Ubuntu 14.04 以上版本有效:<br />
echo "Acquire::ForceIPv4 true;" > /etc/apt/apt.conf.d/99force-ipv4<br />
<br />
执行完毕上面的命令后,重新运行 apt-get update 来更新软件源即可。<br />
<br />
== 安装常用软件 (不可跳过) ==<br />
VPS里面缺乏一些常用工具软件,一次安装好:<br />
<br />
输入如下命令安装解压缩、下载和数据同步以及系统日志软件:<br />
apt-get install unzip zip wget rsync<br />
<br />
如果提示如下命令,表示之前已经安装好:<br />
<br />
<source lang=bash><br />
root@241541:~# apt-get install unzip zip wget rsync <br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
unzip is already the newest version.<br />
wget is already the newest version.<br />
rsync is already the newest version.<br />
0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.<br />
</source><br />
<br />
如果之前没有安装会提示如下命令,表示已经安装好<br />
<source lang=bash><br />
root@241541:~# apt-get install unzip zip wget rsync<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following NEW packages will be installed:<br />
rsync unzip wget zip<br />
0 upgraded, 4 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 319kB/1125kB of archives.<br />
After this operation, 2314kB of additional disk space will be used.<br />
Get:1 http://archive.ubuntu.com/ubuntu/ maverick/main zip i386 3.0-3 [319kB]<br />
Fetched 319kB in 0s (417kB/s)<br />
Selecting previously deselected package wget.<br />
(Reading database ... 22549 files and directories currently installed.)<br />
Unpacking wget (from .../wget_1.12-1.1ubuntu3_i386.deb) ...<br />
Selecting previously deselected package rsync.<br />
Unpacking rsync (from .../rsync_3.0.7-2ubuntu1.1_i386.deb) ...<br />
Selecting previously deselected package unzip.<br />
Unpacking unzip (from .../archives/unzip_6.0-4_i386.deb) ...<br />
Selecting previously deselected package zip.<br />
Unpacking zip (from .../archives/zip_3.0-3_i386.deb) ...<br />
Setting up wget (1.12-1.1ubuntu3) ...<br />
Setting up rsync (3.0.7-2ubuntu1.1) ...<br />
Setting up unzip (6.0-4) ...<br />
Setting up zip (3.0-3) ...<br />
</source><br />
<br />
== 使用 Apache 搭建站点 ==<br />
Apache 是最常见的 Web 服务器,功能强大。如果希望使用轻量级的 Nginx ,可以跳过此部分,直接转到指南的 nginx 部分来安装。<br />
<br />
=== 安装 Apache2 Web 服务 ===<br />
VPS 默认有安装Apache2,但如果你删除了,就需要重新安装;如果没有删除,执行下面的命令会退出来,不会对系统产生任何影响。<br />
<br />
输入如下命令安装<br />
apt-get install apache2<br />
<br />
正常情况下会给出如下提示,说明Apache2默认已经安装好了:<br />
<source lang=bash><br />
root@241541:~# apt-get install apache2<br />
Reading package lists... Done<br />
Building dependency tree... Done<br />
apache2 is already the newest version.<br />
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.<br />
</source><br />
<br />
=== 开启 Apache2 的伪静态 ===<br />
如果希望开启Apache2 伪静态 rewrite 支持,输入如下命令安装<br />
<br />
a2enmod rewrite<br />
<br />
正常情况下会给出如下提示,说明已经安装成功:<br />
<source lang=bash><br />
root@241541:~# a2enmod rewrite<br />
Module rewrite installed; run /etc/init.d/apache2 force-reload to enable.<br />
</source><br />
<br />
提示需要重新加载Apache2的配置,由于下一步是安装mysql,所以暂时不用重启。<br />
<br />
或出现如下提示,表示已经开启了 rewrite <br />
<source lang=bash><br />
root@241541:~# a2enmod rewrite<br />
Mudule rewrite already enabled<br />
</source><br />
<br />
=== 安装 mysql 数据库服务 ===<br />
[[MySQL]] 是 Linux 下最常用的开源数据库。<br />
<br />
输入如下命令安装mysql<br />
apt-get install mysql-server<br />
<br />
如果输入正确,会提示如下信息,<br />
<source lang=bash><br />
root@241541:~# apt-get install mysql-server<br />
Reading package lists... Done<br />
Building dependency tree... Done<br />
The following extra packages will be installed:<br />
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient16<br />
libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-client-core-5.1<br />
mysql-common mysql-server-5.1 mysql-server-core-5.1<br />
Suggested packages:<br />
libipc-sharedcache-perl libterm-readkey-perl tinyca<br />
The following NEW packages will be installed:<br />
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient16<br />
libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-client-core-5.1<br />
mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1<br />
0 upgraded, 12 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 22.9MB of archives.<br />
After this operation, 54.4MB of additional disk space will be used.<br />
Do you want to continue [Y/n]? <br />
</source><br />
<br />
输入 Y 回车,继续安装<br />
会提示输入 mysql 的 root 用户密码,你可以输入密码后回车,也可以不输入任何密码直接回车。<br />
(不输入密码不会影响到Mysql的安全性,因为Mysql仅仅用于本地监听,但不输入密码会导致后续phpmyadmin无法运行)<br />
<br />
[[Image:Vps_Mysql1.png]]<br />
<br />
需要重新输入一遍密码,如下图所示:<br />
<br />
[[Image:Vps_Mysql2.png]]<br />
<br />
最后提示如下界面,表示mysql安装成功。<br />
<br />
[[Image:Vps_Mysql3.png]]<br />
<br />
=== mysql 数据库管理 ===<br />
对于mysql数据库维护可以使用下面指南中安装的 phpmyadmin 进行维护,或直接在 putty 中输入 mysql -p 进行管理如图所示:<br />
<br />
[[Image:Vps_mysql1.png]]<br />
<br />
在 mysql> 的提示符下输入 quit 回车,将退出 mysql 命令,返回到正常操作提示符。<br />
<br />
=== mysql 数据库优化 ===<br />
如果你的VPS的内存只有512M,请按如下步骤进行优化,如果是1G或以上可以忽略本步骤。执行本步骤可以将Mysql的占用内存由150M降到100M。<br />
<br />
输入如下命令配置 Mysql<br />
<br />
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s`<br />
find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \;<br />
sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf<br />
<br />
执行结果如下所示:<br />
<source lang=bash><br />
root@241541:~# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s`<br />
root@241541:~# find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \;<br />
root@241541:~# sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf<br />
</source><br />
<br />
重启下 Mysql服务:<br />
service mysql restart<br />
<br />
执行结果如下所示:<br />
<source lang=bash> <br />
root@241541:~# service mysql restart<br />
Rather than invoking init scripts through /etc/init.d, use the service(8)<br />
utility, e.g. service mysql restart<br />
<br />
Since the script you are attempting to invoke has been converted to an<br />
Upstart job, you may also use the restart(8) utility, e.g. restart mysql<br />
mysql start/running, process 9886<br />
</source><br />
<br />
=== 安装php环境 ===<br />
执行如下命令安装apache2的php5扩展和php的mysql扩展<br />
<br />
apt-get install libapache2-mod-php5 php5-gd php5-mysql php5-curl php5-mcrypt php5-common php-apc<br />
php5enmod mcrypt<br />
<br />
如下提示:<br />
<source lang=bash><br />
root@241541:~# apt-get install libapache2-mod-php5 php5-gd php5-mysql php5-mcrypt php5-common php-apc<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
libgd2-xpm libjpeg62 libt1-5 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6<br />
libxpm4 php5-cli php5-common php-apc<br />
Suggested packages:<br />
php-pear libgd-tools <br />
The following NEW packages will be installed:<br />
libapache2-mod-php5 libgd2-xpm libjpeg62 libt1-5 libx11-6 libx11-data<br />
libxau6 libxcb1 libxdmcp6 libxpm4 php5-cli php5-common php5-gd php5-mysql php5-mcrypt<br />
0 upgraded, 15 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 8128kB of archives.<br />
After this operation, 22.7MB of additional disk space will be used.<br />
Do you want to continue [Y/n]?<br />
</source><br />
<br />
输入 Y,回车继续,以下表示安装完成。<br />
<br />
[[Image:Vps_php1.png]]<br />
<br />
重新启动apache2, 输入如下命令:<br />
service apache2 restart<br />
<br />
提示如下,表示启动成功:<br />
<source lang=bash><br />
root@241541:~# service apache2 restart<br />
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
[ OK ]<br />
</source><br />
<br />
=== 测试站点 ===<br />
以上命令已经完整安装好一台Web服务器所具有的环境,以下来搭建一个最简单的站点。<br />
<br />
web 的根目录位于 /var/www/html 你可以将自己的程序直接放到此目录。<br />
<br />
==== 安装 phpsysinfo ====<br />
<br />
使用putty登录到服务器,依次执行如下命令安装phpsysinfo:<br />
<br />
<source lang=bash><br />
cd /var/www/html<br />
wget http://sourceforge.net/projects/phpsysinfo/files/phpsysinfo/3.0.13/phpsysinfo-3.0.13.tar.gz/download -O phpsysinfo-3.0.13.tar.gz<br />
tar xzvf phpsysinfo-3.0.13.tar.gz <br />
cd phpsysinfo<br />
mv config.php.new config.php<br />
</source><br />
<br />
执行完毕后,在浏览器的地址输入: http://184.82.9.30/phpsysinfo/ 查看,显示如下:<br />
<br />
[[Image:Vps_phpsysinfo.png]]<br />
<br />
==== 安装 php 探针 ====<br />
使用putty登录到服务器,依次执行如下命令安装:<br />
<source lang=bash><br />
cd /var/www/html<br />
wget http://www.yahei.net/tz/tz.zip<br />
unzip tz.zip<br />
</source><br />
运行结果如下所示:<br />
<source lang=bash><br />
root@241541:~# cd /var/www/html<br />
root@241541:/var/www/html# wget http://www.yahei.net/tz/tz.zip<br />
--2011-08-13 09:18:40-- http://www.yahei.net/tz/tz.zip<br />
Resolving www.yahei.net... 110.34.192.14<br />
Connecting to www.yahei.net|110.34.192.14|:80... connected.<br />
HTTP request sent, awaiting response... 200 OK<br />
Length: 16087 (16K) [application/zip]<br />
Saving to: `tz.zip'<br />
<br />
100%[======================================>] 16,087 --.-K/s in 0.07s<br />
<br />
2011-08-13 09:18:41 (152 KB/s) - `tz.zip' saved [16,087/16,087]<br />
<br />
root@241541:/var/www/html# unzip tz.zip<br />
Archive: tz.zip<br />
inflating: tz.php<br />
</source><br />
<br />
执行完毕后,在浏览器的地址输入: http://184.82.9.30/tz.php 查看,显示如下:<br />
<br />
[[Image:Vps_tz1.png]]<br />
<br />
==== 安装 phpmyadmin ====<br />
安装phpmyadmin,需要mysql事先配置好root的密码。<br />
<br />
使用putty登录到服务器,执行下面安装<br />
<br />
apt-get install phpmyadmin<br />
<br />
提示如下:<br />
<source lang=bash><br />
root@241541:~# apt-get install phpmyadmin<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
dbconfig-common javascript-common libjs-mootools libmcrypt4 php5-mcrypt<br />
wwwconfig-common<br />
Suggested packages:<br />
libmcrypt-dev mcrypt postgresql-client apache apache-ssl<br />
The following NEW packages will be installed:<br />
dbconfig-common javascript-common libjs-mootools libmcrypt4 php5-mcrypt<br />
phpmyadmin wwwconfig-common<br />
0 upgraded, 7 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 5184kB of archives.<br />
After this operation, 21.3MB of additional disk space will be used.<br />
Do you want to continue [Y/n]?<br />
</source><br />
输入 Y, 回车继续。<br />
<br />
{{Qref Alarm}} <font color="red">'''按 空格键 选择 Apche2'''</font> 如下图:<br />
<br />
[[Image:Vps_phpmyadmin1.png]]<br />
<br />
选择完毕后,回车继续,提示如下图,是否需要创建phpmyadmin数据库,<br />
<br />
[[Image:Vps_phpmyadmin2.png]]<br />
<br />
直接回车继续,提示输入mysql的管理员密码,输入后如下所示:<br />
<br />
[[Image:Vps_phpmyadmin3.png]]<br />
<br />
回车继续后,如下图,提示输入phpmyadmin连接数据的密码,直接回车由系统随机产生一个即可。<br />
<br />
[[Image:Vps_phpmyadmin4.png]]<br />
<br />
完成安装提示如下:<br />
<br />
[[Image:Vps_phpmyadmin5.png]]<br />
<br />
现在访问如下地址测试: http://184.82.9.30/phpmyadmin/<br />
<br />
如果打开提示 404 错误,即 Not Found ,在putty里面执行如下命令:<br />
ln -s /usr/share/phpmyadmin /var/www/html/<br />
然后再访问,如下:<br />
<br />
[[Image:Vps_phpmyadmin6.png]]<br />
<br />
输入mysql的root帐号和mysql的密码,点击 执行 进行登录,进行正常访问如下:<br />
<br />
[[Image:Vps_phpmyadmin7.png]]<br />
<br />
=== 配置虚拟站点 ===<br />
<br />
假设前提: 你有一个域名 test.com ,你希望搭建两个站点,第一个站点是 www.test.com 和 test.com 为主页,同时希望提供 bbs.test.com 为论坛。<br />
<br />
注意,下面的文档对多个不同的域名也是适用的。<br />
<br />
==== 配置域名 ====<br />
去域名商提供的面板将 test.com 域名的 A 记录修改为 VPS 的 IP.<br />
<br />
==== 上传程序 ====<br />
约定两个站点的目录如下,为了方便备份,站点的目录最好集中存放在 /var/www/html 目录。<br />
<br />
www.test.com(test.com) 对应目录: /var/www/html/test<br />
bbs.test.com 对应目录: /var/www/html/bbs<br />
<br />
假设主站点安装帝国的CMS程序,论坛采用DZ的论坛,程序需要下载UTF-8的版本。<br />
<br />
[[Image:Vps_ApacheSite1.png]]<br />
<br />
使用前面提到的上传方法,利用 FileZilla 连接服务器,创建这两个目录。<br />
<br />
[[Image:Vps_ApacheSite2.png]]<br />
<br />
如果找不到如上图的目录,请点击 / 即可看到了。<br />
<br />
[[Image:Vps_ApacheSiteFile4.png]]<br />
<br />
创建目录后,分别上传程序,如下:<br />
<br />
[[Image:Vps_ApacheSite3.png]]<br />
<br />
==== 多域名配置 ====<br />
这里推荐编辑器直接使用记事本,不要使用其他的高级编辑器。<br />
<br />
注意下面的 '''DocumentRoot /var/www/html/test/''' 中的 '''/var/www/html/test/''' 应该修改为你上传站点的文件目录。<br />
<br />
编辑www.test.com的站点配置文件test.com.txt ,其中站点 http://www.test.com 和 http://test.com 的网站目录为 /var/www/html/test/<br />
<br />
<VirtualHost *:80><br />
ServerName www.test.com<br />
ServerAlias test.com<br />
DocumentRoot /var/www/html/test/<br />
</VirtualHost> <br />
<br />
编辑bbs.test.com的站点配置文件 bbs.test.com.txt , 其中站点 bbs.test.com 的网站目录为 /var/www/html/bbs/<br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
</VirtualHost><br />
<br />
如图所示:<br />
<br />
[[Image:Vps_ApacheSite4.png]]<br />
<br />
将这两个文件上传到 /etc/apache2/sites-enabled/ 目录<br />
<br />
如图所示:<br />
<br />
[[Image:Vps_ApacheSite5.png]]<br />
<br />
==== Apache2 伪静态 ====<br />
有两种方法做伪静态,一种是用 .htaccess 文件。 例如将上面的 bbs.test.com 的站点配置文件编辑为如下:<br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
<Directory /var/www/html/bbs/><br />
AllowOverride AuthConfig<br />
</Directory><br />
</VirtualHost> <br />
<br />
重新上传,重启 apache2 后, 然后将准备好的 .htaccess 文件放到对应的 /var/www/html/bbs/ 网站根目录即可。<br />
<br />
另外一种是直接加入到配置文件,如下:<br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
#伪静态代码段开始 <br />
<Directory /var/www/html/bbs/><br />
...............................<br />
</Directory><br />
#伪静态代码段结束 <br />
</VirtualHost> <br />
<br />
下面是常用的一些伪静态配置,复制出来,保存为 .htaccess 文件,或 插入到站点的配置文件最后一行 <Directory> 和 </Directory> 之间。 <br />
<br />
Discuz!X 在 Apche2 下的伪静态配置如下: <br />
<br />
RewriteEngine On<br />
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2<br />
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2<br />
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1<br />
RewriteRule ^article-([0-9]+)\.html$ portal.php?mod=article&articleid=$1<br />
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2<br />
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2<br />
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2<br />
<br />
<br />
将这一段代码加入到上面的站点配置文件中,如下: <br />
<br />
<VirtualHost *:80><br />
ServerName bbs.test.com<br />
DocumentRoot /var/www/html/bbs/<br />
<Directory /var/www/html/bbs/><br />
RewriteEngine On<br />
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2<br />
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2<br />
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1<br />
RewriteRule ^article-([0-9]+)\.html$ portal.php?mod=article&articleid=$1<br />
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2<br />
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2<br />
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2<br />
</Directory><br />
</VirtualHost><br />
<br />
WordPress 在 Apache2 下的伪静态配置如下: <br />
<Directory /><br />
RewriteEngine On<br />
RewriteRule ^index\.php$ - [L]<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule . /index.php [L]<br />
</Directory><br />
<br />
<br />
ECShop 在 Apache2 下的伪静态配置如下: <br />
<Directory /><br />
RewriteEngine On<br />
RewriteRule ^(.*)/index.html$ $1/index\.php [I]<br />
RewriteRule ^(.*)/category$ $1/index\.php [I]<br />
RewriteRule ^(.*)/feed-c([0-9]+).xml$ $1/feed\.php\?cat=$2 [I]<br />
RewriteRule ^(.*)/feed-b([0-9]+).xml$ $1/feed\.php\?brand=$2 [I]<br />
RewriteRule ^(.*)/feed-type([^-]+)\.xml$ $1/feed\.php\?type=$2 [I]<br />
RewriteRule ^(.*)/feed.xml$ $1/feed\.php [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6&page=$7&sort=$8&order=$9 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)\.html$ $1/category\.php\?id=$2&brand=$3&price_min=$4&price_max=$5&filter_attr=$6 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3&page=$4&sort=$5&order=$6 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3&page=$4 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)(.*)\.html$ $1/category\.php\?id=$2&brand=$3 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)(.*)\.html$ $1/category\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/category-([0-9]+)-b([0-9]+)\.html(.*)$ $1/category\.php\?$4&id=$2&brand=$3<br />
RewriteRule ^(.*)/goods-([0-9]+)(.*)\.html$ $1/goods\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/article_cat\.php\?id=$2&page=$3&sort=$4&order=$5 [I]<br />
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2&page=$3 [I]<br />
RewriteRule ^(.*)/article_cat-([0-9]+)(.*)\.html$ $1/article_cat\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/article-([0-9]+)(.*)\.html$ $1/article\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html $1/brand\.php\?id=$2&cat=$3&page=$4&sort=$5&order=$6 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3&page=$4 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)\.html(.*)$ $1/brand\.php\?$4&id=$2&cat=$3 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)-c([0-9]+)(.*)\.html $1/brand\.php\?id=$2&cat=$3 [I]<br />
RewriteRule ^(.*)/brand-([0-9]+)(.*)\.html $1/brand\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/tag-(.*)\.html $1/search\.php\?keywords=$2 [I]<br />
RewriteRule ^(.*)/snatch-([0-9]+)\.html$ $1/snatch\.php\?id=$2 [I]<br />
RewriteRule ^(.*)/group_buy-([0-9]+)\.html$ $1/group_buy\.php\?act=view&id=$2 [I]<br />
RewriteRule ^(.*)/auction-([0-9]+)\.html$ $1/auction\.php\?act=view&id=$2 [I]<br />
RewriteRule ^(.*)/exchange-id([0-9]+)(.*)\.html$ $1/exchange\.php\?id=$2&act=view [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&integral_min=$3&integral_max=$4&page=$5&sort=$6&order=$7 [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&page=$3&sort=$4&order=$5 [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)-([0-9]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2&page=$3 [I]<br />
RewriteRule ^(.*)/exchange-([0-9]+)(.*)\.html$ $1/exchange\.php\?cat_id=$2 [I]<br />
</Directory><br />
<br />
==== 修改上传文件权限 ====<br />
由于上传的文件的所有者为 root ,Apache 无法正常写入,所以需要设置上传文件的宿主为 www-data。<br />
<br />
使用putty登录vps执行如下命令,设置 /var/www下的所有文件的宿主都是 www-data,这样apache2就可以正常读写:<br />
<br />
chown -R www-data:www-data /var/www<br />
service apache2 restart<br />
<br />
执行结果如下所示:<br />
<source lang=bash><br />
root@241541:~# chown -R www-data:www-data /var/www<br />
root@241541:~# service apache2 restart<br />
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
</source> [ OK ]<br />
<br />
==== 安装配置 ====<br />
主站点程序访问 http://www.test.com 如下图所示,进一步安装:<br />
<br />
[[Image:Vps_ApacheSite8.png]]<br />
<br />
论坛程序访问 http://bbs.test.com 如下图所示,进一步安装:<br />
<br />
[[Image:Vps_ApacheSite7.png]]<br />
<br />
以上就是完成多域名的配置。<br />
<br />
=== Apache2 301 跳转 ===<br />
如果希望将 test.com 跳转到 www.test.com ,如下配置 test.com.txt 上传到 /etc/apache2/sites-enabled/ 目录即可。<br />
<source lang=bash><br />
<VirtualHost *:80><br />
ServerName test.com<br />
RewriteCond %{HTTP_HOST} ^test\.com [NC]<br />
RewriteRule ^(.*)$ http://www.test.com/$1 [L,R=301]<br />
</VirtualHost> <br />
</source><br />
当然你也可以去 test.com 的域名那里设置 301 跳转。<br />
<br />
=== Apache2 优化 ===<br />
请一定要执行本步骤,不要认为小站,访问的人数少,有时候蜘蛛会按照超过20个以上的并发抓取数据,直接爆掉vps。表现为:可以ping,但网站打不开、数据库连不上或无法ssh。<br />
<br />
为了防止Vps被大的访问量爆掉,需要限制并发数,这里#1 VPS 调整为10, #2可以将下面的10修改为20,#3为30,以此类推。<br />
<br />
也可以根据指南最后的压力测试来确定最大并发数,确定后,将下面的命令中的 10 改为你确定的并发数即可,其它数值如 5 不要修改。<br />
<br />
请复制命令后到putty直接按鼠标右键粘贴执行:<br />
<br />
<source lang=bash><br />
sed -i -e "s/^[[:blank:]]*StartServers[[:blank:]]*.*/StartServers 5/" \<br />
-e "s/^[[:blank:]]*MinSpareServers[[:blank:]]*.*/MinSpareServers 5/" \<br />
-e "s/^[[:blank:]]*MaxSpareServers[[:blank:]]*.*/MaxSpareServers 10/" \<br />
-e "s/^[[:blank:]]*ServerLimit[[:blank:]]*.*/ServerLimit 10/" \<br />
-e "s/^[[:blank:]]*MaxClients[[:blank:]]*.*/MaxClients 10/" \<br />
-e "s/^[[:blank:]]*MinSpareThreads[[:blank:]]*.*/MinSpareThreads 5/" \<br />
-e "s/^[[:blank:]]*MaxSpareThreads[[:blank:]]*.*/MaxSpareThreads 10/" /etc/apache2/apache2.conf<br />
</source><br />
执行完毕后后,再执行以下命令,重启下apache2。<br />
<br />
service apache2 restart<br />
<br />
执行结果如下所示:<br />
<source lang=shell-session><br />
root@241541:~# sed -i -e "s/^[[:blank:]]*StartServers[[:blank:]]*.*/StartServers 5/" \<br />
> -e "s/^[[:blank:]]*MinSpareServers[[:blank:]]*.*/MinSpareServers 5/" \<br />
> -e "s/^[[:blank:]]*MaxSpareServers[[:blank:]]*.*/MaxSpareServers 10/" \<br />
> -e "s/^[[:blank:]]*ServerLimit[[:blank:]]*.*/ServerLimit 10/" \<br />
> -e "s/^[[:blank:]]*MaxClients[[:blank:]]*.*/MaxClients 10/" \<br />
> -e "s/^[[:blank:]]*MinSpareThreads[[:blank:]]*.*/MinSpareThreads 5/" \<br />
> -e "s/^[[:blank:]]*MaxSpareThreads[[:blank:]]*.*/MaxSpareThreads 10/" /etc/apache2/apache2.conf<br />
root@241541:~# service apache2 restart<br />
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.4.54.225 for ServerName<br />
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 0.4.54.225 for ServerName<br />
[ OK ]<br />
</source><br />
<br />
=== 查看 Apache2 日志 ===<br />
Apache2的日志放在 /var/log/apache2/ 目录下,可以直接使用filezilla去下载下来看。<br />
<br />
== 使用 Nginx 搭建站点 ==<br />
为什要使用 nginx?因为 apache 太耗内存了,使用 nginx 可以节约内存。<br />
<br />
采用 nginx + php-fpm + mysql 搭建。<br />
<br />
=== 删除 apache2 ===<br />
使用putty登录vps,执行如下命令:<br />
<br />
输入如下命令关闭 apache2<br />
<br />
service apache2 stop<br />
<br />
如果输入正确,会提示如下信息,表示apache2已经停止<br />
<br />
root@241541:~# service apache2 stop<br />
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
... waiting [ OK ]<br />
<br />
输入如下命令删除 apache2<br />
apt-get remove apache2 apache2.2-common<br />
<br />
出现类似如下提示时,输入 Y 并回车。<br />
<br />
0 upgraded, 1 newly installed, 7 to remove and 26 not upgraded.<br />
Need to get 5837kB of archives.<br />
After this operation, 14.5MB disk space will be freed.<br />
Do you want to continue [Y/n]?<br />
<br />
最后会出现如下提示,表示已经删除 apache2<br />
Removing libapache2-mod-php5 ...<br />
Module php5 disabled.<br />
Run '/etc/init.d/apache2 restart' to activate new configuration!<br />
Removing apache2-mpm-prefork ...<br />
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 0.3.175.133 for ServerName<br />
... waiting [ OK ]<br />
Removing apache2.2-common ...<br />
Removing apache2-utils ...<br />
Removing apache2.2-bin ...<br />
<br />
=== 安装 php5-fpm php5-cgi ===<br />
安装 php5-fpm 执行如下命令:<br />
apt-get install php5-cgi php5-fpm php5-gd php5-mysql php5-curl php5-mcrypt php5-common php-apc<br />
php5enmod mcrypt<br />
<br />
出现下面的提示表示安装成功<br />
<source lang=bash><br />
root@241541:~# apt-get install php5-cgi php5-fpm php5-gd php5-mysql php5-mcrypt php5-common php-apc<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
php5-cgi is already the newest version.<br />
php5-cgi set to manually installed.<br />
Suggested packages:<br />
php-pear<br />
The following NEW packages will be installed:<br />
libevent-1.4-2 php5-fpm<br />
0 upgraded, 2 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 3002kB of archives.<br />
After this operation, 7967kB of additional disk space will be used.<br />
Get:1 http://archive.ubuntu.com/ubuntu/ maverick/main libevent-1.4-2 i386 1.4.13-stable-1 [56.2kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ maverick-updates/universe php5-fpm i386 5.3.3-1ubuntu9.5 [2946kB]<br />
Fetched 3002kB in 1s (2181kB/s)<br />
Selecting previously deselected package libevent-1.4-2.<br />
(Reading database ... 21902 files and directories currently installed.)<br />
Unpacking libevent-1.4-2 (from .../libevent-1.4-2_1.4.13-stable-1_i386.deb) ...<br />
Selecting previously deselected package php5-fpm.<br />
Unpacking php5-fpm (from .../php5-fpm_5.3.3-1ubuntu9.5_i386.deb) ...<br />
Setting up libevent-1.4-2 (1.4.13-stable-1) ...<br />
Setting up php5-fpm (5.3.3-1ubuntu9.5) ...<br />
update-rc.d: warning: php5-fpm stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (none)<br />
* Starting PHP5 FPM... Aug 13 06:25:50.352643 [WARNING] [pool www] pm.start_servers is not set. It's been set to 20.<br />
[ OK ]<br />
<br />
Creating config file /etc/php5/fpm/php.ini with new version<br />
Processing triggers for libc-bin ...<br />
ldconfig deferred processing now taking place<br />
</source><br />
安装完毕后,我们调整下 php5-fpm 使其采用 127.0.0.1:9000 进行监听,执行如下命令:<br />
sed -i -e 's/listen =.*$/listen = 127.0.0.1:9000/' `grep -R -l listen /etc/php5/fpm`<br />
<br />
完毕后,重启下 php5-fpm,执行如下命令重启<br />
service php5-fpm restart <br />
<br />
出现如下提示,表示重启成功<br />
root@241541:~# service php5-fpm restart<br />
php5-fpm stop/waiting<br />
php5-fpm start/running, process 6899<br />
<br />
=== 安装 mysql ===<br />
[[Vps#.E5.AE.89.E8.A3.85_mysql_.E6.95.B0.E6.8D.AE.E5.BA.93.E6.9C.8D.E5.8A.A1|见前面的安装 mysql 的步骤。]]<br />
<br />
=== 安装 nginx ===<br />
使用putty登录vps,执行如下命令: <br />
<br />
apt-get install nginx<br />
<br />
出现如下提示,表示已经安装完毕:<br />
<br />
<source lang=bash><br />
root@241541:~# apt-get install nginx<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
Suggested packages:<br />
ufw<br />
The following NEW packages will be installed:<br />
nginx<br />
0 upgraded, 1 newly installed, 0 to remove and 26 not upgraded.<br />
Need to get 341kB of archives.<br />
After this operation, 827kB of additional disk space will be used.<br />
Get:1 http://archive.ubuntu.com/ubuntu/ maverick/universe nginx i386 0.7.67-3ubuntu1 [341kB]<br />
Fetched 341kB in 0s (437kB/s)<br />
Selecting previously deselected package nginx.<br />
(Reading database ... 21918 files and directories currently installed.)<br />
Unpacking nginx (from .../nginx_0.7.67-3ubuntu1_i386.deb) ...<br />
Setting up nginx (0.7.67-3ubuntu1) ...<br />
</source><br />
<br />
再执行下面的命令启动nginx服务:<br />
<br />
service nginx start<br />
<br />
结果如下所示,表示nginx顺利启动:<br />
<br />
root@241541:~# service nginx start<br />
Starting nginx: nginx.<br />
<br />
=== 测试站点 ===<br />
由于nginx默认的站点不支持php,所以需要修改默认站点。<br />
<br />
编辑文件名为 default.txt ,注意下面的 server_name 修改为你的vps的ip地址,可以写一个IP,也可以都写上,IP和IP之间有空格。<br />
<br />
配置文件中的 root 就是站点的目录了,可以更改为你的站点的路径。<br />
<br />
server {<br />
listen 80;<br />
server_name 184.82.9.30 184.82.9.31;<br />
index index.html index.htm index.php;<br />
root /var/www/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
<br />
将 default.txt 文件使用 filezilla 上传到 /etc/nginx/sites-enabled 目录下<br />
<br />
使用 putty 登录vps,输入如下命令重启 nginx 服务<br />
<br />
service nginx restart<br />
<br />
重启结果如下所示:<br />
root@241541:~# service nginx restart<br />
Restarting nginx: nginx.<br />
<br />
==== 安装phpsysinfo ====<br />
按照前面apache2讲述的安装<br />
<br />
==== 安装 php 探针 ====<br />
[[Vps#.E5.AE.89.E8.A3.85_php_.E6.8E.A2.E9.92.88|按照前面apache2讲述的安装]]<br />
<br />
==== 安装 phpmyadmin ====<br />
照前面 Apache2 安装 phpmyadmin, 注意第二步不要再按空格选择 apache2 , 直接回车下一步。<br />
<br />
如果已经之前已经安装过 phpmyadmin ,不需要删除,继续使用。<br />
<br />
安装完毕 phpmyadmin 后, 继续在 putty 里面执行如下命令即可:<br />
<br />
cd /var/www<br />
ln -s /usr/share/phpmyadmin .<br />
<br />
执行情况如下所示:<br />
root@241541:~# cd /var/www<br />
root@241541:/var/www# ln -s /usr/share/phpmyadmin .<br />
root@241541:/var/www#<br />
<br />
然后就可以在浏览器里面访问 phpmyadmin 了。 访问地址: http://184.82.9.30/phpmyadmin/<br />
<br />
=== 配置虚拟站点 ===<br />
以上运行环境均已经安装完毕,下面讲如何配置 nginx 的多域名。<br />
<br />
假设前提: 你有一个域名 test.com ,你希望搭建两个站点,第一个站点是 www.test.com 和 test.com 为主页,同时希望提供 bbs.test.com 为论坛。<br />
<br />
下面的文档对多个不同的域名也是适用的。<br />
<br />
==== 配置域名 ====<br />
参考上面 apache2 的配置域名部分。<br />
<br />
==== 上传程序 ====<br />
参考上面 apache2 的上传程序部分。<br />
<br />
==== 多域名配置 ====<br />
这里推荐编辑器直接使用记事本,不要使用其他的高级编辑器。<br />
<br />
编辑www.test.com的站点配置文件 test.com.txt <br />
<br />
server {<br />
listen 80;<br />
server_name www.test.com test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/test/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
<br />
编辑bbs.test.com的站点配置文件 bbs.test.com.txt<br />
<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
<br />
将这两个文件使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录<br />
<br />
==== Nginx 伪静态 ====<br />
下面是常用的一些伪静态配置,复制出来,插入到站点的配置文件最后一个 } 号之前,如下:<br />
<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
#伪静态代码段开始 <br />
location / {<br />
...............................<br />
}<br />
#伪静态代码段结束 <br />
}<br />
<br />
Discuz!X 在 Nginx 下的伪静态配置如下:<br />
<br />
location / {<br />
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;<br />
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;<br />
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;<br />
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;<br />
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;<br />
}<br />
<br />
将这一段代码加入到上面的站点配置文件中,例如:<br />
<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
location / {<br />
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;<br />
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;<br />
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;<br />
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;<br />
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;<br />
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;<br />
}<br />
}<br />
<br />
WordPress 在 Nginx 下的伪静态配置如下:<br />
location / {<br />
if (-f $request_filename/index.html){<br />
rewrite (.*) $1/index.html break;<br />
}<br />
if (-f $request_filename/index.php){<br />
rewrite (.*) $1/index.php;<br />
}<br />
if (!-f $request_filename){<br />
rewrite (.*) /index.php;<br />
}<br />
}<br />
<br />
<br />
ECShop 在 Nginx 下的伪静态配置如下:<br />
location / {<br />
if (!-e $request_filename) {<br />
rewrite "^/index\.html" /index.php last;<br />
rewrite "^/category$" /index.php last;<br />
rewrite "^/feed-c([0-9]+)\.xml$" /feed.php?cat=$1 last;<br />
rewrite "^/feed-b([0-9]+)\.xml$" /feed.php?brand=$1 last;<br />
rewrite "^/feed\.xml$" /feed.php last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)(.*)\.html$" /category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /category.php?id=$1&brand=$2&page=$3&sort=$4&order=$5 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$" /category.php?id=$1&brand=$2&page=$3 last;<br />
rewrite "^/category-([0-9]+)-b([0-9]+)(.*)\.html$" /category.php?id=$1&brand=$2 last;<br />
rewrite "^/category-([0-9]+)(.*)\.html$" /category.php?id=$1 last;<br />
rewrite "^/goods-([0-9]+)(.*)\.html" /goods.php?id=$1 last;<br />
rewrite "^/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /article_cat.php?id=$1&page=$2&sort=$3&order=$4 last;<br />
rewrite "^/article_cat-([0-9]+)-([0-9]+)(.*)\.html$" /article_cat.php?id=$1&page=$2 last;<br />
rewrite "^/article_cat-([0-9]+)(.*)\.html$" /article_cat.php?id=$1 last;<br />
rewrite "^/article-([0-9]+)(.*)\.html$" /article.php?id=$1 last;<br />
rewrite "^/brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)\.html" /brand.php?id=$1&cat=$2&page=$3&sort=$4&order=$5 last;<br />
rewrite "^/brand-([0-9]+)-c([0-9]+)-([0-9]+)(.*)\.html" /brand.php?id=$1&cat=$2&page=$3 last;<br />
rewrite "^/brand-([0-9]+)-c([0-9]+)(.*)\.html" /brand.php?id=$1&cat=$2 last;<br />
rewrite "^/brand-([0-9]+)(.*)\.html" /brand.php?id=$1 last;<br />
rewrite "^/tag-(.*)\.html" /search.php?keywords=$1 last;<br />
rewrite "^/snatch-([0-9]+)\.html$" /snatch.php?id=$1 last;<br />
rewrite "^/group_buy-([0-9]+)\.html$" /group_buy.php?act=view&id=$1 last;<br />
rewrite "^/auction-([0-9]+)\.html$" /auction.php?act=view&id=$1 last;<br />
rewrite "^/exchange-id([0-9]+)(.*)\.html$" /exchange.php?id=$1&act=view last;<br />
rewrite "^/exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /exchange.php?cat_id=$1&integral_min=$2&integral_max=$3&page=$4&sort=$5&order=$6 last;<br />
rewrite "^/exchange-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$" /exchange.php?cat_id=$1&page=$2&sort=$3&order=$4 last;<br />
rewrite "^/exchange-([0-9]+)-([0-9]+)(.*)\.html$" /exchange.php?cat_id=$1&page=$2 last;<br />
rewrite "^/exchange-([0-9]+)(.*)\.html$" /exchange.php?cat_id=$1 last;<br />
}<br />
}<br />
<br />
==== 修改上传文件权限 ====<br />
由于上传的文件的所有者为 root ,Nginx 无法正常写入,所以需要设置上传文件的宿主为 www-data。<br />
<br />
使用putty登录vps执行如下命令,设置 /var/www下的所有文件的宿主都是 www-data,这样nginx就可以正常读写:<br />
<br />
chown -R www-data:www-data /var/www<br />
service nginx restart<br />
<br />
执行结果如下所示:<br />
<br />
root@241541:~# chown -R www-data:www-data /var/www<br />
root@195669:~# service nginx restart<br />
Restarting nginx: nginx.<br />
<br />
==== 安装配置 ====<br />
见 apache2 的安装配置部分<br />
<br />
=== nginx 301 跳转 ===<br />
如果希望将 test.com 跳转到 www.test.com ,如下配置 test.com.txt 上传到 /etc/nginx/sites-enabled/ 目录即可。<br />
<source lang=bash><br />
server {<br />
listen 80;<br />
server_name test.com;<br />
rewrite ^/(.*) http://www.test.com/$1 permanent;<br />
}<br />
</source><br />
当然你也可以去 test.com 的域名那里设置 301 跳转。<br />
<br />
=== nginx 优化 ===<br />
请一定要执行本步骤,不要认为小站,访问的人数少,有时候蜘蛛会按照超过20个以上的并发抓取数据,直接爆掉vps。表现为:可以ping,但网站打不开、数据库连不上或无法ssh。<br />
<br />
为了防止Vps被大的访问量爆掉,需要限制并发数,这里#1 VPS 调整为10, #2可以将下面的10修改为20,#3为30,以此类推。 <br />
<br />
也可以根据指南最后的压力测试来确定最大并发数,确定后,将下面的命令中的 10 改为你确定的并发数即可,其它数值如 5 不要修改。<br />
<br />
因为命令中包括了 ` 号,所以请复制命令后到putty直接按鼠标右键粘贴执行:<br />
<br />
sed -i -e 's/pm.max_children =.*$/pm.max_children = 10/' `grep -R -l pm.max_children /etc/php5/fpm`<br />
sed -i -e 's/pm.start_servers =.*$/pm.start_servers = 5/' `grep -R -l pm.max_children /etc/php5/fpm`<br />
sed -i -e 's/pm.max_spare_servers =.*$/pm.max_spare_servers = 10/' `grep -R -l pm.max_children /etc/php5/fpm`<br />
<br />
执行完毕后,重启下 php-fpm 服务:<br />
<br />
service php5-fpm restart<br />
<br />
=== nginx 限制同一IP的并发数和连接流量 ===<br />
在终端执行下面语句开启nginx并发支持:<br />
echo "limit_conn_zone \$binary_remote_addr zone=one:10m;" > /etc/nginx/conf.d/limitconn.conf<br />
<br />
然后打开虚拟站点配置文件,如编辑上面例子中的 bbs.test.com 站点配置文件 bbs.test.com.txt,<br />
<br />
在 server_name bbs.test.com; 这一行下面插入如下:<br />
<br />
limit_conn one 20;<br />
limit_rate 200k;<br />
<br />
上面的20,标示同一IP的最大并发数为20。200k为连接的最大速度为200k。<br />
<br />
注意,这里控制的流量是针对单一连接的,并不是同一IP的最大速度,其最大速度为200k*20=4000k。<br />
<br />
最终修改后的结果如下所示:<br />
server {<br />
listen 80;<br />
server_name bbs.test.com;<br />
limit_conn one 20;<br />
limit_rate 200k;<br />
index index.html index.htm index.php;<br />
root /var/www/bbs/;<br />
location ~ \.php$ {<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_pass 127.0.0.1:9000;<br />
}<br />
}<br />
<br />
将上面的配置文件重新使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录,覆盖后,执行以下命令重启 nginx 使配置生效:<br />
service nginx restart<br />
<br />
=== 查看 nginx 日志 ===<br />
Nginx的日志放在 /var/log/nginx/ 目录下,可以使用 filezilla 下载下来查看。<br />
<br />
=== 配置CDN或反向代理 ===<br />
我们需要将 www.test.com 或 test.com 的访问反向代理到 192.168.1.1 地址上。<br />
<br />
1 执行如下命令来建立缓存目录和临时目录,这里默认为最大20g的缓存空间,可以根据你的实际情况增加或减小,修改地方为 max_size=20g;<br />
<br />
mkdir /var/www/cache<br />
mkdir /var/www/temp<br />
chown -R www-data:www-data /var/www<br />
echo "proxy_cache_path /var/www/cache levels=1:2 keys_zone=cache_one:100m inactive=7d max_size=20g;" > /etc/nginx/conf.d/cdn.conf<br />
echo "proxy_temp_path /var/www/temp;" >> /etc/nginx/conf.d/cdn.conf<br />
<br />
2 编辑 www.test.com 站点的反向代理配置文件 test.com.txt 如下:<br />
<source lang=bash><br />
server {<br />
listen 80;<br />
server_name www.test.com test.com;<br />
location / { <br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_pass_header Server;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
location ~ .*\.(gif|png|jpg|jpeg|swf|zip|gz|tar|bz2|rar|doc|txt|ico|cur)$ {<br />
proxy_cache cache_one;<br />
proxy_cache_valid 30d;<br />
proxy_cache_key $host$uri$is_args$args;<br />
proxy_set_header Host $host;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
location ~ .*\.(css|js)?$ {<br />
proxy_cache cache_one;<br />
proxy_cache_valid 1h;<br />
proxy_cache_key $host$uri$is_args$args;<br />
proxy_set_header Host $host;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
}<br />
</source><br />
<br />
上面的配置中 "gif|png|jpg|jpeg|swf|zip|gz|tar|bz2|rar|doc|txt|ico|cur" 的后缀缓存设置的为30天,css|js 后缀的为1小时,你可以根据实际需求调整 proxy_cache_valid 30d; 行最后的 30d 为其它的值,如缓存1天为: proxy_cache_valid 1d; <br />
<br />
如果不需要缓存,直接设置为如下:<br />
<source lang=bash><br />
server {<br />
listen 80;<br />
server_name www.test.com test.com;<br />
location / { <br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_pass_header Server;<br />
proxy_pass http://192.168.1.1;<br />
}<br />
}<br />
</source><br />
<br />
3 将这个文件使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录 <br />
<br />
4 执行下面的重启 nginx 命令,使配置生效。<br />
service nginx restart<br />
<br />
5 然后就可以去域名管理那里将 www.test.com test.com 的IP设置为VPS的IP即可。<br />
<br />
=== 反向代理 Google ===<br />
由于谷歌需要 https 才可以访问,所以反向代理谷歌需要占用服务器的 https 443 端口。<br />
<br />
1 产生 https 证书<br />
apt-get install openssl<br />
cd /etc/nginx/<br />
openssl genrsa -out google.key 1024<br />
openssl req -new -key google.key -out google.csr<br />
openssl x509 -req -days 3650 -in google.csr -signkey google.key -out google.crt<br />
2 建立配置文件 google.test.com.txt 这里用 google.test.com 来反向代理 google.com 如下:<br />
<source lang=bash>server {<br />
listen 80;<br />
server_name google.test.com;<br />
rewrite ^(.*) https://google.test.com$1 permanent;<br />
}<br />
<br />
server {<br />
listen 443;<br />
server_name google.test.com;<br />
ssl on;<br />
ssl_certificate /etc/nginx/google.crt;<br />
ssl_certificate_key /etc/nginx/google.key;<br />
location / {<br />
proxy_redirect https://www.google.com.hk/ /;<br />
proxy_cookie_domain google.com.hk google.test.com;<br />
proxy_set_header Host www.google.com.hk;<br />
proxy_pass https://www.google.com.hk;<br />
}<br />
}</source><br />
<br />
3 将这个文件使用 filezilla 上传到 /etc/nginx/sites-enabled/ 目录 <br />
<br />
4 执行下面的重启 nginx 命令,使配置生效。<br />
service nginx restart<br />
<br />
5 然后就可以去域名管理那里将 google.test.com 的IP设置为VPS的IP即可。<br />
<br />
6 完成,可以通过访问 https://google.test.com 来访问google了。<br />
<br />
== 安装邮件服务器 ==<br />
注意:官方对架设邮件服务器非常限制,担心对外发垃圾邮件,一旦被举报,就直接封VPS,所以下面的配置中,我们将邮件通过 Gmail 的账号转发出去。<br />
<br />
在 Putty 使用如下命令,安装 postfix,替换下面命令中的第一行 mydomain.com 为 你VPS上绑定的域名,如果有多个域名,选择其中一个即可。<br />
<br />
hostname mydomain.com<br />
apt-get -y install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules<br />
<br />
在弹出的对话框中,如果你的邮件服务器仅仅为你本地的程序使用,可以直接选择 Local only ,否则请选择其它选项。<br />
<br />
安装完成后,请运行如下命令限制 postfix 为 10 个并发:<br />
postconf -e default_process_limit=10<br />
<br />
将邮件服务器采用gmail账号做邮件中转,首先你需要先有一个gmail的账号: USERNAME@gmail.com PASSWORD ,为了避免出现Gmail的图形验证登陆,你可以开启Gmail的账号的二次验证,然后创建一个应用密码,这样你可以采用应用密码来配置。<br />
postconf -e relayhost=smtp.gmail.com:587<br />
postconf -e smtp_sasl_auth_enable=yes<br />
postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd<br />
postconf -e smtp_sasl_security_options=noanonymous<br />
postconf -e smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt<br />
postconf -e smtp_use_tls=yes<br />
<br />
下面的脚本中的 USERNAME 和 PASSWORD 单词请改为你正确的用户名和密码,<br />
echo "smtp.gmail.com:587 USERNAME@gmail.com:PASSWORD" > /etc/postfix/sasl_passwd<br />
chmod 400 /etc/postfix/sasl_passwd<br />
postmap /etc/postfix/sasl_passwd<br />
service postfix restart<br />
<br />
完成了本地邮件服务器的搭建。<br />
<br />
测试下:<br />
echo "Test mail" | mail -s "Test" you@example.com<br />
<br />
查看邮件投递日志:<br />
tail /var/log/mail.log<br />
<br />
这样你的程序就可以直接使用本地的SMTP服务对外发邮件了。<br />
<br />
== 搭建临时的FTP服务 ==<br />
前面已经提到了可以直接使用 Sftp 来访问 Vps,如果需要临时的搭建Ftp,则按下面的指南进行。<br />
<br />
=== 下载 pyftpdlib 库 ===<br />
<br />
在 Putty 使用如下命令,下载 pyftpdlib 库并解压缩。<br />
<source lang=bash><br />
cd /root<br />
wget https://pypi.python.org/packages/a8/f8/0f6db156898616dbcbd7bf865660295c81479071ab0fcd1898fe1b3a4fc4/pyftpdlib-1.5.1.tar.gz<br />
tar xzvf pyftpdlib-1.5.1.tar.gz<br />
</source><br />
解压缩完毕后,我们可以临时开启ftp了:<br />
<br />
=== 开启匿名ftp服务 ===<br />
<br />
开启匿名ftp服务,主目录为 /var/www ;默认是21端口;-d 是设置主目录。<br />
<br />
cd /root/pyftpdlib-1.5.1/<br />
python -m pyftpdlib -d /var/www<br />
<br />
运行该命令后,客户端就可以使用 anonymous 帐号登录,下载了。<br />
<br />
按 Ctrl+C 结束 Ftp 服务器。<br />
<br />
=== 开启允许写入ftp服务 ===<br />
<br />
添加 -w 参数即可允许写入,不可以长时间开,小心被其它人删除数据。<br />
<br />
cd /root/pyftpdlib-1.5.1/<br />
python -m pyftpdlib -w -d /var/www <br />
<br />
运行该命令后,客户端就可以使用匿名帐号登录,下载和上传了。<br />
<br />
=== 登录ftp的账号 ===<br />
<br />
IP: VPS服务器的IP 用户名: anonymous 密码:随便输入一个邮箱即可。<br />
<br />
=== 关闭ftp服务 ===<br />
直接关闭终端就会退出ftp服务,如果不想关闭可以同时按下 ctrl+c 退出ftp服务。<br />
<br />
== VPS 自我监控 ==<br />
<br />
=== 监控内存和负载 ===<br />
为了防止VPS的内存超过,或系统负载过重,建议采用如下监控脚本:<br />
<br />
规则:当剩余内存小于1M或当前负载大于3时,系统重启。<br />
<br />
在 Putty 里面执行下面的语句,创建 /usr/bin/vpscheck.sh 脚本,<br />
cat << "EOF" > /usr/bin/vpscheck.sh<br />
#!/bin/bash<br />
free_mem=$(grep MemFree /proc/meminfo | awk '{print $2}')<br />
echo 'Free Memory:'$free_mem<br />
if [ $free_mem -lt 1000 ];then<br />
shutdown -r now<br />
fi<br />
load=$(awk '$1 > 3 {print $1}' /proc/loadavg)<br />
echo "Load:"$load<br />
if [ -n "$load" ];then<br />
shutdown -r now<br />
fi<br />
EOF<br />
<br />
再配置定时器,让上面的脚本可以每5分钟运行一次检查,继续在putty里面执行如下命令:<br />
chmod +x /usr/bin/vpscheck.sh<br />
echo "*/5 * * * * root /usr/bin/vpscheck.sh" > /etc/cron.d/vpscheck<br />
service cron restart<br />
<br />
完成性能监控。<br />
<br />
=== 监控网站并发数 ===<br />
为了防止网站无法访问,做如下检测:<br />
<br />
规则:当访问的并发数超过100,系统重启。<br />
<br />
在 Putty 里面执行下面的语句,创建 /usr/bin/wwwcheck.sh 脚本,<br />
cat << "EOF" > /usr/bin/wwwcheck.sh<br />
#!/bin/bash<br />
count=`netstat -na|grep :80|wc -l`<br />
echo 'Count:'$count<br />
if [ $count -gt 100 ];then<br />
shutdown -r now<br />
fi<br />
EOF<br />
<br />
再配置定时器,让上面的脚本可以每5分钟运行一次检查,继续在putty里面执行如下命令:<br />
chmod +x /usr/bin/wwwcheck.sh<br />
echo "*/5 * * * * root /usr/bin/wwwcheck.sh" > /etc/cron.d/wwwcheck<br />
service cron restart<br />
<br />
完成网站并发监控。<br />
<br />
== 安全相关事项 ==<br />
<br />
=== 防止扫描 ===<br />
<br />
vps的root密码不要设置的太简单,这样很容易被攻破,你可以安装如下软件来降低vps被攻破的机会。<br />
<br />
输入如下命令:<br />
<br />
apt-get install fail2ban<br />
<br />
提示如下表示安装完成:<br />
<source lang=bash><br />
root@241541:/# ~# apt-get install fail2ban<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
python-pyinotify<br />
Suggested packages:<br />
python-gamin python-pyinotify-doc<br />
The following NEW packages will be installed:<br />
fail2ban python-pyinotify<br />
0 upgraded, 2 newly installed, 0 to remove and 62 not upgraded.<br />
Need to get 154 kB of archives.<br />
After this operation, 763 kB of additional disk space will be used.<br />
Do you want to continue? [Y/n] y<br />
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe fail2ban all 0.8.11-1 [129 kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main python-pyinotify all 0.9.4-1build1 [24.5 kB]<br />
Fetched 154 kB in 0s (213 kB/s)<br />
Selecting previously unselected package fail2ban.<br />
(Reading database ... 28959 files and directories currently installed.)<br />
Preparing to unpack .../fail2ban_0.8.11-1_all.deb ...<br />
Unpacking fail2ban (0.8.11-1) ...<br />
Selecting previously unselected package python-pyinotify.<br />
Preparing to unpack .../python-pyinotify_0.9.4-1build1_all.deb ...<br />
Unpacking python-pyinotify (0.9.4-1build1) ...<br />
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...<br />
fopen: Permission denied<br />
Setting up fail2ban (0.8.11-1) ...<br />
* Starting authentication failure monitor fail2ban [ OK ]<br />
Setting up python-pyinotify (0.9.4-1build1) ...<br />
</source><br />
这样如果用户5次密码输入错误,将会自动将其IP加到黑名单,禁止登录10分钟,10分钟后才可以再登录。<br />
<br />
=== 防止php木马 ===<br />
<br />
{{Qref Alarm}} 通过设置限制php的 eval 函数来防止木马,可能会导致某些程序无法正常运行,目前在 Ubuntu 14.04 版本上测试通过。<br />
<br />
编辑 /etc/php5/conf.d/suhosin.ini 文件,如果找不到这个文件,执行如下命令安装 php5-suhosin 模块<br />
<br />
sudo apt-get install php5-suhosin<br />
<br />
打开此文件后,找到行: <br />
;suhosin.executor.eval.blacklist =<br />
<br />
修改为:<br />
<br />
suhosin.executor.eval.blacklist = include,include_once,require,require_once,curl_init,fpassthru,file,base64_encode,base64_decode,mail,exec,system,proc_open,leak,syslog,pfsockopen,shell_exec,ini_restore,symlink,stream_socket_server,proc_nice,popen,proc_get_status,dl, pcntl_exec, pcntl_fork, pcntl_signal,pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled,pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept,socket_bind, socket_connect, socket_create, socket_create_listen,socket_create_pair,link,register_shutdown_function,register_tick_function <br />
<br />
然后重启下 apache2 或 php5-fpm 即可<br />
<br />
=== 木马基本检查和手工清除 ===<br />
一般采用如下命令去检查有危险文件:<br />
cd /var/www/<br />
grep -R base64_decode *|more<br />
<br />
如果看到类似这样的东西,就可以肯定中木马了:<br />
<br />
eval(base64_decode("一大串无意义字母<br />
或<br />
eval(base64_decode($_POST["<br />
或<br />
eval(gzuncompress(base64_decode<br />
<br />
最佳方案,重装系统,重新配置过。<br />
<br />
也可以尝试使用下面的命令手工清除<br />
<br />
find /var/www/ -name '*.php' -exec sed -i -r "s/eval.{0,10}\(.{0,10}base64_decode.*?\);//g" {} \;<br />
find /var/www/ -name '*.php' -exec sed -i -r "s/eval.{0,10}\(.{0,10}gzuncompress.{0,10}\(.{0,10}base64_decode.*?\);//g" {} \;<br />
find /var/www/ -name '*.php' -exec sed -i -r "s/eval.{0,10}\(.{0,10}stripslashes.*?\);//g" {} \;<br />
<br />
然后继续检查有没有群发邮件的木马:<br />
<br />
grep -R -E 'POST.*pfsockopen.*EHLO' /var/www/<br />
<br />
发现后,如果确定是木马,采用如下命令批量删除木马文件:<br />
<br />
grep -R -l -E 'POST.*pfsockopen.*EHLO' /var/www/ | xargs rm -f<br />
<br />
查查 eval 和 fwrite 函数<br />
<br />
grep -R -E 'REQUEST.*eval.*fwrite' /var/www/<br />
<br />
发现后,如果确认是木马,采用如下命令批量删除木马文件:<br />
<br />
grep -R -l -E 'REQUEST.*eval.*fwrite' /var/www/ | xargs rm -f<br />
<br />
最后重点检查 包含 eval 函数的 php 文件<br />
<br />
find . -name "*.php" -exec grep -l eval {} \;<br />
<br />
如果发现有无意义的单词,多半也是中木马了,不过这种需要手工删除相关被感染代码。<br />
<br />
<br />
=== 根据访问日志批量封IP ===<br />
有时候,我们可以去检查 HTTP 的访问日志发现异常,然后根据这些异常来封 IP。<br />
<br />
首先检查异常, 关键词:xmlrpc.php ,下面的命令可以根据你的需求来调整关键词,其中 access.log 为你的 HTTP 的访问日志文件,可以根据实际情况修改。<br />
<br />
执行下面的命令,可以显示所有的 IP 地址,来进行查看:<br />
cat access.log | grep "xmlrpc.php" | awk '{print $1}' | sort | uniq<br />
<br />
确认无误后,执行下面的命令进行封禁:<br />
cat access.log | grep "xmlrpc.php" | awk '{print $1}' | sort | uniq | xargs -n1 -I {} iptables -A INPUT -p tcp --dport 80 -s {}/32 -j DROP<br />
<br />
执行完毕后,可以使用如下命令查看封禁结果:<br />
iptables -L<br />
<br />
注意,上面只是临时封禁,如果重启VPS,将会清空规则。<br />
<br />
=== 关闭邮件服务 ===<br />
由于国外对发垃圾邮件的处罚很重,会导致 VPS 被终止,所以为了防止误发邮件或被木马、黑客利用,如果你不需要发送邮件,则关闭邮件服务:<br />
<br />
1 删除邮件服务<br />
执行如下命令删除服务器的邮件程序:<br />
apt-get remove postfix* sendmail* procmail*<br />
<br />
2 防火墙屏蔽邮件转发<br />
执行如下命令屏蔽邮件端口转发:<br />
iptables -I FORWARD -p tcp --dport 25 -j DROP<br />
sed -i '$i\iptables -I FORWARD -p tcp --dport 25 -j DROP' /etc/rc.local<br />
<br />
== 备份站点 ==<br />
将 vps 成功安装好软件后,面临的第二大的事情是如何备份现有的东西?<br />
<br />
你需要备份 3 个方面的内容: 1 站点配置文件 2 站点文件 3 数据库, 分别讲解如下:<br />
<br />
=== 备份站点配置文件 ===<br />
看前面的设置,一般情况,我们需要备份Apache或Nginx,如果你修改了Mysql的配置,则需要备份Mysql的配置。<br />
<br />
注意在使用 tar 备份时,推荐使用 “tar czf 备份文件名 需要备份的路径” 来备份,你也可以使用 “tar czvf ..." 来显示备份详细的进度;但当备份文件很多时,显示中间的备份过程会很花时间和带宽,所以并不建议使用。<br />
<br />
备份完毕后,就可以直接使用 filezilla 到 /root 目录去下载你备份的文件了。<br />
<br />
==== 备份Apache配置文件 ====<br />
执行如下命令备份Apache的配置到 /root 下 :<br />
<br />
cd<br />
tar czf apache2.tar.gz /etc/apache2<br />
<br />
备份的文件名叫 apache2.tar.gz ,执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# tar czf apache2.tar.gz /etc/apache2<br />
tar: Removing leading `/' from member names<br />
<br />
检查下备份的文件大小,输入<br />
ls -l apache2.tar.gz<br />
结果显示如下,表示备份成功<br />
root@241541:~# ls -l apache2.tar.gz<br />
-rw-r--r-- 1 root root 31021 Aug 13 18:32 apache2.tar.gz<br />
<br />
==== 备份Nginx配置文件 ====<br />
执行如下命令备份Nginx的配置到 /root 下 :<br />
<br />
cd<br />
tar czf nginx.tar.gz /etc/nginx<br />
<br />
备份的文件名叫 nginx.tar.gz ,执行结果如下:<br />
<br />
root@241541:~# cd<br />
root@241541:~# tar czf nginx.tar.gz /etc/nginx<br />
tar: Removing leading `/' from member names<br />
检查下<br />
root@241541:~# ls -l nginx.tar.gz<br />
-rw-r--r-- 1 root root 5179 Aug 13 18:21 nginx.tar.gz<br />
<br />
==== 备份Mysql配置文件 ====<br />
执行如下命令备份Mysql的配置到 /root 下 :<br />
<br />
cd<br />
tar czf mysql.tar.gz /etc/mysql<br />
<br />
备份的文件名叫 mysql.tar.gz ,执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# tar czf mysql.tar.gz /etc/mysql<br />
tar: Removing leading `/' from member names<br />
<br />
检查下<br />
root@241541:~# ls -l mysql.tar.gz<br />
-rw-r--r-- 1 root root 2639 Aug 13 18:25 mysql.tar.gz<br />
<br />
=== 备份站点文件 ===<br />
执行如下命令备份 /var/www 的配置到 /root 下 :<br />
<br />
cd<br />
tar czf www.tar.gz /var/www<br />
<br />
备份的文件名叫 www.tar.gz ,执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# tar czf www.tar.gz /var/www<br />
tar: Removing leading `/' from member names<br />
<br />
检查如下<br />
root@241541:~# ls -l www.tar.gz<br />
-rw-r--r-- 1 root root 12042534 Aug 13 18:43 www.tar.gz<br />
<br />
=== 备份数据库 ===<br />
由于数据库本身包含了帐号和权限信息,所以我们完整备份整个数据库。<br />
<br />
执行以下命令备份数据库到 /root 目录<br />
<br />
cd<br />
mysqldump -p --all-databases |gzip > mysql.sql.gz<br />
<br />
会提示输入密码,输入mysql的密码后回车完成备份,如下所示。<br />
<br />
root@241541:~# mysqldump -p --all-databases |gzip > mysql.sql.gz<br />
Enter password:<br />
<br />
备份的文件名为 mysql.sql.gz ,检查一下备份的时间和大小<br />
root@241541:~# ls -l mysql.sql.gz<br />
-rw-r--r-- 1 root root 133351 Aug 13 19:01 mysql.sql.gz<br />
<br />
== 恢复站点 ==<br />
当 vps 出现故障后如何恢复?<br />
<br />
首先你需要重新去reload系统到原来的系统,然后再按照前面的指南,安装好和之前一样的运行环境。<br />
<br />
然后将你备份的所有文件使用 filezilla 上传到 vps 的 /root 目录下。<br />
<br />
最后需要恢复 3 个方面的内容: 1 站点配置文件 2 站点文件 3 数据库, 分别讲解如下:<br />
<br />
=== 恢复站点配置文件 ===<br />
==== 恢复Apache配置文件 ====<br />
假设 apache 的备份文件名为 apache2.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf apache2.tar.gz<br />
cp -a etc/apache2 /etc/apache2<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf apache2.tar.gz<br />
root@241541:~# cp -a etc/apache2 /etc/<br />
<br />
使用如下命令重启 Apache2 :<br />
service apache2 restart<br />
<br />
==== 恢复Nginx配置文件 ====<br />
假设 nginx 的备份文件名为 nginx.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf nginx.tar.gz<br />
cp -a etc/nginx /etc/nginx<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf nginx.tar.gz<br />
root@241541:~# cp -a etc/nginx /etc/<br />
<br />
使用如下命令重启 nginx :<br />
service nginx restart<br />
<br />
==== 恢复Mysql配置文件 ====<br />
假设 mysql 的备份文件名为 mysql.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf mysql.tar.gz<br />
cp -a etc/mysql /etc/<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf mysql.tar.gz<br />
root@241541:~# cp -a etc/mysql /etc/mysql<br />
<br />
=== 恢复站点文件 ===<br />
由于站点占用的空间比较大,所有我们不复制过去,解压缩后直接移动过去。<br />
<br />
假设站点的备份文件名为 www.tar.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
tar xzf www.tar.gz<br />
rm -fr /var/www/*<br />
mv var/www/* /var/www/<br />
<br />
执行结果如下,不会有任何回应:<br />
root@241541:~# cd<br />
root@241541:~# tar xzf www.tar.gz<br />
root@241541:~# rm -fr /var/www/*<br />
root@241541:~# mv var/www/* /var/www/<br />
<br />
=== 恢复数据库 ===<br />
假设 mysql 的备份文件名为 mysql.sql.gz ,使用 putty 登录 vps ,执行如下命令恢复:<br />
cd<br />
gunzip < mysql.sql.gz | mysql -p<br />
<br />
会提示输入当前新安装的mysql密码,输入密码后回车继续。<br />
<br />
执行结果如下:<br />
root@241541:~# cd<br />
root@241541:~# gunzip < mysql.sql.gz | mysql -p<br />
Enter password:<br />
<br />
== 使用 Dropbox 每天自动备份 ==<br />
=== 注册 Dropbox ===<br />
Dropbox 是一个美国的在线网盘,默认提供了2G的空间,同时可以通过邀请其他朋友使用的手段增加容量。<br />
<br />
为什么使用这个,主要是 VPS 到 Dropbox 备份可以到 1M 的真实传输速度,加上可以加容量,所以是非常理想的备份方式。<br />
<br />
点击 [https://www.dropbox.com/ 注册 Dropbox] 并登录到 Dropbox 网页。<br />
<br />
BTW:淘宝上也有人提供扩容到20G的服务,风险自行承担。<br />
<br />
Dropbox 将申请150M内存,实际消耗17M内存,所以请注意控制内存。<br />
<br />
[[Image:Vps dropbox.png]]<br />
<br />
=== 安装 Dropbox 客户端 ===<br />
打开 putty 执行如下命令安装,如果是32位的系统,采用如下命令。执行完毕后,请不要再执行下面给64位系统执行的命令:<br />
<source lang=bash>cd ~ && wget -O - https://www.dropbox.com/download?plat=lnx.x86 | tar xzf -</source><br />
64位系统的采用如下命令,<br />
<source lang=bash> cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -</source><br />
执行结果如下所示:<br />
<br />
<source lang=bash><br />
root@241541:~# cd ~ && wget -O - https://www.dropbox.com/download?plat=lnx.x86 | tar xzf -<br />
--2012-02-22 06:44:40-- https://www.dropbox.com/download?plat=lnx.x86<br />
Resolving www.dropbox.com... 199.47.217.171, 199.47.216.170, 199.47.216.171, ...<br />
Connecting to www.dropbox.com|199.47.217.171|:80... connected.<br />
HTTP request sent, awaiting response... 302 FOUND<br />
Location: https://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.2.52.tar.gz [following]<br />
--2012-02-22 06:44:40-- https://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.2.52.tar.gz<br />
Resolving dl-web.dropbox.com... 107.20.132.92, 107.20.138.135, 107.20.170.126, ...<br />
Connecting to dl-web.dropbox.com|107.20.132.92|:80... connected.<br />
HTTP request sent, awaiting response... 200 OK<br />
Length: 15794278 (15M) [application/x-tar]<br />
Saving to: `STDOUT'<br />
<br />
100%[======================================>] 15,794,278 893K/s in 15s <br />
<br />
2012-02-22 06:44:57 (1.01 MB/s) - written to stdout [15794278/15794278]<br />
</source><br />
<br />
看到类似信息,表示安装完成。<br />
<br />
=== 设置帐号 ===<br />
<br />
执行如下命令开始设置帐号<br />
~/.dropbox-dist/dropboxd<br />
<br />
当看到 <br />
<source lang=bash>Please visit https://www.dropbox.com/cli_link?host_id=xxx&cl=en_US to link this machine. </source><br />
的提示时,复制里面https的链接地址使用浏览器打开,会出现Dropbox的密码框,输入你刚刚注册的密码,等到 putty 里面出现 <br />
Client successfully linked, Welcome xxx! <br />
的提示即可完成设置。完成后,使用 Ctrl+C 键中断运行。<br />
<br />
完整如下所示:<br />
<br />
<source lang=bash><br />
root@241541:~# ~/.dropbox-dist/dropboxd <br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
This client is not linked to any account...<br />
Please visit https://www.dropbox.com/cli_link?host_id=db0a5acabdf1fba62f360ffb8ebe910e&cl=en_US to link this machine.<br />
Client successfully linked, Welcome guest!<br />
</source><br />
<br />
=== 开始使用 ===<br />
完成以上设置后,会在当然的目录下出现 Dropbox 目录,这个目录就是同步目录,当在这个目录下放置的任何文件都会同步到 Dropbox 网盘上。<br />
<br />
root@241541:~# ls<br />
Dropbox<br />
root@241541:~# cd Dropbox/<br />
root@241541:~/Dropbox# ls<br />
Getting Started.pdf Photos Public<br />
<br />
第一次测试:<br />
在Dropbox目录下创建一个内容为 Hello 的 a.txt 文件。<br />
root@241541:~/Dropbox# echo "Hello" > a.txt<br />
<br />
运行同步程序<br />
root@241541:~/Dropbox# ~/.dropbox-dist/dropboxd <br />
<br />
打开Dropbox网页的 Files ,就会看到你的文件了。<br />
输入 Ctrl+C 中断同步,下面开始讲如何配置自动运行同步。<br />
<br />
=== 自动运行 Dropbox ===<br />
512M内存的VPS请不要自动启动服务,需要时,手工运行即可,启动后会太占内存。<br />
<br />
直接复制下面的命令到Putty并执行,以下为创建 dropbox 的自动启动文件,命令内容如下:<br />
<br />
<source lang=bash><br />
cat << "EOF" > /etc/init.d/dropbox<br />
#!/bin/bash<br />
# dropbox service<br />
DAEMON=.dropbox-dist/dropboxd<br />
<br />
start() {<br />
echo "Starting dropbox..."<br />
if [ -x /root/$DAEMON ]; then<br />
HOME="/root" start-stop-daemon -b -o -c root -S -u root -x /root/$DAEMON<br />
fi<br />
}<br />
<br />
stop() {<br />
echo "Stopping dropbox..."<br />
if [ -x /root/$DAEMON ]; then<br />
start-stop-daemon -o -c root -K -u root -x /root/$DAEMON<br />
fi<br />
}<br />
<br />
status() {<br />
dbpid=`pgrep -u root dropboxd`<br />
if [ -z $dbpid ]; then<br />
echo "dropboxd not running."<br />
else<br />
echo "dropboxd running (pid $dbpid)"<br />
fi<br />
}<br />
<br />
<br />
case "$1" in<br />
start)<br />
start<br />
;;<br />
<br />
stop)<br />
stop<br />
;;<br />
<br />
restart|reload|force-reload)<br />
stop<br />
start<br />
;;<br />
<br />
status)<br />
status<br />
;;<br />
<br />
*)<br />
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"<br />
exit 1<br />
<br />
esac<br />
<br />
exit 0<br />
EOF<br />
</source><br />
<br />
然后继续执行如下命令,设置自动启动 dropbox 同步服务:<br />
<br />
chmod +x /etc/init.d/dropbox<br />
update-rc.d dropbox defaults<br />
/etc/init.d/dropbox start<br />
<br />
执行命令的结果如下所示:<br />
<source lang=bash><br />
root@241541:~/Dropbox# sed -i "s/\r//" /etc/init.d/dropbox <br />
root@241541:~/Dropbox# chmod +x /etc/init.d/dropbox<br />
root@241541:~/Dropbox# update-rc.d dropbox defaults<br />
perl: warning: Setting locale failed.<br />
perl: warning: Please check that your locale settings:<br />
LANGUAGE = (unset),<br />
LC_ALL = (unset),<br />
LANG = "zh_CN.UTF-8"<br />
are supported and installed on your system.<br />
perl: warning: Falling back to the standard locale ("C").<br />
update-rc.d: warning: /etc/init.d/dropbox missing LSB information<br />
update-rc.d: see <http://wiki.debian.org/LSBInitScripts><br />
Adding system startup for /etc/init.d/dropbox ...<br />
/etc/rc0.d/K20dropbox -> ../init.d/dropbox<br />
/etc/rc1.d/K20dropbox -> ../init.d/dropbox<br />
/etc/rc6.d/K20dropbox -> ../init.d/dropbox<br />
/etc/rc2.d/S20dropbox -> ../init.d/dropbox<br />
/etc/rc3.d/S20dropbox -> ../init.d/dropbox<br />
/etc/rc4.d/S20dropbox -> ../init.d/dropbox<br />
/etc/rc5.d/S20dropbox -> ../init.d/dropbox<br />
root@241541:~/Dropbox# /etc/init.d/dropbox start<br />
Starting dropbox...<br />
</source><br />
现在你的VPS已经可以自动同步 /root/Dropbox 目录下的所有文件了。<br />
<br />
=== 自动每天备份数据库和站点 ===<br />
输入如下命令,创建自动备份脚本,注意脚本中的“数据库密码”需要换成你自己的Mysql数据库密码:<br />
echo '#!/bin/bash' > /etc/cron.daily/dropboxbackup<br />
echo 'tar czf /root/Dropbox/www.tar.gz /var/www' >>/etc/cron.daily/dropboxbackup<br />
echo 'mysqldump -p数据库密码 --all-databases |gzip > /root/Dropbox/mysql.sql.gz' >>/etc/cron.daily/dropboxbackup<br />
chmod +x /etc/cron.daily/dropboxbackup<br />
service cron restart<br />
执行结果如下<br />
root@241541:~# echo '#!/bin/bash' > /etc/cron.daily/dropboxbackup<br />
root@241541:~# echo 'tar czf /root/Dropbox/www.tar.gz /var/www' >>/etc/cron.daily/dropboxbackup<br />
root@241541:~# echo 'mysqldump -p123456 --all-databases |gzip > /root/Dropbox/mysql.sql.gz' >>/etc/cron.daily/dropboxbackup<br />
root@241541:~# chmod +x /etc/cron.daily/dropboxbackup<br />
root@241541:~# service cron restart <br />
Rather than invoking init scripts through /etc/init.d, use the service(8)<br />
utility, e.g. service cron restart<br />
<br />
Since the script you are attempting to invoke has been converted to an<br />
Upstart job, you may also use the restart(8) utility, e.g. restart cron<br />
cron start/running, process 3094<br />
<br />
看到上面的提示,表示自动备份设置完成,然后你可以手工执行下 /etc/cron.daily/dropboxbackup 看看效果。<br />
<br />
== 使用 BitTorrent Sync 备份系统 ==<br />
<br />
=== 说明 ===<br />
这个是 BitTorrent 公司写的一个非开源备份系统,具体请自行 Google,这里直接讲如何安装和使用。<br />
<br />
使用这个好处有两点,第一:占用内存非常少,不到20M;第二:不限空间,可以直接备份到你的本地电脑。<br />
<br />
=== 安装 ===<br />
在 Putty 里面,依次执行如下命令安装,安装过程中在提示输入[Y]或[ENTER]的地方,直接回车即可:<br />
apt-get install python-software-properties<br />
add-apt-repository ppa:tuxpoldo/btsync<br />
apt-get update<br />
apt-get install btsync<br />
<br />
当出现 “The password for accessing the web interface:” 提示输入密码时,输入你的管理密码;其余默认,直接回车即可。<br />
<br />
安装完毕后,btsync 的配置文件在 /etc/btsync/debconf-default.conf ,你可以去修改这个文件,配置新的密码。<br />
<br />
修改密码后,需要重启 btsync 服务:<br />
service btsync restart<br />
<br />
=== 使用 ===<br />
打开浏览器访问 http://VPSIP:8888 ,在本例中如下: http://184.82.9.30:8888 <br />
<br />
登录默认账号: admin ,密码是你前面输入的。<br />
<br />
好了,然后 点击 Add Folder 按钮选择需要备份的目录(推荐备份 /var 目录),并产生一个随机安全 Secret 号。<br />
<br />
=== 客户端安装 ===<br />
访问 http://labs.bittorrent.com/experiments/sync.html ,点击红色的 Download 按钮,再点击 Windows 按钮,下载并安装<br />
<br />
打开程序,输入前面得到的随机安全 Secret 号,选择一个下载的目录,你会看到,备份开始了。<br />
<br />
大功告成。<br />
<br />
== 安装 Zend Guard Loader ==<br />
一般情况我们推荐直接安装 Zend Guard Loader 来代替 Zend Optimizer,因为 Zend Optimizer 已经过时,并且不被支持。<br />
<br />
<source lang=bash><br />
cd ~<br />
wget http://phpcj.googlecode.com/files/ZendGuardLoader.so<br />
mkdir -p /usr/local/zend/<br />
cp ZendGuardLoader.so /usr/local/zend/ZendGuardLoader.so<br />
echo "zend_extension=/usr/local/zend/ZendGuardLoader.so" > /etc/php5/conf.d/zend.ini<br />
echo "zend_loader.enable=1" >> /etc/php5/conf.d/zend.ini<br />
</source><br />
<br />
然后重启下php即可。<br />
<br />
== 关于Zend Optimizer ==<br />
如果已经安装了上面的 Zend Guard Loader,请忽略执行本段。<br />
<br />
关于Zend,我们推荐安装上面的 Zend Guard Loader ,Zend Optimizer 已经被官方放弃,如果一定需要,请看本段。<br />
<br />
由于Zend Optimizer 不支持 php 5.3.x ,如果必须要使用,则需要降级:<br />
<br />
注意不要去尝试安装 ZendServer-CE 的 optimizerplus 或 Zend Guard Loader,因为,php 5.3.x 上的解密都不支持 php5.2.x 上的加密,除非你手头上的加密程序可以重新针对 php 5.3.x 重新加密,所以必须降级 php 的版本为 5.2.x 。<br />
<br />
并且仅仅支持 Apache , 不支持 Nginx (问题是降级后不再支持 php5-fpm,当然有能力者,可以采用 spawn-fcgi 来代替)。<br />
<br />
如果是Nginx用户,请还原到 Apache 环境,并且参考上面步骤事先安装好Apache和php,并测试php正常运行。<br />
<br />
=== php 降级 ===<br />
依次逐行输入如下命令:<br />
<source lang=bash><br />
apt-get install aptitude lsb-release<br />
php_installed=`dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`<br />
aptitude purge $php_installed<br />
echo -e "Package: php5\nPin: release a=karmic\nPin-Priority: 991\n" > /etc/apt/preferences.d/php <br />
apt-cache search php5-|grep php5-|awk '{print "Package:", $1,"\nPin: release a=karmic\nPin-Priority: 991\n"}' >> /etc/apt/preferences.d/php <br />
apt-cache search -n libapache2-mod-php5 |awk '{print "Package:", $1,"\nPin: release a=karmic\nPin-Priority: 991\n"}' >> /etc/apt/preferences.d/php <br />
echo -e "Package: php-pear\nPin: release a=karmic\nPin-Priority: 991\n" >> /etc/apt/preferences.d/php <br />
egrep '(main restricted|universe|multiverse)' /etc/apt/sources.list|grep -v "#"| sed s/`lsb_release -s -c`/karmic/g | sed s/'http:\/\/.*\/'/'http:\/\/old-releases.ubuntu.com\/'/g > /etc/apt/sources.list.d/karmic.list<br />
apt-get update<br />
apt-get install $php_installed<br />
aptitude hold `dpkg -l | grep php5| awk '{print $2}' |tr "\n" " "`<br />
</source><br />
<br />
如果碰到如下:<br />
<br />
Do you want to continue? [Y/n/?] <br />
<br />
请出入 y 回车继续<br />
<br />
=== php 高级安装技巧 ===<br />
如果需要支持nginx或采用fastcgi来运行php,在执行完毕上面的步骤后,参考如下命令安装(注意,Apache环境不需要执行):<br />
<br />
采用fastcgi,即用于spawn-fcgi:<br />
aptitude install -t karmic php5-cli php5-cgi <br />
<br />
返回到Apache:<br />
apt-get install -t karmic libapache2-mod-php5<br />
<br />
=== 安装 Zend Optimizer ===<br />
<source lang=bash><br />
cd ~<br />
wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
mkdir -p /usr/local/zend/<br />
cp ZendOptimizer-3.3.3-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/<br />
echo "zend_extension=/usr/local/zend/ZendOptimizer.so" > /etc/php5/conf.d/zend.ini<br />
</source><br />
<br />
=== 安装成功验证 ===<br />
运行:<br />
<br />
php -v<br />
<br />
返回如下提示:<br />
<br />
root@241541:~# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10)<br />
<br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies<br />
<br />
显示成功安装 Zend Optimizer。<br />
<br />
=== 重启 Web 服务 ===<br />
如果是 apache :<br />
service apache2 restart<br />
如果是Nginx:<br />
service php5-fpm restart<br />
<br />
== VPN 和代理 ==<br />
=== 安装 OpenVPN ===<br />
[[OpenVPN]] 支持所有类型的VPS,需要系统支持 Tun/Tap 设备。<br />
<br />
==== 开启 Tun/Tap 支持 ====<br />
XEN VPS 无需开启 Tun/Tap,直接支持,跳过这一步。<br />
<br />
在 putty 里面运行如下命令,检查是否开启了tun设备:<br />
<br />
ls /dev/net/<br />
<br />
如果出现如下提示,表示已经开启,否则需要开启 tun 支持。<br />
<br />
root@241541:/etc/openvpn# ls /dev/net/ <br />
tun<br />
<br />
如果没有发现上面的提示,则需要按下面的办法处理。<br />
<br />
请先登录 [http://http://vps.ubuntu.org.cn/vm 管理面板],打开 VPS 后,点击【设置】,然后再点击【激活TUN/TAP】 <br />
<br />
然后重复上述测试,如果仍然无法找到 tun 设备,尝试手工创建,命令如下:<br />
<br />
mkdir /dev/net <br />
mknod /dev/net/tun c 10 200<br />
<br />
==== 安装 openvpn ====<br />
在 putty 里面运行如下命令安装 openvpn,再提示输入 (Y/n) 时,输入 Y 回车继续:<br />
<br />
apt-get install openvpn easy-rsa<br />
<br />
执行结果如下:<br />
<source lang=bash><br />
root@241541:~# apt-get install openvpn easy-rsa<br />
Reading package lists... Done<br />
Building dependency tree <br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
liblzo2-2 libpkcs11-helper1<br />
Suggested packages:<br />
resolvconf<br />
The following NEW packages will be installed:<br />
liblzo2-2 libpkcs11-helper1 openvpn easy-rsa libccid opensc pcscd<br />
0 upgraded, 6 newly installed, 0 to remove and 197 not upgraded.<br />
Need to get 478 kB of archives.<br />
After this operation, 1346 kB of additional disk space will be used.<br />
Do you want to continue? [Y/n] Y<br />
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main liblzo2-2 amd64 2.06-1.2ubuntu1.1 [46.1 kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main libpkcs11-helper1 amd64 1.11-1 [42.2 kB]<br />
Get:3 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openvpn amd64 2.3.2-7ubuntu3.1 [390 kB]<br />
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe libccid amd64 1.4.15-1 [80.0 kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/universe pcscd amd64 1.8.10-1ubuntu1 [54.4 kB]<br />
Get:3 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe opensc amd64 0.13.0-3ubuntu4.1 [794 kB]<br />
Get:4 http://archive.ubuntu.com/ubuntu/ trusty/universe easy-rsa all 2.2.2-1 [17.1 kB] <br />
Fetched 478 kB in 3s (127 kB/s) <br />
perl: warning: Setting locale failed.<br />
perl: warning: Please check that your locale settings:<br />
LANGUAGE = (unset),<br />
LC_ALL = (unset),<br />
LANG = "zh_CN.UTF-8"<br />
are supported and installed on your system.<br />
perl: warning: Falling back to the standard locale ("C").<br />
locale: Cannot set LC_CTYPE to default locale: No such file or directory<br />
locale: Cannot set LC_MESSAGES to default locale: No such file or directory<br />
locale: Cannot set LC_ALL to default locale: No such file or directory<br />
Preconfiguring packages ...<br />
Selecting previously unselected package liblzo2-2:amd64.<br />
(Reading database ... 34021 files and directories currently installed.)<br />
Preparing to unpack .../liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb ...<br />
Unpacking liblzo2-2:amd64 (2.06-1.2ubuntu1.1) ...<br />
Selecting previously unselected package libpkcs11-helper1:amd64.<br />
Preparing to unpack .../libpkcs11-helper1_1.11-1_amd64.deb ...<br />
Unpacking libpkcs11-helper1:amd64 (1.11-1) ...<br />
Selecting previously unselected package openvpn.<br />
Preparing to unpack .../libccid_1.4.15-1_amd64.deb ...<br />
Unpacking libccid (1.4.15-1) ...<br />
Selecting previously unselected package pcscd.<br />
Preparing to unpack .../pcscd_1.8.10-1ubuntu1_amd64.deb ...<br />
Unpacking pcscd (1.8.10-1ubuntu1) ...<br />
Selecting previously unselected package opensc.<br />
Preparing to unpack .../opensc_0.13.0-3ubuntu4.1_amd64.deb ...<br />
Unpacking opensc (0.13.0-3ubuntu4.1) ...<br />
Selecting previously unselected package openvpn.<br />
Preparing to unpack .../openvpn_2.3.2-7ubuntu3.1_amd64.deb ...<br />
Unpacking openvpn (2.3.2-7ubuntu3.1) ...<br />
Selecting previously unselected package easy-rsa.<br />
Preparing to unpack .../easy-rsa_2.2.2-1_all.deb ...<br />
Unpacking easy-rsa (2.2.2-1) ...<br />
Processing triggers for man-db (2.6.7.1-1) ...<br />
locale: Cannot set LC_CTYPE to default locale: No such file or directory<br />
locale: Cannot set LC_MESSAGES to default locale: No such file or directory<br />
locale: Cannot set LC_ALL to default locale: No such file or directory<br />
Setting up liblzo2-2:amd64 (2.06-1.2ubuntu1.1) ...<br />
Setting up libpkcs11-helper1:amd64 (1.11-1) ...<br />
Setting up libccid (1.4.15-1) ...<br />
Setting up pcscd (1.8.10-1ubuntu1) ...<br />
Setting up opensc (0.13.0-3ubuntu4.1) ..<br />
Setting up openvpn (2.3.2-7ubuntu3.1) ...<br />
locale: Cannot set LC_CTYPE to default locale: No such file or directory<br />
locale: Cannot set LC_MESSAGES to default locale: No such file or directory<br />
locale: Cannot set LC_ALL to default locale: No such file or directory<br />
* Restarting virtual private network daemon(s)... * No VPN is running.<br />
Setting up easy-rsa (2.2.2-1) ...<br />
Processing triggers for libc-bin (2.19-0ubuntu6) ...<br />
</source><br />
<br />
==== 配置 openvpn ====<br />
在 Putty 执行依次逐行如下命令,遇到(y/n)的提示输入 y 回车,否则直接回车继续:<br />
<br />
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf<br />
cp -r /usr/share/easy-rsa/ /etc/openvpn/<br />
cd /etc/openvpn/easy-rsa/<br />
cp openssl-1.0.0.cnf openssl.cnf<br />
source vars<br />
./clean-all<br />
./build-ca<br />
./build-key-server server<br />
./build-key client<br />
./build-dh<br />
<br />
执行上面的命令过程如下所示:<br />
<br />
<source lang=bash><br />
root@241541:/etc/openvpn# gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# cp -r /usr/share/easy-rsa/ /etc/openvpn/<br />
root@241541:/etc/openvpn# cd /etc/openvpn/easy-rsa/<br />
root@241541:/etc/openvpn/easy-rsa# source vars<br />
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys<br />
root@241541:/etc/openvpn/easy-rsa# ./clean-all<br />
root@241541:/etc/openvpn/easy-rsa# ./build-ca<br />
Generating a 1024 bit RSA private key<br />
.++++++<br />
........++++++<br />
writing new private key to 'ca.key'<br />
-----<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter '.', the field will be left blank.<br />
-----<br />
Country Name (2 letter code) [US]:<br />
State or Province Name (full name) [CA]:<br />
Locality Name (eg, city) [SanFrancisco]:<br />
Organization Name (eg, company) [Fort-Funston]:<br />
Organizational Unit Name (eg, section) []:<br />
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:<br />
Name []:<br />
Email Address [me@myhost.mydomain]:<br />
root@241541:/etc/openvpn/easy-rsa# ./build-key-server server<br />
Generating a 1024 bit RSA private key<br />
......++++++<br />
............++++++<br />
writing new private key to 'server.key'<br />
-----<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter '.', the field will be left blank.<br />
-----<br />
Country Name (2 letter code) [US]:<br />
State or Province Name (full name) [CA]:<br />
Locality Name (eg, city) [SanFrancisco]:<br />
Organization Name (eg, company) [Fort-Funston]:<br />
Organizational Unit Name (eg, section) []:<br />
Common Name (eg, your name or your server's hostname) [server]:<br />
Name []:<br />
Email Address [me@myhost.mydomain]:<br />
<br />
Please enter the following 'extra' attributes<br />
to be sent with your certificate request<br />
A challenge password []:<br />
An optional company name []:<br />
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf<br />
Check that the request matches the signature<br />
Signature ok<br />
The Subject's Distinguished Name is as follows<br />
countryName :PRINTABLE:'US'<br />
stateOrProvinceName :PRINTABLE:'CA'<br />
localityName :PRINTABLE:'SanFrancisco'<br />
organizationName :PRINTABLE:'Fort-Funston'<br />
commonName :PRINTABLE:'server'<br />
emailAddress :IA5STRING:'me@myhost.mydomain'<br />
Certificate is to be certified until Jul 28 09:21:30 2022 GMT (3650 days)<br />
Sign the certificate? [y/n]:y<br />
<br />
<br />
1 out of 1 certificate requests certified, commit? [y/n]y<br />
Write out database with 1 new entries<br />
Data Base Updated<br />
<br />
root@241541:/etc/openvpn/easy-rsa# ./build-key client<br />
Generating a 1024 bit RSA private key<br />
..............++++++<br />
.......................++++++<br />
writing new private key to 'client.key'<br />
-----<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter '.', the field will be left blank.<br />
-----<br />
Country Name (2 letter code) [US]:<br />
State or Province Name (full name) [CA]:<br />
Locality Name (eg, city) [SanFrancisco]:<br />
Organization Name (eg, company) [Fort-Funston]:<br />
Organizational Unit Name (eg, section) []:<br />
Common Name (eg, your name or your server's hostname) [client]:<br />
Name []:<br />
Email Address [me@myhost.mydomain]:<br />
<br />
Please enter the following 'extra' attributes<br />
to be sent with your certificate request<br />
A challenge password []:<br />
An optional company name []:<br />
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf<br />
Check that the request matches the signature<br />
Signature ok<br />
The Subject's Distinguished Name is as follows<br />
countryName :PRINTABLE:'US'<br />
stateOrProvinceName :PRINTABLE:'CA'<br />
localityName :PRINTABLE:'SanFrancisco'<br />
organizationName :PRINTABLE:'Fort-Funston'<br />
commonName :PRINTABLE:'client'<br />
emailAddress :IA5STRING:'me@myhost.mydomain'<br />
Certificate is to be certified until Jul 28 09:22:53 2022 GMT (3650 days)<br />
Sign the certificate? [y/n]:y<br />
<br />
<br />
1 out of 1 certificate requests certified, commit? [y/n]y<br />
Write out database with 1 new entries<br />
Data Base Updated<br />
root@241541:/etc/openvpn/easy-rsa# ./build-dh<br />
Generating DH parameters, 2048 bit long safe prime, generator 2<br />
This is going to take a long time<br />
...............+..........................................................................+.............+.....................+.....................................+....................................<br />
............................................................................+.........................................................+......................................................................<br />
..................................................+...........................................................................................................................................................<br />
...........................+...................................................+.......................................................................................................................+....<br />
..........................................+.......................................+..........................................................................................................................<br />
...........................................................+............................................................................................+....................................................<br />
.+.............+......................+.............................................................+..+.....................+....................................................................+....<br />
...........................+..+..+.....+...+...............++*++*++*<br />
</source><br />
<br />
将刚才创建的文件复制到配置目录,继续执行如下命令:<br />
<br />
cd /etc/openvpn<br />
cp /etc/openvpn/easy-rsa/keys/ca.crt .<br />
cp /etc/openvpn/easy-rsa/keys/server.crt .<br />
cp /etc/openvpn/easy-rsa/keys/server.key .<br />
cp /etc/openvpn/easy-rsa/keys/dh*.pem .<br />
<br />
执行结果如下:<br />
<br />
root@241541:/etc/openvpn/easy-rsa# cd /etc/openvpn<br />
root@241541:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/ca.crt .<br />
root@241541:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/server.crt .<br />
root@241541:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/server.key .<br />
root@241541:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/dh*.pem .<br />
<br />
为了更方便的使用openvpn,这里我们需要修改openvpn的协议和端口,我们将通讯协议改为 tcp,端口改为 https 的端口号 443。<br />
<br />
继续在 putty 里面执行如下命令:<br />
sed -i 's/port.*/port 443/' /etc/openvpn/server.conf<br />
sed -i 's/;proto tcp.*/proto tcp/' /etc/openvpn/server.conf<br />
sed -i 's/.*proto udp.*/;proto udp/' /etc/openvpn/server.conf<br />
sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/' /etc/openvpn/server.conf<br />
sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.222.220"/' /etc/openvpn/server.conf<br />
sed -i 's/keepalive 10 120/keepalive 1000 12000/' /etc/openvpn/server.conf<br />
sed -i 's/;push "redirect-gateway.*/push "redirect-gateway def1 bypass-dhcp"/' /etc/openvpn/server.conf<br />
sed -i 's/;duplicate-cn.*/duplicate-cn/' /etc/openvpn/server.conf <br />
执行结果如下所示:<br />
root@241541:/etc/openvpn# sed -i 's/port.*/port 443/' /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# sed -i 's/;proto tcp.*/proto tcp/' /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# sed -i 's/.*proto udp.*/;proto udp/' /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/' /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.222.220"/' /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# sed -i 's/keepalive 10 120/keepalive 1000 12000/' /etc/openvpn/server.conf<br />
root@241541:/etc/openvpn# sed -i 's/;push "redirect-gateway.*/push "redirect-gateway def1 bypass-dhcp"/' /etc/openvpn/server.conf<br />
<br />
配置完成,执行如下命令重启 openvpn :<br />
service openvpn restart<br />
<br />
执行结果如下:<br />
<br />
root@241541:/etc/openvpn# service openvpn restart<br />
* Stopping virtual private network daemon(s)...<br />
* No VPN is running.<br />
* Starting virtual private network daemon(s)...<br />
* Autostarting VPN 'server'<br />
<br />
==== 配置 防火墙 ====<br />
在Putty里面执行如下命令:<br />
<br />
打开 IP 转发:<br />
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf<br />
sysctl -p<br />
<br />
执行如下命令配置防火墙:<br />
<br />
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE<br />
iptables-save > /etc/iptables-rules<br />
echo '#!/bin/sh' > /etc/network/if-up.d/iptablesload<br />
echo 'iptables-restore < /etc/iptables-rules' >> /etc/network/if-up.d/iptablesload<br />
echo 'exit 0' >> /etc/network/if-up.d/iptablesload<br />
chmod +x /etc/network/if-up.d/iptablesload<br />
<br />
大功告成,可以使用 OPEN VPN 了。<br />
<br />
==== 配置客户端 ====<br />
1 安装 openvpn 客户端<br />
<br />
请点击 [http://openvpn.ustc.edu.cn/openvpn-2.1.3-install.exe openvpn 2.1.3] 下载并安装。<br />
<br />
2 复制配置文件<br />
<br />
将安装目录的 sample-config 目录下面的 client.ovpn 复制到 安装目录下的 config 目录<br />
<br />
如将 C:\Program Files\OpenVPN\sample-config\client.ovpn 复制到 C:\Program Files\OpenVPN\config 目录<br />
<br />
3 修改 client.ovpn 配置文件<br />
<br />
不要直接使用windows的记事本修改,请使用例如 Notepad++ 或 UltraEdit 等编辑器编辑<br />
<br />
修改传输协议,注意请使用半角编辑,即关闭输入法进行编辑。 <br />
<br />
找到 <br />
;proto tcp <br />
的行,删除前面的 ; 号,修改为 <br />
<br />
proto tcp <br />
<br />
找到 <br />
proto udp <br />
行,在前面加上 ; 号,修改为 <br />
;proto udp <br />
<br />
修改,需要连接的远程地址和端口:<br />
<br />
找到 <br />
remote my-server-1 1194 <br />
行,修改为:<br />
remote 你的VPS的IP 443 <br />
例如,(不可以照抄,需要将 184.82.9.30 改为你自己的VPS的地址):<br />
remote 184.82.9.30 443 <br />
<br />
4 下载客户端证书文件<br />
<br />
使用 filezilla 连接到服务器,到 /etc/openvpn/easy-rsa/2.0/keys 目录,将服务器的 ca.crt client.crt client.csr client.key 下载到 本地 openvpn 安装目录下的 config 目录,如下图所示:<br />
<br />
[[Image:Vps_openvpn_client.jpg]]<br />
<br />
5 运行菜单里面的 OpenVPN GUI,出现在系统右下角,点击红色网络图标,右键 选择 connect 点击,图标变为绿色,即连接上。<br />
<br />
=== 安装 PPTP VPN ===<br />
[[PPTPServer]] [[VPN]] 需要VPS支持 PPP 设备。<br />
==== 开启 PPP 支持 ====<br />
XEN VPS 无需开启,直接支持,跳过这一步。<br />
<br />
在 putty 里面运行如下命令,检查是否开启了tun设备:<br />
<br />
ls /dev/ppp<br />
<br />
如果出现如下提示,表示已经开启,否则需要开启 ppp 支持。<br />
<br />
root@241541:/etc/openvpn# ls /dev/ppp <br />
/dev/ppp<br />
<br />
如果没有发现上面的提示,则需要按下面的办法处理。<br />
<br />
如果是OPENVZ 的VPS,请先登录 [http://http://vps.ubuntu.org.cn/vm 管理面板],打开 VPS 后,点击【设置】,然后再点击【激活PPP】<br />
<br />
然后重复上述测试,如果还是无法找到 ppp 设备,尝试重启下 VPS 。<br />
<br />
==== 安装 pptpd 服务 ====<br />
执行如下命令安装,遇到提示输入 Y/n 时,输入 Y 回车即可:<br />
apt-get install pptpd<br />
<br />
执行结果如下:<br />
<source lang=bash>root@289085:~# apt-get install pptpd<br />
Reading package lists... Done<br />
Building dependency tree <br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
bcrelay libpcap0.8 ppp<br />
The following NEW packages will be installed:<br />
bcrelay libpcap0.8 ppp pptpd<br />
0 upgraded, 4 newly installed, 0 to remove and 1 not upgraded.<br />
Need to get 542 kB of archives.<br />
After this operation, 1,872 kB of additional disk space will be used.<br />
Do you want to continue [Y/n]? <br />
Get:1 http://archive.ubuntu.com/ubuntu/ oneiric/main libpcap0.8 i386 1.1.1-8 [117 kB]<br />
Get:2 http://archive.ubuntu.com/ubuntu/ oneiric/main ppp i386 2.4.5-5ubuntu1 [334 kB]<br />
Get:3 http://archive.ubuntu.com/ubuntu/ oneiric/main bcrelay i386 1.3.4-5ubuntu1 [10.7 kB]<br />
Get:4 http://archive.ubuntu.com/ubuntu/ oneiric/main pptpd i386 1.3.4-5ubuntu1 [80.4 kB]<br />
Fetched 542 kB in 2s (242 kB/s)<br />
Selecting previously deselected package libpcap0.8.<br />
(Reading database ... 24582 files and directories currently installed.)<br />
Unpacking libpcap0.8 (from .../libpcap0.8_1.1.1-8_i386.deb) ...<br />
Selecting previously deselected package ppp.<br />
Unpacking ppp (from .../ppp_2.4.5-5ubuntu1_i386.deb) ...<br />
Removing any system startup links for /etc/init.d/ppp ...<br />
Selecting previously deselected package bcrelay.<br />
Unpacking bcrelay (from .../bcrelay_1.3.4-5ubuntu1_i386.deb) ...<br />
Selecting previously deselected package pptpd.<br />
Unpacking pptpd (from .../pptpd_1.3.4-5ubuntu1_i386.deb) ...<br />
Processing triggers for man-db ...<br />
Processing triggers for ureadahead ...<br />
Setting up libpcap0.8 (1.1.1-8) ...<br />
Setting up ppp (2.4.5-5ubuntu1) ...<br />
Setting up bcrelay (1.3.4-5ubuntu1) ...<br />
Setting up pptpd (1.3.4-5ubuntu1) ...<br />
Starting PPTP Daemon: pptpd.<br />
Processing triggers for libc-bin ...<br />
ldconfig deferred processing now taking place<br />
</source><br />
<br />
==== 配置 pptpd ====<br />
为了避免和本地网络冲突,我们创建VPN的IP范围为 10.0.0.2-10.0.0.200 <br />
<br />
执行如下命令:<br />
sed -i "s/#debug/debug/" /etc/pptpd.conf<br />
echo 'localip 10.0.0.1' >> /etc/pptpd.conf<br />
echo 'remoteip 10.0.0.2-200' >> /etc/pptpd.conf<br />
echo 'ms-dns 8.8.8.8' >> /etc/ppp/pptpd-options<br />
echo 'ms-dns 8.8.4.4' >> /etc/ppp/pptpd-options<br />
echo 'nopcomp' >> /etc/ppp/pptpd-options<br />
echo 'noaccomp' >> /etc/ppp/pptpd-options<br />
<br />
继续增加 pptp 用户帐号:<br />
<br />
格式为 [UserName] pptpd [Password] * ,我们增加一个 guest 密码 为 123456 的用户如下:<br />
<br />
echo 'guest * 123456 *' >> /etc/ppp/chap-secrets<br />
<br />
重启下pptpd:<br />
service pptpd restart<br />
<br />
注意:如果需要在 iphone 上使用,请在 iphone 的 PPTP 设置页将 "加密级别" 设置为 "最高" ,否则将无法连接上。<br />
<br />
==== 配置防火墙 ====<br />
<br />
打开 IP 转发:<br />
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf<br />
sysctl -p<br />
<br />
配置防火墙:<br />
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE<br />
iptables-save > /etc/iptables-rules<br />
echo '#!/bin/sh' > /etc/network/if-up.d/iptablesload<br />
echo 'iptables-restore < /etc/iptables-rules' >> /etc/network/if-up.d/iptablesload<br />
echo 'exit 0' >> /etc/network/if-up.d/iptablesload<br />
chmod +x /etc/network/if-up.d/iptablesload<br />
<br />
重启下pptpd:<br />
service pptpd restart<br />
<br />
大功告成,可以使用 PPTP VPN 了。<br />
<br />
==== 检查日志 ====<br />
使用如下命令检查拨号日志:<br />
tail -f /var/log/syslog<br />
<br />
=== 安装 L2TP VPN ===<br />
[[L2TPServer]] 需要 VPS 支持 PPP 设备<br />
<br />
XEN 完全支持 L2TP + IPSec ,OpenVZ 支持 L2TP 但不支持 ipsec 加密。如果希望流量加密,需要更换为 XEN 的VPS。<br />
<br />
由于 OpenVZ 无法开启内核级的 IPSec ,所以默认 OSX/IOS 无法使用,可以创建或修改 /etc/ppp/options 文件,并添加 下面的内容:<br />
plugin L2TP.ppp<br />
l2tpnoipsec<br />
<br />
注:IOS需要越狱后才可以修改或创建此文件。推荐安装下一个章节中的独立 IPSec VPN 服务,这样就Apple 用户就不需要越狱,直接支持。<br />
<br />
OpenVZ 的 Vps 安装 L2TP 前,请先参考上一节先确认 VPS 是否已经开启了 PPP 的支持。<br />
<br />
==== 安装 xl2tpd ====<br />
执行如下命令安装 xl2tpd ,遇到提示输入 Y/n 时,输入 Y 回车即可:<br />
<br />
apt-get install xl2tpd ppp<br />
<br />
==== 配置 xl2tpd ====<br />
执行完毕后,继续执行如下命令配置 xl2tpd , 为了避免和本地网络冲突,我们创建VPN的IP范围为 10.0.0.2-10.0.0.200:<br />
<br />
<source lang=bash><br />
cat << "EOF" > /etc/xl2tpd/xl2tpd.conf<br />
[global]<br />
ipsec saref = no<br />
<br />
[lns default]<br />
ip range = 10.0.0.2-10.0.0.200<br />
local ip = 10.0.0.1<br />
refuse chap = yes<br />
refuse pap = yes<br />
require authentication = yes<br />
ppp debug = yes<br />
pppoptfile = /etc/ppp/xl2tpd-options<br />
length bit = yes <br />
EOF</source><br />
<br />
继续执行下面的命令配置拨号属性:<br />
<source lang=bash><br />
cat << "EOF" > /etc/ppp/xl2tpd-options<br />
require-mppe<br />
require-mschap-v2<br />
asyncmap 0<br />
auth<br />
crtscts<br />
lock<br />
hide-password<br />
modem<br />
name l2tpd<br />
proxyarp<br />
lcp-echo-interval 30<br />
lcp-echo-failure 4<br />
ms-dns 8.8.8.8<br />
ms-dns 8.8.4.4 <br />
EOF</source><br />
<br />
继续增加 l2tpd 用户帐号:<br />
<br />
格式为 [UserName] l2tpd [Password] * ,我们增加一个 guest 密码 为 123456 的用户如下:<br />
<br />
echo 'guest * 123456 *' >> /etc/ppp/chap-secrets<br />
<br />
==== 配置防火墙 ====<br />
<br />
打开 IP 转发:<br />
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf<br />
sysctl -p<br />
<br />
配置防火墙:<br />
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE<br />
iptables-save > /etc/iptables-rules<br />
echo '#!/bin/sh' > /etc/network/if-up.d/iptablesload<br />
echo 'iptables-restore < /etc/iptables-rules' >> /etc/network/if-up.d/iptablesload<br />
echo 'exit 0' >> /etc/network/if-up.d/iptablesload<br />
chmod +x /etc/network/if-up.d/iptablesload<br />
<br />
==== 启动 xl2tpd ====<br />
<br />
service xl2tpd restart<br />
<br />
可以采用不加密的方式来使用 L2TP VPN 了。<br />
注意:拨号的选项中的安全设置为可选加密(没有加密也可以连接)<br />
<br />
==== 安装 IPSec ====<br />
如果你的 VPS 是 XEN 的,我们继续配置开启 ipsec 加密支持。<br />
<br />
apt-get install openswan<br />
安装过程中,会弹出2个配置选择界面,直接回车即可。<br />
<br />
==== 配置 IPSec ====<br />
执行如下命令配置 ipsec,这里拨号的秘钥设置为 psk ,你也可以修改本段最后一步的 "psk" 为其他秘钥:<br />
<br />
cp /etc/ipsec.d/examples/l2tp-psk.conf /etc/ipsec.d/l2tp-psk.conf<br />
sed -i "s/left=.*/left=`ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'`/" /etc/ipsec.d/l2tp-psk.conf<br />
sed -i "s/leftnexthop=.*/leftnexthop=`ip route show|grep 'default'|awk '{print $3}'`/" /etc/ipsec.d/l2tp-psk.conf<br />
sed -i "s/protostack=.*/protostack=netkey/" /etc/ipsec.conf<br />
sed -i "s/include.*//" /etc/ipsec.conf<br />
echo "include /etc/ipsec.d/l2tp-psk.conf" >> /etc/ipsec.conf<br />
echo "`ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'` %any: \"psk\"" > /var/lib/openswan/ipsec.secrets.inc<br />
<br />
启动 ipsec 服务:<br />
<br />
service ipsec restart<br />
<br />
==== 测试 ipsec ====<br />
执行以下命令测试: <br />
<br />
ipsec verify<br />
<br />
如果提示中出现任何红色的 [<font color="red">FAILED</font>] 的结果,表示 ipsec 有问题,无法使用。<br />
<br />
==== 开启 xl2tpd 的 ipsec 支持 ====<br />
如果以上 ipsec 测试通过,执行以下命令开启 xl2tpd 的 ipsec 支持:<br />
<br />
sed -i "s/ipsec saref.*/ipsec saref = yes/" /etc/xl2tpd/xl2tpd.conf<br />
<br />
重启下l2tpd :<br />
<br />
service xl2tpd restart<br />
<br />
好了可以采用加密方式来使用 L2TP VPN 了。<br />
<br />
=== 安装 IPSec VPN ===<br />
由于最新的 [[strongswan]] 可以不依赖内核,仅仅需要 Tun/Tap ,对于 OpenVZ 或 XEN 而言,也可以搭建一个独立的 IPSec VPN。 OSX/IOS/安卓 默认支持。<br />
<br />
以下指南在 Ubuntu 14.04 上测试通过,其它版本请自行参考。<br />
<br />
OpenVZ 首先去面板开启 Tun/Tap ,具体验证参考前面 OpenVPN 的安装指南。<br />
<br />
==== 安装编译环境 ====<br />
<br />
执行下面的命令增加 deb-src 源,并安装编译环境。<br />
cat /etc/apt/sources.list | sed 's/deb /deb-src /' > /etc/apt/sources.list.d/sources-src.list<br />
apt-get update<br />
apt-get build-dep strongswan<br />
apt-get install dpkg-dev libgmp-dev<br />
<br />
==== 安装 strongswan ====<br />
<br />
执行下面的命令,下载并安装 strongswan。<br />
apt-get install strongswan strongswan-plugin-kernel-libipsec strongswan-plugin-xauth-generic <br />
<br />
OpenVZ 用户需要给 strongswan 打补丁,执行以下命令,XEN 用户请忽略本段。<br />
cd /root<br />
apt-get source strongswan-plugin-kernel-libipsec<br />
cd strongswan*<br />
./configure --enable-kernel-libipsec <br />
make<br />
cp src/libcharon/plugins/kernel_libipsec/.libs/libstrongswan-kernel-libipsec.so /usr/lib/ipsec/plugins/<br />
<br />
==== 配置 strongswan ====<br />
<br />
继续在终端执行下面的命令,来配置 strongswan<br />
<br />
<source lang=bash>cat << "EOF" > /etc/ipsec.conf<br />
config setup<br />
uniqueids=never<br />
<br />
conn %default<br />
#rekey=yes<br />
left=%defaultroute<br />
leftsubnet=0.0.0.0/0<br />
right=%any<br />
dpddelay=300s<br />
dpdtimeout=1h<br />
dpdaction=clear<br />
auto=add<br />
<br />
conn ikecommon<br />
rightsourceip=10.0.0.0/24<br />
#modeconfig=push<br />
#esp=aes128-sha1-modp2048<br />
compress=yes<br />
<br />
conn ikev1pskaggressive<br />
aggressive=yes<br />
#type=tunnel<br />
also=ikev1psk<br />
<br />
conn ikev1psk<br />
#authby=xauthpsk<br />
leftauth=psk<br />
rightauth=psk<br />
rightauth2=xauth<br />
#xauth=server<br />
also=ikev1<br />
<br />
conn ikev1<br />
keyexchange=ikev1<br />
#ikelifetime=60m<br />
#keylife=20m<br />
#rekeymargin=3m<br />
#keyingtries=3<br />
also=ikecommon<br />
<br />
conn L2TP-PSK-NAT<br />
leftfirewall=yes<br />
rightfirewall=yes<br />
also=L2TP-PSK-noNAT<br />
<br />
conn L2TP-PSK-noNAT<br />
keyexchange=ikev1<br />
type=transport<br />
authby=psk<br />
keyingtries=3<br />
rekey=no<br />
leftprotoport=17/1701<br />
rightprotoport=17/%any<br />
ike="aes256-sha1-modp2048!"<br />
esp="aes-sha1!"<br />
<br />
EOF</source><br />
<br />
编辑 /etc/strongswan.conf<br />
sed -i 's/load_modular.*$/&\n dns2 = 8.8.4.4/' /etc/strongswan.conf<br />
sed -i 's/load_modular.*$/&\n dns1 = 8.8.8.8/' /etc/strongswan.conf<br />
sed -i 's/load_modular.*$/&\n duplicheck.enable = no/' /etc/strongswan.conf<br />
sed -i 's/load_modular.*$/&\n i_dont_care_about_security_and_use_aggressive_mode_psk = yes/' /etc/strongswan.conf<br />
sed -i 's/load_modular.*$/&\n install_virtual_ip = yes/' /etc/strongswan.conf<br />
<br />
==== 创建用户和密钥 ====<br />
<br />
运行以下命令创建一个密钥为 psk ,用户名、密码分别为 guest 和 123456 的登录帐号,你可以修改命令设置为其它。<br />
<br />
echo ': PSK "psk"' > /etc/ipsec.secrets<br />
echo 'guest : XAUTH "123456"' >> /etc/ipsec.secrets<br />
<br />
==== 配置防火墙 ====<br />
<br />
打开 IP 转发:<br />
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf<br />
sysctl -p<br />
<br />
配置防火墙:<br />
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE<br />
iptables-save > /etc/iptables-rules<br />
echo '#!/bin/sh' > /etc/network/if-up.d/iptablesload<br />
echo 'iptables-restore < /etc/iptables-rules' >> /etc/network/if-up.d/iptablesload<br />
echo 'exit 0' >> /etc/network/if-up.d/iptablesload<br />
chmod +x /etc/network/if-up.d/iptablesload<br />
<br />
==== 运行 ====<br />
service strongswan restart<br />
<br />
==== 客户端 ====<br />
安卓或iphone上自带,直接配置连接即可。<br />
<br />
Windows 端: https://www.shrew.net/download/vpn/vpn-client-2.2.2-release.exe<br />
<br />
安装时选择 Standard 版本,这个是免费的。<br />
<br />
安装后运行 VPN Access Manager ,选“Add”:<br />
<br />
*“General” 选项下,在 “Host Name or IP address” 填写VPS的IP地址<br />
*“Authorization”选项下:<br />
**“Authorization Method”选“Mutual PSK + XAuth”<br />
**“Local Identity”的“Identification Type”选“IP Address”<br />
**“Credentials”下面“Pre Shared Key”里输入直接配置的密码 psk<br />
*“Phrase 1” 选项下,“Exchange Type”选“Main”<br />
*“Phrase 2” 选项下, “PFS Exchange”选“auto”<br />
<br />
保存。<br />
点击 Connect 进行连接,连接用户名是 guest 密码是 123456 ,连接时会有一个警告,忽略即可。<br />
<br />
=== 安装 Shadowsocks ===<br />
==== 服务端 ====<br />
运行如下命令安装:<br />
apt-get install python-gevent python-pip python-m2crypto<br />
pip install shadowsocks<br />
<br />
运行如下命令建立配置文件,密码是 123456,端口为443,你也可以替换为你自己的配置。<br />
cat << "EOF" > /etc/shadowsocks.json<br />
{<br />
"server":"0.0.0.0",<br />
"server_port":443,<br />
"local_port":1080,<br />
"password":"123456",<br />
"timeout":600,<br />
"method":"aes-256-cfb"<br />
}<br />
EOF<br />
<br />
配置服务:<br />
<source lang=bash>cat << "EOF" > /etc/init.d/shadowsocks <br />
#!/bin/sh<br />
NAME=shadowsocks<br />
PIDFILE=/var/run/$NAME.pid<br />
DAEMON=/usr/local/bin/ssserver<br />
DAEMON_OPTS="-c /etc/shadowsocks.json"<br />
start() {<br />
echo -n "Starting daemon: "$NAME<br />
touch $PIDFILE<br />
chown root:root $PIDFILE<br />
start-stop-daemon --make-pidfile --background --start --quiet --pidfile $PIDFILE --chuid root:root --exec $DAEMON -- $DAEMON_OPTS || true<br />
echo "."<br />
}<br />
<br />
stop() {<br />
echo -n "Stopping daemon: "$NAME<br />
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE || true<br />
echo "."<br />
}<br />
<br />
case "$1" in<br />
start)<br />
start<br />
;;<br />
stop)<br />
stop<br />
;;<br />
restart)<br />
echo -n "Restarting daemon: "$NAME<br />
stop<br />
sleep 1<br />
start<br />
;;<br />
*)<br />
echo "Usage: "$1" {start|stop|restart}"<br />
exit 1<br />
esac<br />
exit 0<br />
EOF</source><br />
<br />
然后继续运行下面命令配置和启动服务端:<br />
<br />
chmod +x /etc/init.d/shadowsocks<br />
update-rc.d shadowsocks defaults<br />
/etc/init.d/shadowsocks start<br />
<br />
==== 客户端 ====<br />
<br />
访问 [http://sourceforge.net/projects/shadowsocksgui/files/dist/ 下载地址] 找到 shadowsocks-gui-xxx-win- 开头的文件下载解压缩运行,设置好服务器的IP、端口为443、访问密码为上面的123456,即可在浏览器采用 socks5 1080 来使用了。<br />
<br />
=== 安装 ShadowVPN ===<br />
==== 服务端 ====<br />
使用如下命令依次每行输入进行安装,碰到需要输入[y/N]的提示时,输入y回车:<br />
<source lang=bash>echo "deb http://shadowvpn.org/debian wheezy main" > /etc/apt/sources.list.d/shadowvpn.list<br />
apt-get update<br />
apt-get install shadowvpn<br />
service shadowvpn restart</source><br />
<br />
==== 客户端 ====<br />
<br />
===== windows 下客户端 =====<br />
1. 编译Windows客户端<br />
在VPS终端依次逐行执行下面命令进行windows客户端编译,碰到需要输入[y/N]的提示时,输入y回车。<br />
<source lang=bash><br />
apt-get install build-essential mingw-w64<br />
cd /root<br />
wget https://github.com/clowwindy/ShadowVPN/releases/download/0.1.6/shadowvpn-0.1.6.tar.gz<br />
tar xzvf shadowvpn-0.1.6.tar.gz<br />
cd shadowvpn-0.1.6/<br />
./configure --host=i686-w64-mingw32 --enable-static<br />
make<br />
</source><br />
编译完成后的程序在 /root/shadowvpn-0.1.6/src/shadowvpn.exe 使用 filezilla 下载到本地。<br />
<br />
2. 安装TUN/TAP 驱动<br />
<br />
在VPS终端执行下面命令,下载 TUN/TAP 驱动:<br />
<source lang=bash><br />
cd /root<br />
wget http://build.openvpn.net/downloads/releases/tap-windows-9.9.2_3.exe<br />
wget http://build.openvpn.net/downloads/releases/tap-windows-9.21.0.exe<br />
</source><br />
下载的驱动在 /root 目录, 32 位windows系统请从 VPS 下载 tap-windows-9.9.2_3.exe 并安装, 64位系统请下载 tap-windows-9.21.0.exe 并安装。<br />
<br />
安装后去网络和共享中心的适配器设置,找到刚刚安装的TAP-Windows Adapter虚拟网卡,重命名为 ShadowVPN<br />
<br />
3. 配置VPN客户端<br />
在VPS终端执行下面命令,下载配置文件<br />
<source lang=bash><br />
cd /root<br />
wget https://raw.githubusercontent.com/clowwindy/ShadowVPN/master/samples/windows/client.conf<br />
wget https://raw.githubusercontent.com/clowwindy/ShadowVPN/master/samples/windows/client_up.bat<br />
wget https://raw.githubusercontent.com/clowwindy/ShadowVPN/master/samples/windows/client_down.bat<br />
</source><br />
下载的配置文件在 /root 目录,请使用filezilla 将 client.conf client_up.bat client_down.bat 三个文件下载下来和 shadowvpn.exe 文件放到同一个目录。<br />
<br />
*修改 client.conf<br />
**找到 server=127.0.0.1 行,修改为 server=VPS的IP<br />
**找到 intf=Local Area Connection 2 行,修改为 intf=ShadowVPN<br />
* 修改 client_up.bat<br />
**找到 SET orig_intf="Local Area Connection" 行,修改为: SET orig_intf="本地连接"<br />
* 修改 client_down.bat<br />
**找到 SET orig_intf="Local Area Connection" 行,修改为: SET orig_intf="本地连接"<br />
<br />
4. 运行VPN客户端<br />
打开系统 开始 -> 所有程序 -> 附件 -> 命令提示符, 右键选择 以管理员身份运行,然后进入本地 VPN 的目录执行 shadowvpn.exe -c client.conf 即可完成 VPN 连接,需要终止连接,直接 Ctrl + C 中断即可。<br />
<br />
也可以直接选中 shadowvpn.exe 鼠标右键,“创建快捷方式”。然后点选所创建的快捷方式,按鼠标右键选择 “属性” ,将目标由 shadowvpn.exe 修改为 shadowvpn.exe -c client.conf ,点确定退出,再次点选所创建的快捷方式,按鼠标右键,选择 “以管理员身份运行”。<br />
<br />
===== Ubuntu Linux 下客户端 =====<br />
Ubuntu Linux下安装,执行如下命令,执行前修改命令里面的 VPS_IP 为你服务端的IP地址:<br />
<source lang=bash>echo "deb http://shadowvpn.org/debian wheezy main" > /etc/apt/sources.list.d/shadowvpn.list<br />
apt-get update<br />
apt-get install shadowvpn<br />
sed -i "s/127.0.0.1/VPS_IP/" /etc/shadowvpn/client.conf<br />
sed -i "s/server.conf/client.conf/" /etc/default/shadowvpn <br />
service shadowvpn restart</source><br />
<br />
===== 路由器(OpenWRT) 下客户端 =====<br />
直接从 https://github.com/clowwindy/ShadowVPN/releases 下载对应的 ipk 包安装即可。<br />
<br />
== 额外支持 ==<br />
=== XEN VPS 增加交换分区大小 ===<br />
XEN VPS 专用,OPEN VZ的请忽略。<br />
<br />
增加之前:<br />
<source lang=bash><br />
root@289085:~# free<br />
total used free shared buffers cached<br />
Mem: 506088 46008 460080 0 3624 21944<br />
-/+ buffers/cache: 20440 485648<br />
Swap: 262140 0 262140<br />
</source><br />
<br />
运行如下命令增加256M交换内存<br />
dd if=/dev/zero of=/mnt/256M.swap bs=1M count=256<br />
chmod 600 /mnt/256M.swap<br />
mkswap /mnt/256M.swap<br />
swapon /mnt/256M.swap<br />
echo '/mnt/256M.swap none swap sw 0 0' >> /etc/fstab<br />
<br />
增加之后:<br />
<source lang=bash><br />
root@289085:~# free<br />
total used free shared buffers cached<br />
Mem: 506088 312740 193348 0 3952 284180<br />
-/+ buffers/cache: 24608 481480<br />
Swap: 524280 0 524280<br />
</source><br />
<br />
=== 配置 php 加速器 ===<br />
如果你 VPS 的内存大于或等于 1G,可以考虑开启 php 的 apc 加速,否则请忽略本步骤。<br />
echo "extension=apc.so" > /etc/php5/conf.d/apc.ini<br />
echo "apc.enabled=1" >> /etc/php5/conf.d/apc.ini<br />
echo "apc.shm_size=64M" >> /etc/php5/conf.d/apc.ini<br />
echo "apc.ttl=7200" >> /etc/php5/conf.d/apc.ini<br />
如果你安装的是apache2,执行下面命令重启下:<br />
service apache2 restart<br />
如果你安装的是nginx,执行下面命令重启下:<br />
service php5-fpm restart<br />
<br />
=== 安装 JAVA ===<br />
由于 java 非常消耗内存,1G以下的 VPS 请不要考虑使用 java,java 理想的内存在2G以上。<br />
<br />
采用如下命令安装JAVA JDK 1.7:<br />
apt-get install openjdk-7-jdk<br />
<br />
验证如下:<br />
$ java -version<br />
java version "1.7.0_25" <br />
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)<br />
OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)<br />
<br />
如果你安装了多个版本的JDK,需要配置默认的JDK,采用如下命令:<br />
update-alternatives --config java<br />
<br />
== 日常维护 ==<br />
=== 查看硬盘剩余空间大小 ===<br />
df<br />
显示<br />
root@241541:/# df<br />
Filesystem 1K-blocks Used Available Use% Mounted on<br />
/dev/simfs 20971520 583508 20388012 3% /<br />
<br />
=== 查看硬盘可用文件数 ===<br />
df -i<br />
显示<br />
root@241541:/# df -i<br />
Filesystem Inodes IUsed IFree IUse% Mounted on<br />
/dev/simfs 400000 26568 373432 7% /<br />
<br />
=== 查看内存剩余大小 ===<br />
free<br />
显示<br />
root@241541:/# free<br />
total used free shared buffers cached<br />
Mem: 524800 245240 279560 0 0 0<br />
-/+ buffers/cache: 245240 279560<br />
Swap: 0 0 0<br />
<br />
=== 如何从其他网站上下载文件 ===<br />
wget "下载文件的链接地址"<br />
<br />
如下所示下载 DZ 论坛的最新版:<br />
<source lang=bash><br />
wget http://download.comsenz.com/DiscuzX/2.0/Discuz_X2_SC_UTF8.zip<br />
</source><br />
你也可以指定需要保存的文件名为 dz.zip 如下:<br />
<source lang=bash><br />
wget http://download.comsenz.com/DiscuzX/2.0/Discuz_X2_SC_UTF8.zip -O dz.zip<br />
</source><br />
<br />
如果对方有防盗链可以这样下:<br />
<source lang=bash><br />
wget http://download.comsenz.com/DiscuzX/2.0/Discuz_X2_SC_UTF8.zip --referer=http://download.comsenz.com/<br />
</source><br />
<br />
=== 常用服务重启 ===<br />
重启 Apache2<br />
service apache2 restart<br />
重启 Mysql<br />
service mysql restart<br />
重启 Nginx<br />
service nginx restart<br />
重启 php<br />
service php5-fpm restart<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20<br />
<br />
显示:<br />
<source lang=bash><br />
root@241541:~# ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20<br />
VSZ RSS PID CMD<br />
146384 36860 1629 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock<br />
62908 3676 8026 nginx: worker process<br />
62660 2884 8027 nginx: cache manager process<br />
62660 3404 17440 nginx: master process /usr/sbin/nginx<br />
50380 11160 1517 /usr/sbin/named -u bind<br />
33948 13076 32345 /usr/bin/php-cgi<br />
33796 12912 32344 /usr/bin/php-cgi<br />
33764 12828 32351 /usr/bin/php-cgi<br />
33684 12804 32350 /usr/bin/php-cgi<br />
32892 12012 32346 /usr/bin/php-cgi<br />
32892 11984 32349 /usr/bin/php-cgi<br />
28864 7952 32347 /usr/bin/php-cgi<br />
28864 7956 32348 /usr/bin/php-cgi<br />
27708 5624 32342 /usr/bin/php-cgi<br />
8688 1924 3089 sendmail: MTA: accepting connections <br />
8136 2924 32338 /usr/sbin/sendmail -i -FCronDaemon -oem root<br />
8096 2804 20387 sshd: root@pts/0 <br />
8096 2756 23759 sshd: root@pts/1 <br />
5304 1084 1547 /usr/sbin/sshd<br />
</source><br />
<br />
=== 动态显示系统程序情况 ===<br />
top<br />
显示<br />
[[Image:Vps_top.png]]<br />
<br />
=== mysql 常用命令 ===<br />
mysql 创建数据库<br />
mysqladmin -u root -p create 数据库名<br />
<br />
mysql 删除数据库<br />
mysqladmin -u root -p drop 数据库名<br />
<br />
mysql 创建用户<br />
mysql> GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;<br />
<br />
mysql 修复表<br />
mysqlcheck -A --auto-repair -p<br />
<br />
mysql 手工恢复 phpmyadmin 备份的 sql 文件<br />
xxxx.sql 是你备份的sql文件名。<br />
mysql -p 数据库名 < xxxx.sql<br />
<br />
手工备份单个 mysql 数据库<br />
xxxx.sql 是你备份的sql文件名。<br />
mysqldump -p 数据库名 > xxxx.sql<br />
<br />
修改mysql的root的密码<br />
mysqladmin -u root password '新密码'<br />
<br />
mysql 无法启动的处理<br />
<br />
运行 mysqld_safe --user=mysql<br />
<br />
然后 tail -n 50 /var/log/syslog 看日志,根据错误来判断<br />
<br />
如果提示日志不存在,运行: apt-get install rsyslog 安装日志服务。<br />
<br />
=== 在线解压缩 ===<br />
解压缩 xxx.zip<br />
unzip xxx.zip<br />
<br />
解压缩 xxx.tar.gz<br />
tar -xzvf xxx.tar.gz<br />
<br />
解压缩 xxx.tar.bz2<br />
tar -xjvf xxx.tar.bz2<br />
<br />
压缩aaa bbb目录为xxx.tar.gz<br />
tar -zcvf xxx.tar.gz aaa bbb<br />
<br />
压缩aaa bbb目录为xxx.tar.bz2<br />
tar -jcvf xxx.tar.bz2 aaa bbb<br />
<br />
=== 封掉某个IP或IP段 ===<br />
只是运行后封掉,由于未保存所以重启后失效,对 192.168.2.0 或 192.168.2.23 进行封掉:<br />
iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp -j DROP<br />
iptables -t filter -I INPUT -s 192.168.2.23 -p tcp -j DROP<br />
<br />
=== 查看日志 ===<br />
如果需要查看访问日志,请查看 /var/log/ 文件夹,所有的日志都在这个目录下。<br />
<br />
=== 查看网络流量 ===<br />
执行如下命令安装nload <br />
apt-get install nload<br />
安装完毕后,xen的直接运行nload,即可查看,openvz的运行 nload venet0 查看带宽。<br />
<br />
=== 更多命令参考 ===<br />
点击查看 [[UbuntuSkills|Ubuntu 技巧]]<br />
<br />
== 根据压力测试来调整最大并发数 ==<br />
<br />
因为VPS的内存是有限的,如果不限制最大并发数,会照成内存爆掉或负载过高。内存爆掉,对于openvz的管理会kill掉最耗内存的程序,这样很可能杀掉web服务和sshd服务,表现形式为,vps可以ping通,但网站打不开,也无法登录,需要到面板重启vps才正常;如果负载大于3则会导致VPS由于滥用被官方冻结。如果已经发生了上述现象,请尽快按如下步骤进行调整。<br />
<br />
=== 测试内存的使用情况 ===<br />
使用 putty 登录到到 vps 输入命令 free 即可看到当前内存的使用情况,如下所示:<br />
<br />
root@241541:~# free<br />
total used free shared buffers cached<br />
Mem: 524800 296004 228796 0 0 0<br />
-/+ buffers/cache: 296004 228796<br />
Swap: 0 0 0<br />
<br />
全部内存为 524800 K,已经使用 296004 K 剩余 228796 K,也就是还剩余 228 M的内存。<br />
<br />
如果需要长时间监控,使用如下命令:<br />
<br />
watch -n 1 free<br />
<br />
=== 安装压力测试软件 ===<br />
我们这里使用 ab 软件,作为我们的压力测试软件。<br />
<br />
使用 apache2的 vps 已经自带了,如果使用nginx的vps,需要安装 apache2-utils 包,使用如下命令安装。<br />
apt-get install apache2-utils<br />
<br />
=== 开始压力测试 ===<br />
你的站点都已经配置完整,需要找一个动态页面,最好内容多一点的,这里采用 http://www.test.com/index.php 作为测试页面。<br />
<br />
在 putty 里面输入如下,将每秒刷新一次显示内存情况:<br />
<br />
watch -n 1 free<br />
<br />
重点在于观察位于 free 单词下面的数字。<br />
<br />
再开一个putty,输入我们要进行的压力测试命令如下,其中测试网址修改为你自己的测试网址:<br />
<source lang=bash><br />
ab -n 100 -c 5 http://www.test.com/index.php<br />
</source><br />
这个命令是按 5 个并发,做100次请求 ,注意看内存情况,如果出现内存小于50M的情况,表示非常危险了。<br />
<br />
执行完毕的结果如下:<br />
<source lang=bash><br />
[root@241541 ~]# ab -n 100 -c 5 http://www.test.com/index.php<br />
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Copyright 2006 The Apache Software Foundation, http://www.apache.org/<br />
<br />
Benchmarking www.test.com (be patient).....done<br />
<br />
<br />
Server Software: Apache/2.2.16<br />
Server Hostname: www.test.com<br />
Server Port: 80<br />
<br />
Document Path: /index.php<br />
Document Length: 56446 bytes<br />
<br />
Concurrency Level: 5<br />
Time taken for tests: 53.147069 seconds<br />
Complete requests: 100<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 5721547 bytes<br />
HTML transferred: 5695792 bytes<br />
Requests per second: 1.88 [#/sec] (mean)<br />
Time per request: 2657.354 [ms] (mean)<br />
Time per request: 531.471 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 105.12 [Kbytes/sec] received<br />
<br />
Connection Times (ms)<br />
min mean[+/-sd] median max<br />
Connect: 218 219 2.9 218 230<br />
Processing: 1463 2407 258.5 2429 3126<br />
Waiting: 450 1280 217.7 1291 1832<br />
Total: 1681 2627 258.6 2648 3344<br />
<br />
Percentage of the requests served within a certain time (ms)<br />
50% 2648<br />
66% 2691<br />
75% 2759<br />
80% 2818<br />
90% 2885<br />
95% 3093<br />
98% 3339<br />
99% 3344<br />
100% 3344 (longest request)<br />
</source><br />
<br />
这个结果中需要掌握的有:<br />
<br />
成功完成的请求数: Complete requests: 100<br />
<br />
失败的请求数: Failed requests: 0<br />
<br />
每秒完成的请求数: Requests per second: 1.88 [#/sec] (mean)<br />
<br />
执行每个请求需要的时间(也就是用户打开这个页面的最快时间): Time per request: 2657.354 [ms] (mean)<br />
<br />
=== 进一步压力测试 ===<br />
在内存还有剩余的情况下,我们继续增加压力测试的并发数,可以慢慢增加,<br />
<br />
当这边的内存监控窗口出现低于50M的时候,就表示这个数值为这个vps可以承受的最大并发数。<br />
<br />
出现低于50M可以内存的情况如下,表示这个站只能支撑8个并发访问不会挂掉:<br />
<source lang=bash><br />
[root@241541 ~]# ab -n 100 -c 8 http://www.test.com/index.php<br />
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Copyright 2006 The Apache Software Foundation, http://www.apache.org/<br />
<br />
Benchmarking www.test.com (be patient).....done<br />
<br />
<br />
Server Software: Apache/2.2.16<br />
Server Hostname: www.test.com<br />
Server Port: 80<br />
<br />
Document Path: /index.php<br />
Document Length: 56446 bytes<br />
<br />
Concurrency Level: 8<br />
Time taken for tests: 41.779898 seconds<br />
Complete requests: 100<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 5670100 bytes<br />
HTML transferred: 5644600 bytes<br />
Requests per second: 2.39 [#/sec] (mean)<br />
Time per request: 3342.392 [ms] (mean)<br />
Time per request: 417.799 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 132.53 [Kbytes/sec] received<br />
<br />
Connection Times (ms)<br />
min mean[+/-sd] median max<br />
Connect: 218 218 0.9 218 223<br />
Processing: 1684 3021 461.5 3087 4525<br />
Waiting: 495 1820 418.3 1927 3165<br />
Total: 1903 3239 461.6 3307 4744<br />
<br />
Percentage of the requests served within a certain time (ms)<br />
50% 3307<br />
66% 3384<br />
75% 3452<br />
80% 3521<br />
90% 3654<br />
95% 3763<br />
98% 4695<br />
99% 4744<br />
100% 4744 (longest request)<br />
</source><br />
在8个并发的情况下,用户打开这个网页最快也需要3.3秒。<br />
<br />
=== 配置并发参数 ===<br />
<br />
根据上面的压力测试情况去配置相应最大的并发为当前测试的值,上例中,我们测试出的最大并发为 8.<br />
<br />
Apache2 参考:<br />
<br />
[[Vps#Apache2_.E4.BC.98.E5.8C.96|Apache2 的优化]]<br />
<br />
Nginx 参考:<br />
<br />
[[Vps#nginx_.E4.BC.98.E5.8C.96|Nginx 的优化]]<br />
<br />
== 常见故障 ==<br />
=== "Temporary failure resolving" 或 正在解析主机...失败,未知的名称或服务 ===<br />
使用 wget 或 apt-get 时出现上面的提示,是官方的dns服务器出现故障了,采用如下命令修复:<br />
echo nameserver 208.67.222.222 > /etc/resolv.conf<br />
或者<br />
echo dns-nameservers 208.67.222.222 >> /etc/network/interfaces<br />
<br />
=== "locale: Cannot set LC_ALL to default locale: No such file or directory" ===<br />
如果出现如下故障提示:<br />
<source lang=bash><br />
perl: warning: Setting locale failed.<br />
perl: warning: Please check that your locale settings:<br />
LANGUAGE = (unset),<br />
LC_ALL = (unset),<br />
LANG = "zh_CN.UTF-8"<br />
are supported and installed on your system.<br />
perl: warning: Falling back to the standard locale ("C").<br />
locale: Cannot set LC_CTYPE to default locale: No such file or directory<br />
locale: Cannot set LC_MESSAGES to default locale: No such file or directory<br />
locale: Cannot set LC_ALL to default locale: No such file or directory<br />
</source><br />
虽然不影响使用,可以使用下面的命令解决:<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
<br />
=== 修正时区 ===<br />
使用如下命令调整本地的系统的时区为上海。<br />
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
<br />
=== 开启 GBK/GB2312 支持 ===<br />
使用如下命令在 local 文件中增加 GBK/GB2312:<br />
echo "zh_CN.GBK GBK" >> /var/lib/locales/supported.d/local <br />
echo "zh_CN.GB2312 GB2312" >> /var/lib/locales/supported.d/local <br />
<br />
然后运行:<br />
dpkg-reconfigure --force locales <br />
即可支持了。<br />
<br />
=== 修复cron问题 ===<br />
#检查cron的任务文件名是否包括 . ,如果有扩展名会导致无法运行,<br />
#可以使用如下命令检查 run-parts --test /etc/cron.daily<br />
apt-get remove anacron<br />
service cron restart<br />
<br />
=== 禁止执行的命令 ===<br />
以下命令是严格禁止的,运行后直接导致数据丢失或vps无法正常启动,如果遇到有人建议你运行如下命令,请停止。<br />
<br />
系统所有文件被删除<br />
rm -fr /<br />
<br />
系统权限混乱,启动错误,无法ssh连接<br />
chmod -R 777 /<br />
<br />
系统损坏,数据丢失<br />
dd if=/dev/zero of=/dev/xxx<br />
<br />
如果遇到有人建议你,运行包括 rm 、 chmod 、 dd 等命令,请慎重。<br />
<br />
=== 使用 mtr 检测网络丢包 ===<br />
<br />
有时我们发现 ping 丢包,因此需要通过 mtr 来定位故障的位置,使用 mtr 需要双向运行,才可以比较准确的发现故障点。<br />
<br />
VPS上安装 mtr :<br />
<br />
*Ubuntu Linux<br />
apt-get install mtr<br />
*Centos Linux<br />
yum install mtr<br />
<br />
访问 http://ip.cn 获得本地的公网地址,从VPS执行如下命令:<br />
mtr -n --report 本地公网地址<br />
<br />
获得路由的丢包位置。<br />
<br />
然后本地 Windows 上安装 mtr:<br />
<br />
下载地址: http://winmtr.net/download-winmtr/<br />
<br />
下载运行后,直接输入VPS的IP进行测试。<br />
<br />
最后两边对比结果,就可以准确的找到出问题的路由地址。<br />
<br />
找到丢包路由器的IP后,通过 http://ip.cn 去查询该路由器IP的所在地。如果该IP在国内,只能等待了;如果在国外,可以尝试去报障,要求官方协调解决。<br />
<br />
=== VPS之间备份、下载、上传需要限速 ===<br />
由于美国VPS之间的速度是200M共享,所以很容易达到满速,这样会导致带宽滥用封掉,所以必须限速,以下按1M限速:<br />
<br />
==== 常用软件限速 ====<br />
wget/scp/rsync/lftp 等常用客户端下载限速如下。<br />
wget --limit-rate=1024k ......<br />
scp -l 8196 ......<br />
rsync -auvzP --bwlimit=1024 --size-only ......<br />
lftp :~> set net:limit-rate 1024000,1024000<br />
<br />
==== 采用 trickle 限速 ====<br />
也可以使用 trickle 来限速,安装 trickle 使用如下命令<br />
apt-get install trickle<br />
<br />
运行如下命令,限制 wget 的上传速度和下载速度为1M,其中 -d 后面是下载速度,-u 后面是上传速度,以K为单位:<br />
trickle -d 1024 -u 1024 wget ....<br />
<br />
Dropbox 限速:<br />
<br />
trickle -d 1024 -u 1024 ~/.dropbox-dist/dropboxd<br />
<br />
=== 快速安装配置lnmp的命令 ===<br />
删除Apache2:<br />
<br />
service apache2 stop<br />
apt-get update<br />
apt-get -y remove apache2 apache2.2-common<br />
<br />
安装 php nginx<br />
<br />
apt-get -y install php5-cgi php5-fpm php5-gd php5-mysql php5-curl php5-mcrypt php5-common php-apc mysql-server nginx<br />
<br />
配置 nginx:<br />
<br />
mkdir /var/www<br />
chown www-data:www-data /var/www<br />
sed -i 's/\/usr\/share\/nginx\/www/\/var\/www/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(location.*php\)/\1/' /etc/nginx/sites-available/default <br />
sed -i 's/#\(.*fastcgi_split_path_info\)/\1/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(.*fastcgi_pass.*9000\)/\1/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(.*fastcgi_index\)/\1/' /etc/nginx/sites-available/default<br />
sed -i 's/#\(.*fastcgi_params\)/\1/' /etc/nginx/sites-available/default<br />
sed -i '/fastcgi_params/{ n; s/#}/}/; }' /etc/nginx/sites-available/default<br />
sed -i -e 's/listen =.*$/listen = 127.0.0.1:9000/' `grep -R -l listen /etc/php5/fpm`<br />
service php5-fpm restart<br />
service nginx restart<br />
<br />
== 常用链接 ==<br />
* [http://ubuntuchina.taobao.com/ 淘宝店铺]<br />
* [http://dwz.cn/3qCmMe BudgetVM]</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155228
TensorFlow
2017-03-16T07:08:59Z
<p>Oneleaf:/* 设置环境变量 */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
==== 设置环境变量 ====<br />
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> .bashrc<br />
echo 'export CUDA_HOME=/usr/local/cuda' >> .bashrc<br />
source ~/.bashrc<br />
<br />
==== 查看显卡信息 ====<br />
nvidia-smi<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155227
TensorFlow
2017-03-16T06:43:41Z
<p>Oneleaf:/* 安装 CudNN */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
==== 设置环境变量 ====<br />
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> .bashrc<br />
echo 'export CUDA_HOME=/usr/local/cuda' >> .bashrc<br />
source ~/.bashrc<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155226
TensorFlow
2017-03-16T06:37:07Z
<p>Oneleaf:/* 安装 CudNN */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155225
TensorFlow
2017-03-16T06:36:46Z
<p>Oneleaf:/* 安装 */</p>
<hr />
<div>== 安装 ==<br />
系统 ubuntu 16.04 amd64 <br />
=== 安装 pip3 ===<br />
这里选择 python 3 作为开发环境<br />
sudo apt-get install python-dev build-essential libcupti-dev<br />
sudo apt-get install -y python3-pip<br />
sudo pip3 install --upgrade pip<br />
<br />
下面安装过程中,如果有 nvidia GPU 显卡,安装 gpu 版本,否则安装 cpu 版本。<br />
<br />
=== 安装CPU版本 ===<br />
sudo pip3 install tensorflow<br />
<br />
=== 安装GPU版本 ===<br />
==== 安装 tensorflow gpu 版本 ====<br />
sudo pip3 install tensorflow-gpu<br />
<br />
==== 加入 显卡 ppa 源 ====<br />
sudo apt-get install software-properties-common<br />
sudo add-apt-repository ppa:graphics-drivers/ppa<br />
sudo apt update<br />
<br />
==== 安装 Nvidia Toolkit 8.0 ====<br />
来源: https://developer.nvidia.com/cuda-toolkit<br />
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb<br />
sudo apt-get update<br />
sudo apt-get install cuda<br />
<br />
==== 安装 CudNN ====<br />
来源: https://developer.nvidia.com/cudnn 需要注册和下载<br />
下载: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v5.1/prod_20161129/8.0/libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64-deb<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155224
OpenVZ
2017-03-13T02:58:34Z
<p>Oneleaf:/* 安装python */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
[install]<br />
trusted-host=pypi.douban.com<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155223
OpenVZ
2017-03-13T02:55:35Z
<p>Oneleaf:/* 安装python */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
rm /usr/bin/pip<br />
ln -s /usr/local/bin/pip /usr/bin/<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=OpenVZ&diff=155222
OpenVZ
2017-03-13T02:49:23Z
<p>Oneleaf:/* 安装python */</p>
<hr />
<div>OpevnVZ 一些自用初始化脚本<br />
<br />
= 服务端 =<br />
== 准备 ==<br />
系统 centos 6.7<br />
<br />
== 安装 dnsmasq ==<br />
<source lang=bash><br />
yum install dnsmasq<br />
sed -i "s@#resolv-file.*$@resolv-file=/etc/resolv.masqdns"<br />
cp /etc/resolv.conf /etc/resolv.masqdns<br />
echo "nameserver 127.0.0.1" > /etc/resolv.conf<br />
chkconfig dnsmasq on<br />
service dnsmasq start<br />
</source><br />
<br />
== 安装 openvz ==<br />
<source lang=bash><br />
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo<br />
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ<br />
yum install vzkernel<br />
cat << "EOF" >> /etc/sysctl.conf<br />
# On Hardware Node we generally need<br />
# packet forwarding enabled and proxy arp disabled<br />
net.ipv4.ip_forward = 1<br />
net.ipv6.conf.default.forwarding = 1<br />
net.ipv6.conf.all.forwarding = 1<br />
net.ipv4.conf.default.proxy_arp = 0<br />
<br />
# Enables source route verification<br />
net.ipv4.conf.all.rp_filter = 1<br />
<br />
# Enables the magic-sysrq key<br />
kernel.sysrq = 1<br />
<br />
# We do not want all our interfaces to send redirects<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.all.send_redirects = 0<br />
EOF<br />
<br />
sysctl -p<br />
echo "SELINUX=disabled" > /etc/sysconfig/selinux<br />
yum install vzctl vzquota ploop<br />
reboot<br />
</source><br />
<br />
== 安装 OpenVZ Web Panel ==<br />
<source lang=bash><br />
gem sources -a http://rubygems.org<br />
gem update --system 1.8.25<br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | \<br />
bash -s DOWNLOAD_URL=http://owp.softunity.com.ru/download/ovz-web-panel-latest.tgz<br />
chkconfig owp on<br />
</source><br />
面板默认登陆用户名密码:admin/admin<br />
<br />
注意,安装完毕OpenVZ的内核后,需要重启服务器再安装面板,面板需要将ruby的版本控制在1.8.25。<br />
<br />
删除面板的代码: <br />
<source lang=bash><br />
wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh -s UNINSTALL=1<br />
</source><br />
<br />
== 配置防火墙 ==<br />
<pre><br />
iptables -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT<br />
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT<br />
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE<br />
#iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE<br />
iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT<br />
iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT<br />
service iptables save<br />
service iptables restart<br />
</pre><br />
<br />
== vz 配置 ==<br />
vim /etc/sysconfig/vz<br />
mkdir /home/vz<br />
cp -ra /vz/* /home/vz<br />
mv /vz /vz_bak<br />
ln -s /home/vz /<br />
<br />
= 客户机 =<br />
== 基本环境配置 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5<br />
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32<br />
apt-get update<br />
apt-get -y dist-upgrade<br />
locale-gen --lang zh_CN.UTF-8<br />
dpkg-reconfigure locales<br />
update-locale LANG=zh_CN.UTF-8<br />
rm /etc/localtime<br />
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
echo "Asia/Shanghai" >/etc/timezone<br />
apt-get install sudo screen<br />
adduser ubuntu<br />
adduser ubuntu sudo<br />
<br />
== 安装java ==<br />
apt-get install openjdk-7-jdk<br />
apt-get install maven<br />
<br />
== 安装python ==<br />
apt-get install python-pip python-dev build-essential<br />
pip install --upgrade pip<br />
mkdir ~/.pip<br />
vim ~/.pip/pip.conf<br />
加入:<br />
[global]<br />
index-url = http://pypi.douban.com/simple<br />
<br />
== 安装数据库 postgresql ==<br />
apt-get install postgresql postgresql-contrib<br />
sed -i "s/#\(include_if_exists.*\)/\1/" /etc/postgresql/9.3/main/postgresql.conf<br />
echo "listen_addresses = '*'" >> /etc/postgresql/9.3/main/exists.conf<br />
echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf<br />
/etc/init.d/postgresql restart<br />
<br />
=== 设置数据库密码 ===<br />
sudo -u postgres psql postgres<br />
postgres=# \password postgres<br />
postgres=# \quit<br />
<br />
=== 安装 uuid 扩展 ===<br />
sudo -u postgres psql postgres<br />
postgres=# CREATE EXTENSION "uuid-ossp";<br />
CREATE EXTENSION<br />
postgres=# select uuid_generate_v4(); <br />
uuid_generate_v4 <br />
--------------------------------------<br />
a4829383-e6f9-419f-a567-196ccf72b190<br />
(1 row)<br />
<br />
postgres=# select uuid_generate_v1(); <br />
uuid_generate_v1 <br />
--------------------------------------<br />
ffc5a0fa-156b-11e5-a568-6f5620948752<br />
(1 row)<br />
<br />
== 下载wildfly ==<br />
su ubuntu<br />
cd<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
mv wildfly-8.2.0.Final wildfly<br />
rm wildfly-8.2.0.Final.tar.gz<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0"' >> /home/ubuntu/wildfly/bin/standalone.conf<br />
echo 'ubuntu=35291eedea6d270cb71fe7dfd36d0c89' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-users.properties<br />
echo 'ubuntu=' >> /home/ubuntu/wildfly/standalone/configuration/mgmt-groups.properties<br />
cd /home/ubuntu/wildfly/standalone/deployments<br />
wget https://jdbc.postgresql.org/download/postgresql-9.4-1200.jdbc41.jar<br />
<br />
=== 建立数据库 ===<br />
sudo -u postgres createdb core -E UTF8 -T template0<br />
<br />
=== 配置wildfly数据源 ===<br />
cd /home/ubuntu/wildfly/bin<br />
./jboss-cli.sh --connect<br />
<br />
创建数据源的命令为:<br />
<br />
data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
<br />
例如:<br />
[standalone@localhost:9990 /] data-source add --name=core --jndi-name=java:/core --driver-name=postgresql-9.4-1200.jdbc41.jar --connection-url=java:postgresql:core --user-name=postgres --password=postgres --transaction-isolation==TRANSACTION_READ_COMMITTED --min-pool-size=10 --max-pool-size=250<br />
[standalone@localhost:9990 /] exit<br />
<br />
== 安装 rabbitmq ==<br />
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list<br />
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc<br />
apt-key add rabbitmq-signing-key-public.asc<br />
apt-get update<br />
apt-get install rabbitmq-server<br />
rabbitmq-plugins enable rabbitmq_management<br />
rabbitmq-plugins enable rabbitmq_web_stomp<br />
rabbitmqctl add_user webuser 123456<br />
rabbitmqctl set_user_tags webuser monitoring<br />
----权限----<br />
rabbitmqctl set_permissions -p / user '.*' '.*' '.*'<br />
访问: http://IP:15672/<br />
<br />
== 安装 mongodb ==<br />
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927<br />
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list<br />
sudo apt-get update<br />
sudo apt-get install -y mongodb-org<br />
<br />
== 安装 redis ==<br />
sudo apt-get install software-properties-common<br />
apt-add-repository ppa:chris-lea/redis-server<br />
apt-get update<br />
apt-get install redis-server<br />
<br />
=== 安装 redis群集 ===<br />
至少准备3台服务器<br />
修改 /etc/redis/redis.conf 文件:<br />
bind 0.0.0.0<br />
appendonly yes<br />
cluster-enabled yes<br />
cluster-config-file nodes.conf<br />
cluster-node-timeout 5000<br />
service redis-server restart<br />
<br />
在其中一台上执行:<br />
wget http://download.redis.io/releases/redis-3.0.7.tar.gz<br />
tar xzvf redis-3.0.7.tar.gz<br />
apt-get install ruby<br />
cd redis-3.0.7<br />
gem install redis<br />
添加群集<br />
./src/create --replicas 0 192.168.X.1:6379 192.168.X.2:6379 192.168.X.3:6379<br />
测试<br />
redis-cli -c<br />
127.0.0.1:6379> set a 1<br />
127.0.0.1:6379> get a <br />
"1"<br />
<br />
== zookeeper ==<br />
=== 安装 zookeeper ===<br />
wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.9.tar.gz<br />
tar -zxvf zookeeper-3.4.9.tar.gz -C /opt<br />
ln -s /opt/zookeeper-3.4.9 /opt/zookeeper<br />
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg<br />
mkdir /opt/zookeeper/data<br />
sed -i 's/dataDir=.*$/dataDir=\/opt\/zookeeper\/data/' /opt/zookeeper/conf/zoo.cfg<br />
<br />
启动<br />
/opt/zookeeper/bin/zkServer.sh start<br />
<br />
关闭<br />
/opt/zookeeper/bin/zkServer.sh stop<br />
<br />
=== 安装 zookeeper 面板 zkdash ===<br />
apt-get install git python-pip libmysqld-dev python-dev libyaml-dev<br />
git clone https://github.com/ireaderlab/zkdash.git<br />
cd zkdash<br />
pip install -r requirements.txt<br />
<br />
安装 mysql 数据库<br />
apt-get install mysql-server<br />
mysqladmin create zkdash<br />
<br />
修改数据库配置和连接属性:<br />
vim conf/conf.yml<br />
<br />
同步数据<br />
python ./bin/syncdb.py<br />
<br />
启动:<br />
cd zkdash<br />
screen python init.py -port=80<br />
<br />
=== python 使用 zookeeper ===<br />
安装:<br />
pip install kazoo<br />
使用:<br />
from django.core.cache import cache<br />
from kazoo.client import KazooClient<br />
...<br />
<br />
def getmailPassword(self):<br />
password=cache.get('password')<br />
if password==None:<br />
zk = KazooClient(hosts='x.x.x.x:2181,x.x.x.x:2181')<br />
zk.start()<br />
password, stat = zk.get('/xxx/xxxx/xxxx')<br />
cache.set('password',password,3600)<br />
return password<br />
<br />
=== 安装 hadoop ===<br />
==== 安装 ====<br />
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz<br />
tar -zxf hadoop-2.7.3.tar.gz -C /usr/local<br />
cd /usr/local/<br />
mv hadoop-2.7.3 hadoop<br />
adduser hadoop<br />
chown -R hadoop hadoop/<br />
su hadoop<br />
ssh-keygen -t rsa<br />
cd ~/.ssh/<br />
cat ./id_rsa.pub >> ./authorized_keys<br />
echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bashrc<br />
source ~/.bashrc<br />
/usr/local/hadoop/bin/hadoop version<br />
==== 配置 ====<br />
cat ./etc/hadoop/core-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>hadoop.tmp.dir</name><br />
<value>file:/usr/local/hadoop/tmp</value><br />
<description>Abase for other temporary directories.</description><br />
</property><br />
<property><br />
<name>fs.defaultFS</name><br />
<value>hdfs://localhost:9000</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
cat ./etc/hadoop/hdfs-site.xml<br />
<br />
<source lang=xml><br />
<configuration><br />
<property><br />
<name>dfs.replication</name><br />
<value>1</value><br />
</property><br />
<property><br />
<name>dfs.namenode.name.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/name</value><br />
</property><br />
<property><br />
<name>dfs.datanode.data.dir</name><br />
<value>file:/usr/local/hadoop/tmp/dfs/data</value><br />
</property><br />
</configuration><br />
</source><br />
<br />
执行 NameNode 的格式化:<br />
./bin/hdfs namenode -format<br />
<br />
修改 <br />
./etc/hadoop/hadoop-env.sh<br />
./etc/hadoop/yarn-env.sh<br />
设置 JAVA_HOME 为:/usr/lib/jvm/java-7-openjdk-amd64<br />
<br />
启动<br />
./sbin/start-dfs.sh<br />
<br />
检查启动:<br />
<source lang=bash><br />
hadoop@TEST:/usr/local/hadoop$ jps<br />
25413 NameNode<br />
25734 SecondaryNameNode<br />
25522 DataNode<br />
25909 Jps<br />
</source><br />
<br />
WEB访问面板:<br />
http://192.168.2.222:50070/<br />
<br />
关闭<br />
./sbin/stop-dfs.sh<br />
<br />
== 安装 AeroGear ==<br />
=== 安装 wildfly 8.2 ===<br />
wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz<br />
tar xzvf wildfly-8.2.0.Final.tar.gz<br />
=== 安装 mysql ===<br />
apt-get install mysql-server<br />
<br />
=== 安装 AeroGear UnifiedPush Server ===<br />
==== 环境准备 ====<br />
wget -c https://github.com/aerogear/aerogear-unifiedpush-server/releases/download/1.1.3.Final/aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
tar xzvf aerogear-unifiedpush-server-1.1.3.Final-dist.tar.gz<br />
cd aerogear-unifiedpush-server-1.1.3.Final<br />
cd migrator<br />
unzip ups-migrator-dist.zip<br />
cp -r ~/aerogear-unifiedpush-server-1.1.3.Final/databases/src/main/resources/modules/com ~/wildfly-8.2.0.Final/modules/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator/lib/mysql-connector-java-5.1.18.jar ~/wildfly-8.2.0.Final/modules/com/mysql/jdbc/main/<br />
==== 数据库准备 ====<br />
mysql -u root -p<br />
mysql> create database unifiedpush default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create database keycloak default character set = "UTF8" default collate = "utf8_general_ci";<br />
mysql> create user 'unifiedpush'@'localhost' identified by 'unifiedpush';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX ON unifiedpush.* TO 'unifiedpush'@'localhost';<br />
mysql> GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP ON keycloak.* TO 'unifiedpush'@'localhost';<br />
mysql> quit<br />
~/wildfly-8.2.0.Final/bin/standalone.sh --server-config=standalone-full.xml -b 0.0.0.0<br />
另外开一个终端执行创建Jboss数据源<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-unifiedpush-server-1.1.3.Final/databases/mysql-database-config-wildfly.cli<br />
建立数据库表<br />
cd ~/aerogear-unifiedpush-server-1.1.3.Final/migrator/ups-migrator<br />
cp liquibase-mysql-example.properties liquibase.properties<br />
vim liquibase.properties <br />
修改 url=jdbc:mysql://localhost:3306/unifiedpush100li 为 url=jdbc:mysql://localhost:3306/unifiedpush<br />
./bin/ups-migrator update<br />
如下提示,表示成功更新:<br />
Liquibase Update Successful<br />
==== 部署 aerogear-unifiedpush-server ====<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-auth-server.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
cp ~/aerogear-unifiedpush-server-1.1.3.Final/servers/unifiedpush-server-wildfly.war ~/wildfly-8.2.0.Final/standalone/deployments/<br />
看wildfly的日志<br />
==== 访问 ====<br />
http://x.x.x.x:8080/ag-push/<br />
默认用户名 admin 密码 adm<br />
=== 安装 AeroGear SimplePush Server ===<br />
==== 下载并直接运行 ====<br />
git clone https://github.com/aerogear/aerogear-simplepush-server.git<br />
cd aerogear-simplepush-server<br />
mvn install -DskipTests=true<br />
cd server-netty<br />
mvn exec:java -Dexec.args="-host=localhost -port=7777 -tls=false -ack_interval=10000 -useragent_reaper_timeout=60000 -token_key=yourRandomToken"<br />
<br />
==== 部署到 wildfly 运行 ====<br />
cd wildfly-module/<br />
mvn package -DskipTests=true<br />
cp -r ~/aerogear-simplepush-server/wildfly-module/target/module/org ~/wildfly-8.2.0.Final/modules/system/layers/base/<br />
~/wildfly-8.2.0.Final/bin/jboss-cli.sh --file=/root/aerogear-simplepush-server/wildfly-module/src/main/resources/wildfly-config.cli<br />
<br />
== 常用维护命令 ==<br />
<br />
=== 查看内存被什么消耗 ===<br />
ps -eo vsz,rss,pid,cmd --sort -vsz|head -n 20</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155210
TensorFlow
2017-01-21T10:45:12Z
<p>Oneleaf:/* 参考链接 */</p>
<hr />
<div>== 安装 ==<br />
<br />
sudo pip install numpy<br />
sudo pip install tensorflow<br />
<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155209
TensorFlow
2017-01-21T10:45:01Z
<p>Oneleaf:</p>
<hr />
<div>== 安装 ==<br />
<br />
sudo pip install numpy<br />
sudo pip install tensorflow<br />
<br />
<br />
== 参考链接 ==<br />
<br />
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html<br />
<br />
http://blog.topspeedsnail.com/archives/10858<br />
http://blog.topspeedsnail.com/archives/10897</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=TensorFlow&diff=155208
TensorFlow
2017-01-21T10:39:39Z
<p>Oneleaf:创建页面,内容为“== 安装 == sudo pip install numpy sudo pip install tensorflow”</p>
<hr />
<div>== 安装 ==<br />
<br />
sudo pip install numpy<br />
sudo pip install tensorflow</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155206
Docker
2017-01-05T09:56:58Z
<p>Oneleaf:/* 安装私有仓库 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
需要修改客户端允许上传到这个私有仓库<br />
<br />
cat /etc/docker/daemon.json<br />
<br />
{<br />
"insecure-registries": ["192.168.1.233:5000"]<br />
}<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgres<br />
ARG DB_NAME=postgres<br />
ARG DB_USER=postgres<br />
ARG DB_PASS=postgres<br />
ARG JNDI_NAME=jndi-name<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=${JNDI_NAME} --jndi-name=java:/${JNDI_NAME} --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-${POSTGRESQL_VERSION}.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"]<br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build -t esp --build-arg JNDI_NAME=esp .<br />
# sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i --link postgres:postgres esp<br />
# sudo docker run -t -i -name esp --link db:postgres esp<br />
<br />
上传到私有仓库:<br />
sudo docker tag esp 192.168.1.233:5000/esp<br />
sudo docker push 192.168.1.233:5000/esp<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155205
Docker
2017-01-05T09:56:32Z
<p>Oneleaf:/* 安装私有仓库 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
需要修改客户端允许上传到这个私有仓库<br />
<br />
cat /etc/docker/daemon.json<br />
<br />
{<br />
"insecure-registries": ["10.0.0.15:5000"]<br />
}<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgres<br />
ARG DB_NAME=postgres<br />
ARG DB_USER=postgres<br />
ARG DB_PASS=postgres<br />
ARG JNDI_NAME=jndi-name<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=${JNDI_NAME} --jndi-name=java:/${JNDI_NAME} --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-${POSTGRESQL_VERSION}.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"]<br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build -t esp --build-arg JNDI_NAME=esp .<br />
# sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i --link postgres:postgres esp<br />
# sudo docker run -t -i -name esp --link db:postgres esp<br />
<br />
上传到私有仓库:<br />
sudo docker tag esp 192.168.1.233:5000/esp<br />
sudo docker push 192.168.1.233:5000/esp<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155204
Docker
2017-01-05T09:12:01Z
<p>Oneleaf:/* 制作jboss wildfly镜像 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgres<br />
ARG DB_NAME=postgres<br />
ARG DB_USER=postgres<br />
ARG DB_PASS=postgres<br />
ARG JNDI_NAME=jndi-name<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=${JNDI_NAME} --jndi-name=java:/${JNDI_NAME} --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-${POSTGRESQL_VERSION}.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"]<br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build -t esp --build-arg JNDI_NAME=esp .<br />
# sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i --link postgres:postgres esp<br />
# sudo docker run -t -i -name esp --link db:postgres esp<br />
<br />
上传到私有仓库:<br />
sudo docker tag esp 192.168.1.233:5000/esp<br />
sudo docker push 192.168.1.233:5000/esp<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155203
Docker
2017-01-05T08:42:13Z
<p>Oneleaf:/* 制作jboss wildfly镜像 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgres<br />
ARG DB_NAME=postgres<br />
ARG DB_USER=postgres<br />
ARG DB_PASS=postgres<br />
ARG JNDI_NAME=jndi-name<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=${JNDI_NAME} --jndi-name=java:/${JNDI_NAME} --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-${POSTGRESQL_VERSION}.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"]<br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build -t esp --build-arg JNDI_NAME=esp .<br />
# sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i --link postgres:postgres esp<br />
# sudo docker run -t -i -name esp --link db:postgres esp<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155202
Docker
2017-01-05T03:42:34Z
<p>Oneleaf:/* 制作jboss wildfly镜像 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgres<br />
ARG DB_NAME=postgres<br />
ARG DB_USER=postgres<br />
ARG DB_PASS=postgres<br />
ARG JNDI_NAME=jndi-name<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=${JNDI_NAME} --jndi-name=java:/${JNDI_NAME} --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-${POSTGRESQL_VERSION}.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"]<br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build --build-arg JNDI_NAME=esp .<br />
# sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i --link postgres:postgres 488654ca08fc<br />
# sudo docker run -t -i -name esp --link db:postgres 316b6acf73a0<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155201
Docker
2017-01-05T03:42:12Z
<p>Oneleaf:/* 制作jboss wildfly镜像 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgres<br />
ARG DB_NAME=postgres<br />
ARG DB_USER=postgres<br />
ARG DB_PASS=postgres<br />
ARG JNDI_NAME=jndi-name<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=${JNDI_NAME} --jndi-name=java:/${JNDI_NAME} --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-${POSTGRESQL_VERSION}.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"]<br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build --build-arg JNDI_NAME=esp .<br />
# sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i --link postgres:postgres 488654ca08fc<br />
#sudo docker run -t -i -name esp --link db:postgres 316b6acf73a0<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf
https://wiki.ubuntu.org.cn/index.php?title=Docker&diff=155200
Docker
2017-01-05T03:28:50Z
<p>Oneleaf:/* 制作jboss wildfly镜像 */</p>
<hr />
<div>== 安装 ==<br />
sudo apt-get install apt-transport-https ca-certificates<br />
sudo apt-key adv \<br />
--keyserver hkp://ha.pool.sks-keyservers.net:80 \<br />
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D<br />
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list<br />
sudo apt-get update<br />
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual<br />
sudo apt-get install docker-engine<br />
sudo service docker start<br />
<br />
== 安装 portainer 面板 == <br />
docker run -d -p 9000:9000 portainer/portainer<br />
<br />
== 安装网络 ==<br />
git clone https://github.com/jpetazzo/pipework.git<br />
sudo cp ./pipework/pipework /usr/local/bin/<br />
sudo apt-get install iputils-arping bridge-utils -y<br />
<br />
# 注意配置这个会断网<br />
sudo brctl addbr br0<br />
sudo ip addr add 192.168.1.4/24 dev br0<br />
sudo ip addr del 192.168.1.4/24 dev eno1<br />
sudo ip link set dev br0 up<br />
sudo brctl addif br0 eno1<br />
sudo ip route del default<br />
sudo ip route add default via 192.168.1.1 dev br0<br />
<br />
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker<br />
# 设置这个需要关闭掉默认的 docker0 ,否则默认还是会走这个。<br />
<br />
sudo docker ps<br />
sudo pipework br0 test1 192.168.1.10/24<br />
<br />
== 主机网络配置参考 ==<br />
cat /etc/network/interfaces<br />
<pre><br />
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).<br />
<br />
source /etc/network/interfaces.d/*<br />
<br />
# The loopback network interface<br />
auto lo<br />
iface lo inet loopback<br />
<br />
# The primary network interface<br />
#auto eno1<br />
#iface eno1 inet dhcp<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.233<br />
netmask 255.255.255.0<br />
gateway 192.168.1.3<br />
bridge_ports eno1<br />
bridge_stp off<br />
dns-nameservers 192.168.1.3 192.168.1.2<br />
</pre><br />
<br />
# 可以指定容器的网络网关为服务器的IP,当然也可以不用指定,直接使用内部默认的网关172.17.0.1。 <br />
## pipework br0 -i eth1 test4 192.168.1.11/24@192.168.1.233<br />
# pipework br0 -i eth1 test4 192.168.1.11/24<br />
<br />
== 安装私有仓库 ==<br />
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2<br />
<br />
== 制作镜像 ==<br />
sudo pip install --upgrade pip<br />
sudo pip install -U docker-compose<br />
<br />
=== 制作jboss wildfly镜像 ===<br />
Dockerfile 文件内容如下<br />
<pre> <br />
FROM jboss/wildfly:8.1.0.Final<br />
<br />
ENV POSTGRESQL_VERSION 9.4-1201-jdbc41<br />
ENV JBOSS_HOME /opt/jboss/wildfly<br />
<br />
ARG DB_HOST=postgresql<br />
ARG DB_NAME=postgresql<br />
ARG DB_USER=postgresql<br />
ARG DB_PASS=postgresql<br />
<br />
<br />
RUN $JBOSS_HOME/bin/add-user.sh admin -p admin -s<br />
<br />
RUN /bin/sh -c '$JBOSS_HOME/bin/standalone.sh &' && \<br />
sleep 10 && \<br />
cd /tmp && \<br />
curl --location --output postgresql-${POSTGRESQL_VERSION}.jar --url http://search.maven.org/remotecontent?filepath=org/postgresql/postgresql/${POSTGRESQL_VERSION}/postgresql-${POSTGRESQL_VERSION}.jar && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="deploy /tmp/postgresql-${POSTGRESQL_VERSION}.jar" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command="xa-data-source add --name=esp --jndi-name=java:/esp --user-name=${DB_USER} --password=${DB_PASS} --driver-name=postgresql-9.4-1201-jdbc41.jar --xa-datasource-class=org.postgresql.xa.PGXADataSource --xa-datasource-properties=ServerName=${DB_HOST},PortNumber=5432,DatabaseName=${DB_NAME} --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter" && \<br />
$JBOSS_HOME/bin/jboss-cli.sh --connect --command=:shutdown && \<br />
rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/ $JBOSS_HOME/standalone/log/* && \<br />
rm /tmp/postgresql-9.4*.jar && \<br />
rm -rf /tmp/postgresql-*.jar<br />
<br />
COPY *.ear $JBOSS_HOME/standalone/deployments/ <br />
<br />
EXPOSE 8080 9990<br />
<br />
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Djboss.http.port=8080"] <br />
</pre><br />
<br />
<br />
打包为镜像:<br />
<br />
sudo docker build --build-arg DB_HOST=db --build-arg DB_NAME=postgres --build-arg DB_USER=postgres --build-arg DB_PASS=postgres .<br />
<br />
运行镜像测试,依赖poestgres数据库,主机为db:<br />
<br />
sudo docker run -t -i -name esp --link db:postgres 316b6acf73a0<br />
<br />
== 参考地址 ==<br />
<br />
https://docs.docker.com/engine/installation/linux/ubuntulinux/<br />
<br />
http://portainer.io/install.html<br />
<br />
https://toutiao.io/posts/496585/app_preview<br />
<br />
https://opskumu.gitbooks.io/docker/content/chapter6.html<br />
<br />
http://www.linuxidc.com/Linux/2015-02/113783.htm<br />
<br />
https://yeasy.gitbooks.io/docker_practice/content/<br />
<br />
https://github.com/docker/docker.github.io/blob/master/registry/deploying.md<br />
<br />
== 链接 ==<br />
<br />
[https://hub.docker.com/explore/ Docker 仓库地址]<br />
<br />
== 其他客户端初始命令 ==<br />
sed -i "s/archive.ubuntu.com/mirrors.163.com/" /etc/apt/sources.list<br />
apt-get update<br />
apt-get install net-tools iputils-ping</div>
Oneleaf