debian 9 安装GNOME&VNC环境

RT 为了方便划水工作,需要装一个GUI和一个VNC服务端

参考了这篇文章,并根据实际情况进行了调整(允许root登陆),顺带一提,这里也有CentOS的操作指南。

全程依旧使用root账号,所以不带sudo命令

1、安装gnome3 vncserver和ibus

apt-get install gnome-core ibus vnc4server

即使是core下也需要300M和较长时间来完成,可以先喝杯水,休息一下。

2、配置gnome
在home下多了一个.vnc文件夹,进去编辑一下配置文件后保存退出。

vim xstartup
unset DBUS_SESSION_BUS_ADDRESS
/usr/bin/ibus-daemon -d

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session &

配置一下来允许root登陆

vim /etc/gdm3/daemon.conf

找到[security]这一行
添加以下内容后保存退出:

AllowRoot=true

然后编辑一下策略:

vim /etc/pam.d/gdm-password

找到这一行,注释掉,保存退出:

#auth required pam_succeed_if.so user != root quiet_success

最后重起服务,顺带一提,都debian9了,习惯一下新的命令吧:

systemctl restart gdm3

3、配置vnc

vim /etc/vnc.conf

最末尾有一个”1;”删掉
然后找到如下并修改成所需后保存退出(修改了分辨率,以及默认不只有localhost可以访问vnc)。

$geometry = "1280x720"
$localhost = "no"

4、启动vnc
默认端口是从5901开始,如果什么参数都不加的话则从5901依次开始。

vncserver

第一次启动会要求设置vnc访问密码

5、停止vnc

vncserver -kill :1

编译安装带有RTMP模块的nginx

RT,这个参照了obs的论坛上的帖子,然后把其中可能遇到的坑也总结了进来,从0开始编译,系统为Debian9,root账户
1、搞一下编译环境

apt-get install git build-essential openssl libpcre3 libpcre3-dev unzip libssl-dev

编译并安装zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

编译并安装nginx

wget https://nginx.org/download/nginx-1.14.0.tar.gz #nginx
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip #nginx-rtmp模块
tar -zxvf nginx-1.14.0.tar.gz
unzip master.zip
cd nginx-1.14.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master --with-http_v2_module
make
make install

(你问我为啥要编译http2?万一以后你要用咋办,以后要用的时候省事啊)
写配置文件,这一行直接在nginx.conf的最后一个大括号之外贴上即可,具体功能可按照git上的说明来进行调整

rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                application live {
                        live on;
                        record off;
                }
        }
}

实际使用方法:
按照上面的参数,URL默认格式是rtmp://yourdomain/live/***
星号内是自定义内容,可以理解为部分应用上所说的密码
另外,部分推流软件不允许密码空着(例如obs,空着会推不上去流),这时候就应该把地址拆成两份填写

流媒体地址:rtmp://yourdomain/live
密码:***

注意:流媒体地址的最后结尾不要加斜杠,系统会自动帮你加
最后,加一个nginx自启动吧

vim /lib/systemd/system/nginx.service 

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存退出,然后

systemctl enable nginx.service #开启自启动
systemctl disable nginx.service #关闭自启动

参考链接:
How to set up your own private RTMP server using nginx
Installing NGINX Open Source
nginx-rtmp-module

debian下搞个smb服务(samba)

RT 总归有这方面需求 一如既往搞完后就写个博客做个笔记
系统依旧root,就不sudo了,debian 8.6的系统~
smb安装和配置其实异常的简单,配置文件也很容易懂~
安装还是蛮简单的 反正需要的都会一并帮你装好

apt-get install samba

装完后直接vim /etc/samba/smb.conf
这里面有详细的设置说明,或者也可以复制粘贴我下面提供的一个比较基本但是可以起来的配置:

[global]
workgroup = WORKGROUP
encrypt passwords = yes
public = no
security = user
log file = /var/log/samba/log.%m
[storage]
comment = Storage
path = /var/storage
public = no
writable = yes

