liujia 发布的文章

在 Debian 9 里安装 php5.3 fpm

Debian 9 仓库里默认的php版本是7.0,如果网站程序一定需要php5.3,那可以尝试编译安装php5.3。

测试机是阿里云公共镜像Debian 9 64位。

过程:

  1. 先安装好 nginx + php7-fpm + MariaDB
  2. apt install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dev libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libkrb5-dev libxml2-dev libxslt1-dev libltdl-dev libmariadbclient-dev-compat # 安装好相应的开发包,编译安装时要用到
  3. 因为Debian9里的OpenSSL版本相对较高,所以需要先安装低版本的:

    cd /tmp
    wget "https://www.openssl.org/source/old/1.0.1/openssl-1.0.1t.tar.gz"
    tar xzf openssl-1.0.1t.tar.gz 
    cd openssl-1.0.1t
    ./config shared --prefix=/opt/openssl
    make -j $(nproc) && make install
    ln -s /opt/openssl/lib /opt/openssl/lib/x86_64-linux-gnu
    wget -O /opt/openssl/ssl/cert.pem "http://curl.haxx.se/ca/cacert.pem"
  4. 做一些符号链接,让php5.3在编译安装时能找到

    ln -s /opt/openssl/lib/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/
    ln -s /opt/openssl/lib/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/
    ln -fs /opt/openssl /usr/local/ssl
    ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
    cd /usr/include && ln -s x86_64-linux-gnu/curl
  5. 下载php5.3.29源码包,保存解压到 /usr/local/src/php5.3-build

    mkdir -p /opt/php-5.3
    mkdir /usr/local/src/php5.3-build
    cd /usr/local/src/php5.3-build
    wget -c http://php.net/get/php-5.3.29.tar.bz2/from/this/mirror -O php-5.3.29.tar.bz2
    tar jxf php-5.3.29.tar.bz2
    cd /usr/local/src/php5.3-build/php-5.3.29
  6. ./configure --prefix=/opt/php-5.3 --enable-mbstring --with-libxml-dir=/usr --enable-soap --with-curl --with-mcrypt --with-zlib --disable-rpath --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm # 配置
    php5.3-6.png
  7. make && make install # 编译安装
    php5.3-8.png
  8. 复制默认的php.ini及fpm配置文件

    cp /usr/local/src/php5.3-build/php-5.3.29/php.ini-production /opt/php-5.3/lib/php.ini
    cp /opt/php-5.3/etc/php-fpm.conf.default /opt/php-5.3/etc/php-fpm.conf
  9. vi /lib/systemd/system/php-5.3-fpm.service # 配置php5.3-fpm服务

    [Unit]
    Description=The PHP 5.3 FastCGI Process Manager
    After=network.target
    
    [Service]
    Type=simple
    PIDFile=/opt/php-5.3/var/run/php-fpm.pid
    ExecStart=/opt/php-5.3/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.3/etc/php-fpm.conf
    ExecReload=/bin/kill -USR2 $MAINPID
    
    [Install]
    WantedBy=multi-user.target
  10. systemctl start php-5.3-fpm.service # 启动php5.3-fpm
    php5.3-9.png
  11. 在相应的站点配置内容中,将php交由 php5.3 处理
    php5.3-10.png
  12. phpinfo输出及phpmyadmin操作,基本正常
    php5.3-11.png

参考:

面试记 - 深圳同方信息技术有限公司

4月20日面试的,失败了,所以现在补记。

是在“中国人才热线”投的在线简历,电话通知我面试“网络工程师”的。面试的地点是白沙物流园附近,离当时住的松枰村不远。

约好的时间是下午三点,两点半时还在下着毛毛雨,我姐叫我拿把伞去。地方不难找,用手机地图导航,在大门口填来访登记后,保安告诉我,前边那栋大厅二楼就是。

tong-fang-1.jpg

进了楼,看到有一个羽毛球场,两张乒乓球台,楼梯的形状是有些弯,台阶不多,有点象展厅的入口。在前台的一个保安衣着的大哥问了我的来意后,叫我填来访表。之后问我的简历,我说没有,电子版的可不可以。然后大哥叫我到沙发上坐。坐了几分钟,其间有个拖行李箱的外国佬准备离开,和某些大佬打招呼(英语),大概是接送的问题吧。之后,保安大哥拿份对开的纸让我填写简历。

