阿里云服务器通过vnc重装系统

因为之前偶然得到的机会在阿里云上买了一个学生机大概有2年的时效,就是很普通的那种轻量级服务器。因为腾讯云的服务器学生优惠到期了,就放弃了腾讯云的服务器,但是备案还是腾讯云上,就顺便在买了阿里云的服务器的同时把备案接入到了阿里云上就没有再管了,直到前天突然给我发个消息说没有检测到对应的备案在阿里云服务器上有对应的内容,如果3个工作日后还是没有检测到,就会删除备案信息,于是就开始考虑把博客从洛杉矶的服务器上迁移回来阿里云的服务器上,然后就开始出现了一系列的错误...

装debain系统

迁移回来肯定是要先把服务器整一下了,阿里云上默认的debain系统只有9.9,但是最新的已经到了10.2,就打算通过 vnc 手动装一下系统。vnc在阿里云上叫做救援连接,haha

  • 首先需要先开启救援连接,设定一个6位数的密码
  • 下载一个脚本文件 wget https://file.haoxiujie.com/tools/sh/InstallNET.sh 朋友已经下载好的
  • 执行脚本文件 bash InstallNET.sh -d 10 -v 64 -m
  • 进入救援连接重启服务器,选择刚才下载的镜像进行安装
  • 基本都是一路回车就好,除了2个地方需要改一下,一个是源地址需要设置为阿里这边的地址 mirrors.cloud.aliyuncs.com ,腾讯云镜像地址 mirrors.tencentyun.com ,一个是在最后下载软件的时候只选择 ssh Service 即可,其他的都没什么问题。

  • cat /etc/issue 查看发行版本
  • cat /proc/version 查看内核版本

配置刚装好 debain 系统,安装依赖包

  • 装完系统重新启动登录后,先下载vim 和 haveged, apt-get install vim wget haveged
  • 编辑ssh文件允许通过设定的端口和root ssh密码方式登录 vim /etc/ssh/sshd_config,

    • port xxxx
    • PermitRootLogin yes
  • 因为刚装的系统基本上只有必要的依赖,所以需要添加依赖用于lnmp的安装 apt-get install cmake libncurses5-dev libssl-dev libcurl4-openssl-dev pkg-config libicu-dev libfreetype6-dev

    • mysql(5.5以上)需要先安装 cmakelibncurses5-dev能力安装上
    • PHP(7.1以上)需要先安装 libicu-devlibfreetype6-dev
  • 切换字体颜色

    • 在root目录下,编辑隐藏文件 .bashrc ,插入 PS1='${debian_chroot:+($debian_chroot)}\[\e[01;36m\]\u[\e[0m\]@\[\e[01;31m\]\h:\[\e[01;33m\]\w\$ \[\e[01;32m\] ' 即可实现字体颜色的更换
  • 自动安装 lnmp wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz
  • 更新系统等等,不过一般不需要,因为刚安装的系统基本都是最新的 apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get autoremove && apt-get clean && apt-get autoclean
  • 禁用 ipv6 网络接口,编辑文件 vim /etc/sysctl.conf

    • 禁用整个系统所有接口的IPv6net.ipv6.conf.all.disable_ipv6 = 1
    • 禁用某一个指定接口的IPv6(例如:eth0, lo)
      net.ipv6.conf.lo.disable_ipv6 = 1
      net.ipv6.conf.eth0.disable_ipv6 = 1
    • 使刚才修改过的内容生效 sysctl -p /etc/sysctl.conf
  • 安装net工具

    • apt-get install net-tools

装好lnmp之后就可以准备创建新的网站并下载typecho了,但是在之前还有一些参数要配置


配置 mysql 参数

通过 Navicat 测试连接服务器数据库是否正常,不正常的话一般情况是因为数据库没有开通外网访问权限

  • 网络检测

    • ping主机可以;
    • telnet 主机3306端口不可以;telnet 主机22端口可以;说明与本机网络没有关系;
  • 端口检测

1)netstat -ntpl | grep 3306
    tcp        0      0 :::3306                     :::*                        LISTEN      - 