这个感觉写得很简单了,基本都能看得懂上面的意思吧。。。按需修改就好了,完事保存退出
然后创建个user,这一步比较蛋疼 需要先建立一个实体账户,然后添加到允许列表里才能使用,也可能是我姿势不对没创建成功虚拟账户。。。如果有大佬可以解释一下的话还请说明~

useradd storage

为了安全,创建好后vim /etc/passwd
找到storage账户 改成/usr/sbin/nologin 保存退出
然后smbpasswd -a storage
输入一个smb用的登录密码 需要输入两次
最后重启一下服务器就好了,这里我遇到了service不可用的情况 所以用了如下:

/etc/init.d/samba restart

都ok了后就可以使用了,测试一下吧~

debian下搞个CSGO服务端

RT 闲着蛋疼 正好坑都踩完了 就留个记录 这次除了运行SteamCMD之前有一个前置需要安装会用到root,其它时候都不需要root也不需要sudo 所以还是很方便的
一、部署SteamCMD
按照官方wiki,先安装一个前置
apt-get install lib32gcc1
然后安装SteamCMD,这里有两种方式
1、用apt-get 也就是直接

apt-get install steamcmd

但是这个要求你的apt源要有这个包,国内的源似乎很多都没有,所以要用第二种方式
2、直接wget然后解压缩 这里就不需要解释了,官方留了个下载地址:https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
这里因为我的apt源没有 所以我也选择了第二种方式,唯一的区别是启动steamcmd,后者是运行sh,前者直接steamcmd即可
二、下载CSGO服务端
先准备好一个文件夹,一会我们下载的时候要设置路径,否则设置的路径如果不存在的话并不会自动创建,而是下载到你用户的home下,这里假设我们丢到/var/csgo下,且文件夹已经创建好
然后启动SteamCMD

./steamcmd.sh

之后登陆一下

login anonymous

登陆后设置下载路径

force_install_dir /var/csgo

然后下载 

app_update 740 validate

由于G胖的服务器也不怎么好 所以有时候会断,这种时候可以尝试继续执行下载的命令,如果不能执行的话就只能直接退出,然后重启SteamCMD,重启后有一个巨坑要注意,就是你需要完整的重新执行登陆–>设置路径–>下载,缺一不可,如果不重新设置路径的话,会自动下载到home,然后就会变成重新下载的情形
顺便提一下 以后服务端升级,也是用同样的步骤和命令,CMD会自动检测升级并更新
三、塞点自定义地图
这个挺简单的 /根目录/csgo/maps/ 这里 丢进去就好~
四、配置下服务端
这里有以下几点要配置,首先需要申请一个key。。。
我们访问一下这里:https://steamcommunity.com/dev/managegameservers
登陆你的账号 然后游戏ID输入进去(csgo是730),设置一个好记的名字,然后生成
之后我们创建一个sh在根目录 写如下内容:

Classic Casual(经典休闲模式):
./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_bomb +map de_dust2
Competitive(经典竞技模式):
./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_bomb +map de_dust2
Arms Race(军备竞赛模式):
./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 0 +mapgroup mg_armsrace +map ar_shoots
Demolition(爆破模式):
./srcds_run -game csgo -console -usercon +game_type 1 +game_mode 1 +mapgroup mg_demolition +map de_lake

总之按照你需要的去贴进去,或者干脆四个都创建也不是不可以
之后进入~/csgo/cfg/文件夹内 创建一个cfg

vim autoexec.cfg
log on //This is set to turn on logging! Don't put this in your server.cfg
hostname "<服务器名称>"
rcon_password "<op密码>"
sv_password "<服务器密码,默认为空>" //Only set this if you intend to have a private server!
sv_cheats 0 //This should always be set, so you know it's not on
sv_lan 0 //This should always be set, so you know it's not on
sv_setsteamaccount <你申请到的token>
exec banned_user.cfg
exec banned_ip.cfg

保存退出

vim server.cfg
exec autoexec.cfg

保存退出
最后启动服务器 理论上就能直接启动了~反正我是能用了

记一次业务整体迁移

RT 东西比较杂 算是随笔记录一下,参考资料蛮多的
大致的情况是:
操作系统均为debian 8.6 x64
服务器A(物理机),有一个普通的http业务,一个java业务,一个mysql业务,一个FTP业务
服务器B(套在A里面且没有公网ip的虚拟机)一个dz论坛,一个mysql业务
服务器C(目标机器,新系统,而且还有个还没挂载的硬盘)
A和C不在一个地点,需要公网传输,且A和B上面的业务都要整合在C上面,另:A上面的mysql可舍弃(不要问我为啥不要数据了,设定就是如此)
 
第一步:先部署一下新机器的环境
大致需要的有:tengine php5-fpm mysql-server openjdk vsftpd db5.3-util
以及有个没格式化也没挂载的硬盘

mkfs.xfs /dev/sdb -f (反正我是用xfs,以及这个不需要分区,直接把盘挂上去好了)
mount /dev/sdb /var/hdd

重启后保持挂载:
blkid 查看下这块硬盘的uuid

vim /etc/fstab

最下面直接按照这个格式写一下

UUID=12345678-1234-1234-1234-123456789012       /var/hdd      xfs     defaults        0       0

保存退出即可
其他的没啥事情 按照需求创建一些文件夹 以及mysql记得先设置个密码
 
第二步:先把最简单的搞起来(java/http/ftp)
这个应该最简单了
java装好openjdk即可
没有dz论坛,纯http也只是需要配置下tengine的配置即可,可参考以前的博文:http://blog.bilicloud.com/?p=133
ftp依旧:http://blog.bilicloud.com/?p=25
搞起来后文件通过tar打包,scp发送过去,再到指定的文件夹解包即可
文件太大/太杂/需要保持文件夹结构的话可以参考下偷懒的方法:http://blog.bilicloud.com/?p=172
 
第三步:迁移数据库
开头说明了一下,服务器A的数据库里的数据可以舍弃,所以这样就简单得多了~我们只需要把服务器B的数据库迁移即可
先确认一下版本,发现服务器B的版本要比C的版本老一点,用apt-get升级一下,升级后确认两边版本一致,然后stop掉mysql的服务
之后查看了一下数据库所在位置,cat /etc/mysql/my.cnf 找到路径 进去,tar打包一下,然后scp直接发到服务器C,解包,放到指定位置,然后检查一下文件夹和里面的文件的权限,如果不是mysql的话需要chown mysql:mysql -R 来设置一下权限
完事后mysql -uroot -p 登陆一下 然后show DATABASES; 查看下数据库是否存在,也可以use一下后show一下 看看能否正常读取之类的。总之我的迁移是顺利的完成了。
 
第四步:迁移dz论坛
这一步我们大致跟着官方文档走,官方文档地址见参考资料里的链接~
先将论坛全部tar打包,然后依旧scp发过去,解包,放到指定位置,确认权限
然后写一下tengine的配置文件,具体可参考http://blog.bilicloud.com/?p=133
之后修改以下文件,改一下数据库的账号密码(这里我创建了一个新的用户名和对应的密码 数据库上要做一下授权,然后再从这边改一下密码)

./config/config_global.php
./config/config_ucenter.php
./uc_server/data/config.inc.php

改完后 重启tengine 然后。。。嗯?502?
看了一下log 发现是fastcgi 连接被拒绝,然后ss -nat发现。。。根本就没有fastcgi的端口,检查了一下php-fpm.conf发现 原来我忘记写listen了。。。果断补一下

vim /etc/php5/fpm/php-fpm.conf

直接跳到结尾,粘贴上:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = -1

:wq保存退出 然后重启一下php5-fpm服务,然后浏览器刷新下页面。。。起来了~
之后做了一下登陆 发帖 删帖测试 都一切正常,迁移任务完美结束=w=
 
参考资料:
DZ资料库-论坛迁移:http://faq.comsenz.com/library/bbsapp/movesite/movesite_index.htm

Debian 8下配置桌面(GNOME)的安装与VNC访问