我不知道在“工作经验”里填写什么,想了想,写了“安群电脑店”,职位写“店长”。填好里边的两页,大哥路过时,提醒我翻开底页,那里还有地方要签名。我还在看,但大哥觉得差不多了,就收走了,同时还了他的笔,他笑我面试什么也没带。

交简历后,继续在沙发上等,之后一个戴眼镜的小伙拿着纸,小声问我是不是来面试的。我说是,之后我们就在从前台沙发转到旁边一隔栏相隔的沙发上谈。小伙问我对网络有多熟悉,我说家庭或宿舍小型局域网没问题。问我如遇到断网,怎么处理,我答先看是单点还是成片出问题,是网线还是网络设备故障。再问对装系统之类的是否熟悉,我问是哪种系统,是不是Windows 10,小伙说公司用的是Ubuntu,问我列举一下知道到的命令,我答,重启服务的systemctl,复制的cp,列出文件的ls等。可能小伙觉得我简历上写得内容少,也不知道继续提什么问题了,说他是搞编程开发的,对网络细节也不是很懂,叫我先坐一下。

我在第二张沙发上等,看这个公司的人在过道里走来走去,偶尔还有喊名字的。有一个光头,个子很大的,发现了我,在过道上问我干什么的,我答是面试的。问面试什么职位,我说是“网络工程师”。问我之前做过没有,我答没做过。光头大佬叫了一声,“我的天啊,你没做过(但来面试)。”然后,穿黑正装的大姐拿着纸,对我说,到那边,经理跟你谈谈。

我又回到了前台厅的沙发,想在光头大佬旁坐下,但他说他有病,需要保持距离。正装的大姐听了,笑了笑。光头大佬拿着我的简历,问我具体有哪些工作经验。我说帮网店客户安装基本的web软件,为邻居装装系统,设置WIFI之类的。他问我没有在公司企业的工作经验,我说没有。他指了指天花四周,说如果你来安装视频监控,会吗?我答店里的监控是我自己安装的,用网线连接的,走数据也走供电。他说,那是PoE,考考你,里边有几根线?我答,八根。他问,网线可以多长?我答,我店里的有八米左右,理论上可以多长,我没查。之后,光头大佬在我的简历里画了一个圈,说他问完了,叫一个懂网络的问你。

再之后,我又回到了旁边隔间的沙发上,这次是一个戴眼镜,有点象汪峰,好帅且成熟。他跟我谈“AlphaGo”,说这东西厉害,下棋把人都打败了,主要是收集了大量的棋的走法数据,再判断赢棋。但新一代“AlphaGo Zero”更甚,不用沿着人的已有棋谱来走棋了,自己跟自己下,自动学习。说现在的集群,算法统筹很厉害,问我没有相关的项目实践过,我答没有。他说公司现在是处理在后端,用户前端主要是交互,配置内网和外网,两者相互隔离又有联系,问我有没有相关的建设和维护经验。我答,早之前的用“瘦客户端”和现在的“云桌面”工作概念听过介绍,但没实践过。“汪峰”问我有没用过Linux,我说经常用,不过是命令行,且是针对web基本维护,用的是Debian。“汪峰”说他在电脑里发出一封电子邮件,问我这封邮件是怎么到达目的地的。我答,邮件先到默认网关,然后再沿级路由到目的地。“汪峰”说,能不能讲具体些,他耐心地拿现实中寄平信的例子,人投信到邮箱,本地邮局根据地址分拣,送到上一级市、省级邮局,再下发到市、县邮局,再到街道派送员。我答,电子邮件是以以太网封包,包上有IP地址和掩码,然后网关系统会根据封包上的目的地址,掩码等信息交给下一跳路由设备。最后,他又问,看简历上有这么多的空档期,为什么现在想出来做事情。我说想出来学习一下新事物,在老家有很多东西接触不了。他叫我等。

我一个人坐在沙发上,又观察来来往往的人,有戴口罩的,有男的,有女的。之后,正装姐拿着纸对我说,一周后出面试结果,问我要不要水喝。我说不用了,要不要再登记离开记录,她也说不用了。我转过身,听到保安大哥招呼正装姐过去,可能有话要说吧。

走回松坪村,在松坪小学附近,遇到小学生放学,他们多年轻啊。

tong-fang-2.jpg

假如将来我哪天也招人,不管来面试的有没有录用,都会通知结果,哪怕是通过邮件,微信之类的。

在 CentOS 6 里安装 OpenJDK 1.8 和 Tomcat 8.5

环境:阿里云ECS云服务器 CentOS 6.9 64位

