Posted on

centos7下安装lemp栈

1.nginx

sudo yum install epel-release/更新的社区软件包
sudo yum install nginx
sudo systemctl start nginx/运行nginx
sudo systemctl enable nginx/开机启动
sudo yum update

2.mysql

sudo yum install http://repo.mysql.com/yum/mysql-5.5-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm/加入软件源
sudo yum repolist all | grep mysql/查看默认安装版本
sudo vim /etc/yum.repos.d/mysql-community.repo/修改默认安装版本
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation
mysql -u root -p

3.php

sudo yum install php php-mysql php-fpm
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php.ini
sudo sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
sudo vim /etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock/修改的行

4.phpmyadmin

sudo yum install phpmyadmin
sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html //把phpmyadmin目录链接到公开的web目录

5.nginx server blocks

sudo vim /etc/nginx/conf.d/default.conf

sudo vim /etc/nginx/nginx.conf

example:

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6.mysql导入导出

导入:

mysql -u root -p

create database 数据库名;

use 数据库名

source /root/数据库名.sql

导出:
mysqldump -u root -p 数据库名 > 文件名.sql
Posted on

php与python的比较

本文仅从需求端比较php与python这2种语言,而不会比较语法、效率、工程等具体的因素,因为这些都是IT业内的看法,而我们的软件不仅要卖给IT业内,最大的市场显然是不懂IT的公司和个人。

php一直在程序员界背负着“最好的语言”名声,这句调侃代表了程序员界的价值观:对非业内人士的贬低,因为我会c/c++/python/c#/java,所以比你只会php显得高级和专业。毕竟php太容易入门了,它在工商业界的应用太过广泛,但是在IT界却被贴上了许多负面标签:设计不好、效率不高、语法奇葩。事实许多公司的业务最简单的解决方案就是PHP,而且PHP开发的开源和商业软件也最丰富。

python虽然在程序员界被吹上了天,因为它既是最好的入门语言,可以写web后端,还可以写机器学习,又能数据分析,而且和大数据沾点边,把这些特点加起来不就是近年来IT界的所有热点吗?但是回过头来看看,用python写的最著名的网站都是IT业内的,其实python这么火爆,完全是被IT界的高薪吸引而想进入互联网公司的门外汉炒起来的。

工具毕竟是工具,有太多人痴迷于工具而忘记了前方的路该怎么走,其实顾客只是想把钉子订入墙内,而IT业内的程序员们太过执迷于使用哪把锤子,忘记了把钉子弄好。

 

Posted on

使用cloudflare屏蔽特定国家的ip

业务需要服务器屏蔽一个国家的ip访问,效率最高的是总是用nginx来实现。

首先重新编译nginx,加上ngx_http_geoip_module这个插件。

然后下一步网上全是下载geoip这个包来判断ip所属国家,这个教程我们换一种思路。

如果使用cloudflare加速的网站,默认会开启IP Geolocation这个选项(在network里可以找到),

它发送一个访问者的国家代码参数$HTTP_CF_IPCOUNTRY到nginx,这样我们就可以直接根据这个参数来屏蔽ip了。

location / {
if ($http_cf_ipcountry = CN) {
return 404;
}
}

国家代码参见:https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

此外还可以加上白名单功能

location / {

if ($ip_whitelist = 1) {
break;
}
if ($http_cf_ipcountry = CN) {
return 404;
}
}

编辑nginx.conf

http {
geo $http_cf_connecting_ip $ip_whitelist {
default 0;
8.8.8.8 1;
}
}

Posted on

vue上手记录

以前说起web前端开发,首先想到的是html+css+js,后来有了jQuery和bootstrap这样的傻瓜式工具,再后来兴起vue和React这样的框架,感觉前端发展太过迅速,不学习已经跟不上脚步了。

近几年移动端崛起,桌面端不断弱化,除了双端原生APP开发,跨端的技术就看前端怎么发展了。html5目前看来已经凉了大半,微信小程序和小游戏异军突起,vue和React这样的开源框架究竟能不能一统江湖,就要看主导厂家构建的生态系统了。

看一个技术能不能长久发展,有没有前途,最重要的还要看其市场大小和上手难度,比如js构建下的全栈技术生态是目前最热门的技术,另外热门的技术都是多面手,python在后端开发、机器学习、数据科学都有应用。

vue十分简单,如果有基本的js知识,十分容易上手。

但是必须学习许多新概念,比如渐进式、渲染、组件、vuex、node、npm、vue-cli、webpack等等,这些东西或者是vue自己创造的词,或者是其它前端工具使用的工具,对于我这个只会用前端三语言加一个记事本做开发的人来说,还是不小的挑战。

Posted on

php爬虫采集填坑

大多数早期的个人站长应该都听说过火车头采集器这款软件吧?当年做个人网站和seo的风潮正兴,但是没有内容是个大问题,而且个人站长主要专注于运营,对技术关注度不高,于是火车头这类傻瓜式的采集软件才会兴起。

现在各类编程语言都可以写爬虫来采集内容入库,好处是定制化程度、效率和灵活度比较高。这次用php来采集,主要使用了snoopy这个类、preg函数和正则表达式。

1.出现乱码问题,使用mb_convert_encoding转换为utf-8

2.snoopy类的用法,

include "Snoopy/Snoopy.class.php";
$snoopy = new Snoopy;

$snoopy->fetch("http://url");
$out = $snoopy->results;

3.正则表达式

推荐《正规表达式必知必会》