RT 需要迁移一些文件到另一台机器上,文件量太大(几百G、超过300w个文件,过于零散的文件打包后仍有2000+的文件),而且想保持文件夹结构不变,且我懒(其实这大概是最重要的原因)
一、安装GNOME
这里参考了debian官方的wiki
https://wiki.debian.org/zh_CN/Gnome
注意描述:“Debian 选择安装的软件包 (含有新装系统时默认安装的软件,它会安装一些不集成在 GNOME 桌面的应用程序,比如 LibreOffice 和 Firefox 等。)”
各位也可以自行选择自己所需的,我的话因为真的很懒,所以直接用默认推荐的版本好了
先日常更新一下apt源,然后安装

apt-get update
apt-get install task-gnome-desktop

文件挺大的,安装完后占用了2个G左右,下载也要几百兆,网速慢、配置低的可以先休息下了,网络不稳定的建议起一个screen,防止网络断掉导致安装中断
装好后不需要管他了
 
二、安装VNCServer
这里有两种,都可以用,比较明显的区别是:启动方式的不同,其次就是对客户端的兼容略有区别(其实新的客户端兼容性都挺好的,基本也遇不到了)
这里参考了这篇博文:http://www.laozuo.org/2932.html

apt-get install tightvncserver

装完后先设置个vnc的访问密码吧

tightvncserver :1

这样会起来一个vncserver,第一次启动的时候就会提示你设置密码(记得输入两次)
设置完后会问你是否要设置一个仅允许观看的密码,各位看自己的需求,不要的话就直接N掉好了
完事后我们先停掉进程

tightvncserver -kill :1

之后配置一下配置文件(这时候请保持在你的账号的home文件夹)

vim ~/.vnc/xstartup

打开后将文件清空,粘贴如下内容:

#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session-fallback &
lxterminal &
/usr/bin/lxsession -s LXDE &

:wq保存退出
最后起vnc服务

tightvncserver :1

然后可以用vnc客户端访问一下了,:1的话端口应该是5901(5900+1)
 
PS:我需要用fz客户端,但是默认没有,建议直接在ssh上:apt-get install filezilla 即可,装完后在开始菜单–>internet里面就能看到了

debian8+kvm+webvirtmgr 部署