过程:

  1. yum update # 更新软件
    openjdk-1.png
  2. yum install java-1.8.0-openjdk-devel # 安装 OpenJDK 1.8
    openjdk-2.png
  3. wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz # 从国内镜像站点中下载 tomcat 8.5 安装包
  4. tar zxvf apache-tomcat-8.5.31.tar.gz # 解压缩 tomcat
  5. mv apache-tomcat-8.5.31 /usr/tomcat8 # 移到 /usr/tomcat8 目录
  6. useradd -M -d /usr/tomcat8 tomcat8 # 添加 tomcat8 用户
  7. chown -R tomcat8. /usr/tomcat8 # 更改目录属主
  8. vi /etc/rc.d/init.d/tomcat8 # 创建 tomcat 启动脚本

    #!/bin/bash
    
    # Tomcat8: Start/Stop Tomcat 8
    #
    # chkconfig: - 90 10
    # description: Tomcat is a Java application Server.
    
    . /etc/init.d/functions
    . /etc/sysconfig/network
    
    CATALINA_HOME=/usr/tomcat8
    TOMCAT_USER=tomcat8
    
    LOCKFILE=/var/lock/subsys/tomcat8
    
    RETVAL=0
    start(){
    echo "Starting Tomcat8: "
    su - $TOMCAT_USER -c "$CATALINA_HOME/bin/startup.sh"
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch $LOCKFILE
    return $RETVAL
    }
    
    stop(){
    echo "Shutting down Tomcat8: "
    $CATALINA_HOME/bin/shutdown.sh
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $LOCKFILE
    return $RETVAL
    }
    
    case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
        ;;
    esac
    exit $?
  9. chmod 755 /etc/rc.d/init.d/tomcat8 # 令启动脚本可执行
  10. /etc/rc.d/init.d/tomcat8 start # 手动启动 tomcat
    openjdk-3.png
  11. chkconfig --add tomcat8 # 将 tomcat8 添加到服务
  12. chkconfig tomcat8 on # 令 tomcat8 服务随系统启动自动启动
    openjdk-4.png

参考:

在 Debian 9 里安装 WireGuard

WireGuard还在开发状态,但有热心网友赞叹它的强大,如它的组网功能。

环境:阿里云Ubuntu 16.04,vultr Debian 9

过程:

  1. WireGuard官方提供了Ubuntu和Debian的安装方法,请安装好WireGuard
  2. wg genkey | tee wg-private.key | wg pubkey > wg-public.key # 在两台机,均生成公匙和私匙
  3. ip link add wg0 type wireguard # 在两台机,均创建 wg0 网络接口,如果Debian9在执行 ip link add wg0 type wireguard 命令时提示 RTNETLINK answers: Operation not supported ,请安装相应的组件包 apt install linux-headers-$(uname -r)
    wireguard-2.png
  4. ip addr add 10.0.7.1/24 dev wg0 # 在阿里云机,为wg0接口配置10.0.7.1的IP
  5. ip addr add 10.0.7.2/24 dev wg0 # 在vultr,为wg0接口配置10.0.7.2的IP
  6. wg set wg0 private-key ./wg-private.key # 在两台机,为wg0设置私匙
  7. ip link set wg0 up # 在两台机,启用wg0连接状态
  8. wg # 在两台机执行,记下公匙及端口号
    wireguard-3.png
  9. wg set wg0 peer 7LtLwRWlv6tU0po04zoOcvispsouXVEAn+rzN9NsbR8= allowed-ips 10.0.7.1/32 endpoint 47.106.147.60:35927 # 在vultr机里执行,其中 7LtLwRWlv6tU0po04zoOcvispsouXVEAn+rzN9NsbR8= 是阿里云机的公匙,10.0.0.7.1 是阿里云的wg0接口IP,47.106.147.60 是阿里云的公网IP,35972是端口号
    wireguard-4.png
  10. wg set wg0 peer LA34zHFIRGTB6ZzFT2DhxrcNtXc7gY2xjZjyES9b3yQ= allowed-ips 10.0.7.2/32 endpoint 45.63.49.100:34114 # 在阿里云机执行,其中 LA34zHFIRGTB6ZzFT2DhxrcNtXc7gY2xjZjyES9b3yQ= 是vultr机的公匙,10.0.0.7.2 是vultr的wg0接口IP,45.63.49.100 是vultr的公网IP,34114是端口号
  11. 测试,可以互ping wg0接口的内网IP
    wireguard-5.png

参考: