codePrinter

3天前,荊老師給了我一臺打印機,讓我完成省賽代碼打印系統的測試。
打印機型號爲 HP P1007,算是一臺比較老的打印了。javascript

本文記錄了從打印機驅動安裝到代碼打印WEB部署的全過程php

1. 安裝打印機驅動

HP在linux端沒有提供官方的打印機驅動,還好,在HP Linux Imaging and Printing找到了第三方驅動。
剛開始我選擇手動安裝,然而驅動彷佛是正確安裝了,可是打印機就是不工做。
後來採起的策略是先配置必要環境,再使用自動安裝的腳本,具體記錄以下:html

必要的文件

經過以下網站進行下載:java

https://sourceforge.net/projects/hplip/files/hplip/
http://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/python

這裏我選擇了最新版本 hplip-3.16.5,不過仍是推薦 hplip-3.16.3
最終咱們獲得如下4個文件,一個安裝腳本,一個插件,以及兩個asc文件:mysql

hplip-3.16.5.run
hplip-3.16.5-plugin.run
hplip-3.16.5.run.asc
hplip-3.16.5-plugin.run.asc

安裝依賴

個人系統是 Ubuntu14.04 x64, 其餘版本參考 這裏
運行以下命令,完成依賴的安裝:linux

sudo apt-get install --assume-yes avahi-utils libcups2 cups libcups2-dev cups-bsd cups-client libcupsimage2-dev libdbus-1-dev build-essential ghostscript openssl libjpeg-dev libsnmp-dev snmp-mibs-downloader libtool libusb-1.0.0-dev wget policykit-1 policykit-1-gnome python3-dbus python3-gi python3-dev python3-notify2 python3-imaging python3-pyqt4 gtk2-engines-pixbuf python3-dbus.mainloop.qt python3-reportlab python3-lxml libsane libsane-dev sane-utils xsane

sudo apt-get install python-dev

運行腳本

sudo chmod +x hplip-3.16.5.run
./hplip-3.16.5.run

會出現各類提示,順着安裝程序一路走下去,便可安裝成功。nginx

2. 配置Nginx+PHP+mysql環境

提高權限

sudo su

安裝apt源管理工具、添加nginx和php的安裝源

apt-get install python-software-properties
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:ondrej/php5
apt-get update

安裝mysql

apt-get install mysql-server

安裝php及對mysql的支持

apt-get install php5 php5-fpm php5-mysql php-apc

安裝php功能模塊

apt-get install php-pear php5-dev php5-curl php5-gd php5-intl php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

安裝nginx

apt-get install nginx

配置php

vim /etc/php5/fpm/php.ini

找到:cgi.fix_pathinfo=1
改成:cgi.fix_pathinfo=0git

配置nginx

建立一個 /www 目錄設置爲 755 權限github

mkdir /www
chmod 755 /www
vim /etc/nginx/sites-enabled/default

找到:root /usr/share/nginx/html;
改成:root /www;

找到:index index.html index.htm;
改成:index index.php index.html index.htm;

找到:location ~ .php$ { * } 區塊,修改成:

location ~ \.php$ {
                try_files $uri =404;
                include snippets/fastcgi-php.conf;
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

解決php-fpm與nginx的小bug

vim /etc/nginx/fastcgi_params

在最後一行添加:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

解決nginx不能運行的問題

vim /etc/nginx/snippets/fastcgi-php.conf
刪除 ``try_files`` 所在的行

重啓各項服務

service php5-fpm reload
service nginx reload

測試

vim /www/index.php

輸入 <?php echo phpinfo(); ?> 並保存。
打開你的瀏覽器訪問: http://localhost,若一切正常,將輸出php環境信息

3. 部署代碼打印程序

將此 代碼打印程序 ,複製到 /www 目錄下便可。
使用瀏覽器訪問 http://localhost/codeprinter.html 便可。

核心代碼以下:

<?php
        
        $name = $_POST['name'];
        $passwd = $_POST['passwd'];
        $content = $_POST['content'];
        $content = stripslashes($content);
        $result = false;
        $handle = fopen('namelist', 'r');
        while($userinfo = fscanf($handle, "%s %s")){
            list($team, $password) = $userinfo;
            if($team == $name && $passwd == $password)
                $result = true;
        }
        fclose($handle);
        if(!$result){
            echo "<script language=javascript>alert('team number or password is wrong!');</script>";
            echo "<script language=javascript>history.back();</script>";
        }else {
        //phpinfo();
            $filename = "./code/".$name."-".date('H-i-s');
            $fp = fopen($filename, "wb");
            $content = date('H-i-s')."\t\t".$name."\n\n".$content;
            fwrite($fp, $content);
            fclose($fp);
            $command = "lpr -o prettyprint ".$filename;
            system($command);   
            echo "<script language=javascript>alert('Your code has been printed successfully, please wait a moment!');</script>";
            echo "<script language=javascript>history.back();</script>";
        }
    ?>

最終效果以下:

xg

4. 參考資料

ubuntu14.04安裝hp laserjet p1007打印機
基於ubuntu 14搭建nginx+php+mysql環境
php5.3 fastcgi方式 安裝以及和nginx整合

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息