RT 基本上难度也不是太大,不过webvirtmgr比较烦……真的……(估计我姿势不对
一、装环境(包括kvm nginx 以及webvirtmgr需要的py相关的组件)(参考资料1、2)

apt-get install qemu-kvm bridge-utils virt-manager virt-viewer git python-pip python-libvirt python-libxml2 novnc supervisor nginx sasl2-bin
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt # or python-pip (RedHat, Fedora, CentOS, OpenSuse)
./manage.py syncdb
./manage.py collectstatic

会让你设置一个webvirtmgr的管理员账号,输入用户名和密码设置即可
以后还需要添加的话用这个命令:

./manage.py createsuperuser

最后

mv webvirtmgr/ /var/www/

把文件夹挪到www下面(或者你喜欢的路径)
装完后先丢那边 网卡先不动,先配置nginx和webvirtmgr
二、配置nginx
(这里说明一下 我的版本是nginx1.8.0 不同版本的nginx略有不同,1.8.0的话也可以用于tengine)
其实也就是conf和站点设置,conf的设置可以参考我另外一篇博文:
tengine+php5+dz论坛部署
站点的设置我们参考官方的wiki:(参考资料2)

vim /etc/nginx/conf.d/webvirtmgr.conf

复制粘贴吧:

server {
listen 80 default_server;
server_name $hostname;
#access_log /var/log/nginx/webvirtmgr_access_log;
location /static/ {
root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var
expires max;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 1024M; # Set higher depending on your needs
}
}

保存然后重启一下
这样配置上后测试一下 至少主页还有登陆的功能应该已经可以访问了
三、配置webvirtmgr和kvm之间的通信
这一步很恶心。。。因为:
1、我当时的环境是localhost里面装kvm和webvirtmgr,然后本想用local socks的方式 但是却死活不通,后面只好放弃转而用tcp连接的方式,tcp连接方式适合于1台控制机器访问多台kvm机器,如果kvm和webvirtmgr在同一台机器,而且机器又要放到公网的话请务必注意安全(可以通过iptables或者上层的网络设备上对访问进行限制)
2、配置完了后发现无法连接,ss -nat观察发现端口没起来。。。喵喵喵?
3、配置tcp通信的账号密码的时候密码不能粘贴。。。只能手打。。。特神奇。。。
总之开始吧
按照官方文档 我们配置一下tcp通信用的账号密码(参考资料2)

saslpasswd2 -a libvirt <用户名>

提示让你输入密码:

Password: xxxxxx
Again (for verification): xxxxxx

然后检查一下

sasldblistusers2 -f /etc/libvirt/passwd.db

应该会有如下提示信息:

<用户名>@webvirtmgr.net: userPassword

顺便说一下,删除账号的命令是

saslpasswd2 -a libvirt -d <用户名>

设置好账号密码后 测试一下通信

virsh -c qemu+tcp://<目标主机>/system nodeinfo
Please enter your authentication name: <用户名>
Please enter your password: xxxxxx

正确的话就会显示目标物理机器的硬件信息
如果提示:

error: unable to connect to server at 'host:16509': Connection refused
error: failed to connect to the hypervisor

说明你也踩到我这一章节开头写的第二个坑了。。。解决方案如下(参考资料3)

sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
sed -i 's/#auth_tcp = "sasl"/auth_tcp = "none"/g' /etc/libvirt/libvirtd.conf
vim /etc/default/libvirtd
找到#libvirt_opts = ""
修改为:libvirt_opts = "-d -l"

增加-l监听tcp
然后 service libvirtd restart 之后…… 卧槽?服务为什么起不来?
总之这个服务再也没起来过。但是问题却解决了(端口开始监听中)。。。这一点不明所以。。。但是的确可用。。。如果有知道原因的人还请指教一番
最后,访问webvirtmgr,配置一下tcp连接

Label 设置个名称
第二个地方输入服务器地址,我是本机就直接输入localhost了
用户名和密码 写这一章节开头我们设置的用户名和密码,点击添加 正常的话就会出现图片里左侧那个绿色的框框
然后点名字 进入管理页面
三、配置网桥(参考资料4)
当然你是nat模式那我就不说啥了。。。不过我们应该都用网桥模式吧。。。
虽然用brctl会很简单,但是如果机器需要重启的话 你除非设置了开机自动设置 否则会很蛋疼,所以我们直接vim一下interfaces写死在里面好了,我们也默认走eth0

vim /etc/network/interfaces
auto br0
iface br0 inet static
address <本机ip>
netmask <掩码>
gateway <网关>
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0

:wq保存一下
然后service networking restart 理论上就生效了(有时候则是两个一起生效?好像是的。。。总之重启一下也是可以的……重启大法好~)
之后我们到webvirtmgr,配置一下网络

大概是这个样子,桥接名称要和interfaces里面的一致(一般也都会写br0的吧……)
创建后就完成了
四、开一个虚拟机 并装好系统
webvirtmgr使用了存储池的概念,需要先设置一下磁盘文件、iso文件都在哪里


非常简单易懂了。。。
创建好后,把iso文件丢到那个设置的路径里即可
然后我们开始开虚拟机

里面自带了一些预设 并支持自定义配置(New Flavor)、导入XML(From XML)等
创建好后在这里挂载已经上传好的iso(这里的截图是开机状态,默认创建好是关机的,我只是随手找了一台虚拟机截图而已~)

在Access里面 可以设置控制台的方式(vnc或spice),还可设置控制台密码,以及启用控制台也在里面
一切就绪后 Power里开机即可,然后开控制台安装系统~不喜欢网页vnc的话也可以用自己的vnc,也是支持的=w=
这个控制台的优点在于http,比V*ware家的那个flash控制台不知道高到哪里去了~
而且支持一个控制台控制多个主机,功能也很强大,也可以针对已经配置好的机器再进行配置修改,甚至是直接编辑xml等,还有一些很细节的地方,比如可以单独设定一个网卡开机启动,或者单独设定一台机器是否开机就启动这样的
参考资料:
1、webvirtmgr安装:https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr
2、webvirtmgr-tcp方式连接配置:https://github.com/retspen/webvirtmgr/wiki/Setup-TCP-Authorization
3、Linux下开启Libvirtd的tcp监控:http://yansu.org/2013/03/25/open-tcp-port-of-libvirt.html
4、如何在 Ubuntu 上搭建网桥:https://linux.cn/article-7605-1.html

听说你不会装系统……手把手教你装原版Win10

RT 断断续续被好多人问过到底要怎么装……这里就说说怎么装。。。
背景:新的电脑(电脑上没有任何数据)(这点很重要因为有数据的要蛋疼的多,尤其是没开UEFI的话)
准备工作:等待安装的电脑一台(废话),8G以上的U盘一个(别是坏的就行)
一、下个镜像……
由于一直在用itellyou,所以也直接建议到itellyou上寻找ISO
访问http://msdn.itellyou.cn/
按照如下指示点击

复制这个ed2k,去下载。。。
二、写到U盘里
这里推荐用UltraISO
官网地址:http://cn.ezbsystems.com/ultraiso/index.html
虽然是付费软件,但是免费试用其实就可以了,当然如果以后也用得到的话还是建议买,因为……(我跟你讲这软件超便宜,国人只要30 RMB,如果是外国人就要将近30刀(200块左右))
下载下来后安装,装好后打开这个应用,然后应用内选择打开,选择你下载好的ISO来打开这个ISO

(点击红框内的打开 然后找到你的ISO即可,我这里用的老版本的win10 仅供演示)
打开后,插入你的U盘(如果里面有文件的话记得备份,写U盘的时候会抹掉里面所有的东西)
之后选择启动–>写入硬盘镜像,如下图

打开后,硬盘驱动器确认是你的U盘,然后刻录校验打勾,最后点击“写入”,之后会提示你数据会丢失是否继续的字样,点“是”即可

等待写入完成并校验成功后会有提示刻录完成字样,这样这一步就结束了。
三、装机前的BIOS设置
要装的机器 进BIOS 这里拿笔记本做演示(台式机手头没资源……笔记本的话BIOS目前基本都差不多,所以好找)
主要是要确保:1、AHCI开启 2、UEFI开启

在Advanced里面 有一个SATA Operation,确认是否为AHCI,如果是IDE请改为AHCI(RAID不在此篇文章讨论范围内)

在Boot里面 确认Boot List Option是否为UEFI,如果不是请改为UEFI

这两项改好后,到Exit里,选择Save Changes and Reset,保存退出

四、安装系统
BIOS改完后 U盘插到电脑上,重启后会自动引导U盘的UEFI进入到安装页面
这一步开始我没有太多照片,所以只能提供手头有的照片,以后慢慢补齐
1、输入序列号,这里如果没有的话可以选择跳过,有的话请正常输入,会自动识别版本
2、如果选择跳过后,会让你选择要安装的版本,这里要注意:家庭版可以升级到专业版,专业版不能降到家庭版,家庭版安装好后如果有专业版的序列号则可以升级到专业版,而专业版安装好后如果有家庭版的序列号后只能选择重装来安装家庭版
3、一路下一步后,会问你是“升级”还是“自定义”,这里我们选择“自定义”
4、进入到分区页面,由于设定上我们是一个新电脑,所以需要从头开始分区
这里要注意一下,如果你是SSD的话,除了系统所需的引导分区外,请不要分多个分区(敲黑板)
如果是机械硬盘的话,分一个适当的即可,比如系统建议在120GB以上
点击新建后,这里需要输入的数字的单位是MB,用计算器简单算一下,120(GB)*1024=122880(MB),输入122880,点应用后即可分出一个120G的分区
分区的时候会提示你需要创建系统引导的隐藏分区,点是即可
分完后如果你需要的话可以继续点新建,来分好你所需要的D、E等分区
如果你分了多个区后,记得分完后务必点击一下列表里的你的第一个分区(作为系统盘来选中),然后点击下一步
这样就开始了系统安装的过程,安装过程大概需要不到10分钟即可完成,当提示重启的时候,将U盘拔出 重启即可
重启后就进入了系统设置阶段,请一路按照指示进行即可,在提示是否快速设置或自定义的地方,请选择快速设置。
然后就。。。进桌面了。。。
你的系统装完了。。。
你可以装驱动了。。。

tengine+php5+dz论坛部署

RT~业务上需要跑一个html页面,一个下载业务,和一个dz论坛,并且上反代,且在请求到任何其他奇怪的地址的时候均跳转回首页
这里假设域名是www.abc.com、dl.abc.com、bbs.abc.com
环境上 大致的情况就是:
用户访问公网IP到达机器A
机器A里面开一个虚拟机B
访问A后 通过反代 再请求作为源站的B即可
用到的工具有:tengine、php5(7不行,dz X3.2不支持7)、mysql、DZ UTF-8 简中 X3.2版
简单介绍下,tengine属于nginx的淘宝魔改版本~在nginx上增加了很多新的功能,简单的配置的话参数是一致的
一、安装所需的程序
这里系统仍然是debian(这次是8.5 x64)由于我使用的apt源自带tengine 所以不需要编译安装,直接apt-get即可

apt-get install tengine php5 php5-fpm php5-common php5-gd php5-mysql php5-cli php5-json php5-readline mysql-server-5.5

这些都不解释、也没啥要配置的,mysql那里会让你设置root的密码,设一个就OK
dz的话 请各位自行去官网复制链接 然后wget后unzip即可,这里不做过多说明
这次没用到phpmyadmin,因为安全事故频发,有点不是太放心,况且也没啥需求,导入数据库什么的敲命令也OK的
完事后 mysql 进去 设置个单独的账户给dz用
二、配置dz要用的到的mysql

mysql -u root -p

#登陆mysql

create database bbs;

#创建名为bbs的数据库

grant all privileges on bbs.* to [email protected] identified by '123456';

#创建名为bbs的用户,密码为123456,并赋予其对bbs数据库的全部权限
这部分直接从我的第一篇博文里面复制过来的了。。。反正都一样
3、解决第1、2个需求
两者实际是同一个功能,所以合二为一来讲,后者只是没有index而已
首先 创建一个放网页的目录。。。不解释,我们丢到/var/www下面吧,2个目录,一个是HTML的,目录叫www,另一个提供下载的目录叫dl

mkdir /var/www/www /var/www/dl

然后可以先把你需要提供的内容丢到对应目录里,这里我们就touch一个index.htm在www和dl的下面,方便后续测试

touch index.htm
echo hello >> index.htm

分别cp到各自的文件夹,懒得打命令了
之后,编辑tengine的配置文件,由于是nginx的魔改,所以配置文件仍然叫nginx.conf,路径在/etc/nginx

vim /etc/nginx/nginx.conf

这里面大部分东西都不需要你改,基本上只是添加新的东西而已
我们找到开头写着http { 的那一行
然后找到这个大括号的“}”部分(全新的配置文件一般都是在最下面)
之后按下i进入编辑模式,在“}”的上面敲回车空出几行来 粘贴如下内容(以下内容由叼炸天的朋友erevus提供~点击名字可进入他的个人站点,这是一位经验丰富的安全工程师~)