2)netstat -ntpl |grep 22
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -   
  可以看出22端口监听所有地址,而3306只监听本机地址(绑定了到了本地),所以远程无法访问。
  对于端口只允许本机访问,有两个地方启用,一个是防火墙启用3306,一个就是mysql配置绑定本机地址。
  • 防火墙检测

 1)iptables --list查看;
 2)开启防火墙3306端口
     vi /etc/sysconfig/iptables
     -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙) 
     /etc/init.d/iptables restart(重启防火墙使配置生效)
 3)或者直接关闭防火墙;
  • debain10的防火墙配置在 /etc/iptables 下,有两个配置文件,一个是ipv4的,一个是ipv6的,只需要修改ipv4的 mysql 配置即可
  • mysql用户访问权限(大多数是链接不上是这种情况
进入mysql数据库
   $mysql -u root -p
   >use mysql;
 1.>select host,user from user; //查看用户
    MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost只能本机访问;
    其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
 2.设置host为%
   >update user set host='%' where user = 'root';
    %为任意用户都有权限连接,localhost为只能本机连接,配置完host为%这一步就已经能外网访问了
 3.授权用户具体权限
   >grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
   >flush privileges;//刷新权限
 4.删除用户
   >drop user zhangsan@'%';
 
注意: 一定要重启mysql: # systemctl restart mysqld
  • 之后在通过Navicat 连接基本上就可以连接上服务器的数据库了

安装typecho

在 lnmp 准备好的网站文件中下载 typecho 解压即可,如果选择了重写规则,需要修改下 nginx 的配置文件

  • 首先要注意的是试用lnmp创建目录的时候,如果需要生成ssl证书,一定要先将域名解析正确,不然会出错
  • 如果安装的 php 版本是7.0 以上,但是typecho不是开发版的话, 需要将 Typecho 的数据库引擎修改为 pdo_mysql。修改 config.inc.php 文件中的
  • $db = new Typecho_Db(‘Mysql’, ‘typecho_’);

    改为

    $db = new Typecho_Db(‘Pdo_Mysql’, ‘typecho_’);
    • 修改 /usr/local/nginx/conf/vhost 目录下的网站配置文件,将其修改为监听443端口,同时80端口强制跳转https访问
    server
        {
            listen 443 ssl http2;
            #listen [::]:443 ssl http2;
            server_name www.murongmengjie.cn ;
            index index.html index.htm index.php default.html default.htm default.php;
            root  /home/wwwroot/www.murongmengjie.cn;
    
            ssl on;
            ssl_certificate /usr/local/nginx/conf/ssl/www.murongmengjie.cn/fullchain.cer;
            ssl_certificate_key /usr/local/nginx/conf/ssl/www.murongmengjie.cn/www.murongmengjie.cn.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
            ssl_prefer_server_ciphers on;
            ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
            ssl_session_cache builtin:1000 shared:SSL:10m;
            # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
            ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
    
            include rewrite/typecho2.conf;
            #error_page   404   /404.html;
    
            # Deny access to PHP files in specific directory
            #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
    
            include enable-php.conf;
    
               if (-f $request_filename/index.html) {
                rewrite (.*) $1/index.html break;
                }
                if (-f $request_filename/index.php) {
                rewrite (.*) $1/index.php;
                }
                if (!-f $request_filename) {
                rewrite (.*) /index.php;
                }
              
               if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php$1 last;
            }
    
            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires      30d;
            }
    
            location ~ .*\.(js|css)?$
            {
                expires      12h;
            }
    
            location ~ /.well-known {
                allow all;
            }
    
            location ~ /\.
            {
                deny all;
            }
    
            access_log  /home/wwwlogs/typechoLog.log;
        }
    
    
     server
        {
            listen 80;
            server_name www.murongmengjie.cn;
            return 301 https://www.murongmengjie.cn$request_uri;
        }
    

    最重要的就是重写的配置文件: include rewrite/typecho2.conf;
    还有判断语句

               if (-f $request_filename/index.html) {
                rewrite (.*) $1/index.html break;
                }
                if (-f $request_filename/index.php) {
                rewrite (.*) $1/index.php;
                }
                if (!-f $request_filename) {
                rewrite (.*) /index.php;
                }
              
               if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php$1 last;
            }
    • 访问配置的网站,进入typecho的配置页面进行typecho的配置,设置访问密码,就可以开始使用了。

  • 进行网站主题信息的配置,恢复之前保存的配置信息即可。

  • lnmp之安装PHP模块/扩展(不需要重装PHP)

    因为有些图片想要上传到自己的服务器上,但是又不想保存在博客中,最后就决定自己搭建一个图床,选择了和typecho一样的一个轻量级的图床lychee


    因为lnmp自动安装了php,所以一些php的模块并没有装上,但是 lychee 又需要这些模块的支持,所以首先需要安装所需的模块。

    • 解压.bz2文件 tar jxvf FileName.tar.bz2
    • 进入ext 目录下
    • 安装imap模块,执行cd imap/
    • 再执行 /usr/local/php/bin/phpize 会返回如下信息:Configuring for:
      PHP Api Version:         20041225 Zend Module Api No:      20060613 Zend Extension Api No:   220060519
    • 再执行以下命令:

      • ./configure --with-php-config=/usr/local/php/bin/php-config --with-kerberos --with-imap-ssl
      • make && make install
    • 执行完返回:Build complete. Don't forget to run 'make test'.
    • 表示已经成功,再修改 /usr/local/php/etc/php.ini
    • 查找:extension_dir 再下面一行添加上extension = "imap.so"保存,执行/etc/init.d/php-fpm restart 重启。

    • 安装exif模块和imap大致一样

      • cd exif/
      • /usr/local/php/bin/phpize
      • ./configure --with-php-config=/usr/local/php/bin/php-config
      • make && make install
      • 修改/usr/local/php/etc/php.ini,添加上extension = "exif.so"
      • 保存,执行/etc/init.d/php-fpm restart 重启。
    • /usr/local/php/bin/php -m  查询已经安装了的模块
    最后修改:2020 年 08 月 27 日
    哇卡哇卡