server {
listen 80;
server_name www.abc.com abc.com;
root /var/www/www/;
index index.htm;
}

(空格粘贴过来的时候乱掉了。。。不过不影响,我也没强迫症,你们自己有强迫症的话自己看着办吧2333333)
这一行由于也带上了对php的支持,我懒得删了。。。反正不影响。。。大致注意以下几点:
1、listen 后面跟着端口号 表示监听哪个端口
2、server_name 后面跟着域名 如果是多域名的话(包括www和@)用空格隔开
3、root 后面跟着放着网页的物理路径 不解释
4、index 后面跟着你的index页面的文件名,记得带后缀
5、需要多域名指向多文件夹的话 跟着这个的后面,再复制粘贴一次,然后按照上面1~4的说明,来改成你对应业务的所需即可
然后:wq 保存退出

service tengine restart

理论上不会有任何报错信息,然后直接请求的话 就会发现可以请求到你需要的内容了~
四、上dz
先编辑一下php-fpm,直接安装的里面 缺东西。。。略蛋疼

vim /etc/php5/fpm/php-fpm.conf

直接拉到最下 输入这几行:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = -1

如果这三个都有了就忽略吧。。。我这里不知道为啥进去后发现这三个参数都没有
第一个是监听的端口
第二个是保证只有127.0.0.1可以访问,如果你这是后端机器 则可能需要修改一下
第三个。。。想不起来了!自行谷歌吧。。。
配置完后
还是和刚才一样,搞个放论坛的目录,这里我们就叫bbs

mkdir /var/www/bbs

然后 把dz丢进去~
这里注意,dz由于权限要求,所以需要你给一下可读可写可删除可改等权限

chmod -R 777 /var/www/bbs/

(这里要注意,我这只是一个为了调通而偷懒的说明,全部777的话有可能会因为有漏洞进而被黑,然后被挂webshell,请各位站长务必注意)
之后编辑一下nginx.conf

vim /etc/nginx/nginx.conf

这里稍加不同,比上面的多了点东西

server {
listen 80;
server_name bbs.abc.com;
root /var/www/bbs/;
index index.htm index.html index.php;
location ~ .*\.php(\/.*)*$ {
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}

主要是多了一个fastcgi_pass 这里指向你php刚才设置的listen即可,注意端口和IP都别输错了
完事后:wq保存退出

service tengine restart

重启后 dz的要求是http://你的域名/install 这样访问即可开始论坛初始化
一路下一步 按照说明走 就问题不大了~
五、访问奇怪的地址时跳转回主站(www)
这个挺简单的。。。直接

vim /etc/nginx/nginx.conf

然后复制粘贴如下 还是到http 里面

server {
listen 80 default;
rewrite ^(.*) http://www.abc.com permanent;
}

:wq保存退出,重启服务端即可
然后你可以测试一下 比如浏览器上直接输入IP访问 会发现可以跳转到这里了
六、反向代理
迟来的更新……这一步居然是最简单的。。。
还是添加解析到nginx.conf即可

server {
listen 80;
server_name bbs.bilicraft.com;
access_log /var/log/nginx/bbs.access.log main;
error_log /var/log/nginx/bbs.error.log error;
location / {
proxy_pass http://172.16.1.2:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}

其中 proxy_pass写目标机器的IP和端口,保存退出
然后重启一下tengine,顺带一提 nginx也是可以反代的,但是要去掉access_log结尾的main和error_log结尾的error,nginx不认这俩的,不去掉重启会报错
这样就全部完成啦~

MySQL 重设密码

某MC服把服务器上mysql的root密码居然给忘了。。。
于是。。。搜了一番,找到了这样的一个教程:
https://segmentfault.com/a/1190000000412194
一、适合ubuntu/debian的方式
这个方法只能用于ubuntu/debian 系统上,不过好处在于不需要停掉mysql的服务

cat /etc/mysql/debian.cnf

显示的内容是:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = PASSWORD
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = PASSWORD
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

我们记下来其中的user和password
然后直接

mysql -udebian-sys-maint -p

回车后输入password里面的密码,成功进入~
然后直接:

use mysql;
update user set password=PASSWORD("newpassword") where User='root';
flush privileges;

全部执行完后就OK了~
二、比较通用的办法
这个办法需要停mysql,不过像是centos之类的可以用这个方法

service mysql stop

以安全模式启动mysql

mysqld_safe --skip-grant-tables --skip-networking &

然后直接登陆,不需要添加-p

mysql -uroot

成功登陆,然后改密码~