分类存档: 网站建设

github静态博客(github pages)创建及绑定域名

wordpress太臃肿了,感觉运行越来越慢,一直想迁移到github pages,这段时间研究了一下,很简单,记录一下过程。

1、创建github项目,如github.com/zhcj/zhcj.github.io,然后git clone到本地后,添加index页面,提交。

2、域名管理

我用的是dnspod,登录后,添加一个CNAME,我设置了一个二级域名,记录值填写为zhcj.github.io即可。

3、github项目根目录添加一个文件:CNAME,把添加的二级域名写上,一行就行。

4、github静态博客可以用Hexo(本地npm安装,需要nodejs环境),或者Jekyll(本地gem安装,需要ruby环境),根据自己的喜好选择一个吧。

完成!

试试:http://note.phpcj.org/

[原创]Git版本控制系统安装使用简明手册(网站开发用)

一、Linux服务器端

1、创建git账号

mkdir -p /myweb/user
groupadd git
useradd git -g git -m -s /usr/bin/git-shell -b /myweb/user

2、安装git

yum install git

3、创建git空版本库

cd /myweb
git init --bare git

4、创建或迁移网站目录

git clone /myweb/git /myweb/www
cp /原代码目录/* /myweb/www/
cd /myweb/www
git add *
git commit -m "创建项目"
git push origin master

5、设置网站钩子(提交代码到git版本库后,自动拉取到网站目录)

cd /myweb/git/hooks
mv post-update.sample post-update
sed -i "s/exec/#exec/" post-update
echo "unset \$(git rev-parse --local-env-vars)" >> post-update
echo "cd /myweb/www" >> post-update
echo "git pull" >> post-update

6、修改git库及网站目录权限

chown git:git /myweb/git -R
chown git:git /myweb/www -R

7、创建登录密钥(也可以在Windows中用puttygen来创建)

ssh-keygen -C mygitserver -f mykey

出现提示后,如果需要密码,输入密码,如是不需要密码,回车即可,再次确认后,密钥对创建成功。其中当前目录下的mykey(你的私钥)文件请一定要妥善保管,千万不能留在服务器上,下载保存后从服务器中删除。公钥添加到服务器中。

mkdir /myweb/user/git/.ssh
mv mykey.pub /myweb/user/git/.ssh/authorized_keys
chown git:git /myweb/user/git/.ssh -R
chmod 700 /myweb/user/git/.ssh
chmod 600 /myweb/user/git/.ssh/authorized_keys

8、卸载或停用selinux(虽然不建议,但对于新手来说,selinux确实很令人困扰,卸载是最简单的办法)

yum remove selinux*

几个注意事项:

  • 以上操作中的git用户名、mykey文件名、myweb目录、/myweb/www网站目录等,均可根据自己习惯用其他名称。
  • 网站服务nginx/apache及php的运行用户,设置成git会更加方便,不会有权限问题(安全性要求高的网站不在此考虑)。
  • 如在服务器的网站目录/data/www下运行git pull/push命令,一定要在运行完命令之后,再次更改git库及网站目录权属,具体命令见上面步骤6。

二、Git客户端使用方法

1、安装git客户端

Windows系统下的图形客户端,建议用TortoiseGit,注意中文包需要单独下载。

2、将前面生成的私钥导入到客户端

  • Linux系统、Windows系统的Git Bash方式(命令行操作):
mkdir ~/.ssh
cp mykey ~/.ssh/id_rsa
  • Windows系统中TortoiseGit图形界面(两种密钥使用方法):

方式一:安装时默认选择的是putty方式的密钥,需要用安装TortoiseGit时带的puttygen工具,将mykey文件导入,再点击“Save private key”导出为ppk文件。使用TortoiseGit时,导入此密钥文件即可。

方式二:安装时手动选择OpenSSH方式的密钥,按上面Git Bash的方式导入mykey密钥即可在TortoiseGit中自动调用上述密钥。

3、从服务器克隆项目

  • Linux系统、Windows系统的Git Bash方式(命令行操作):
git clone ssh://git@服务器IP:端口号/myweb/git /本地路径
  • Windows系统中TortoiseGit图形界面:

在文件夹中右键:克隆,地址同上。

小常识:密钥

密钥登录是Linux服务器管理中常用的一种登录方式。密钥为一对,分公钥和私钥,公钥放在服务器上,私钥妥善保存在自己电脑中。类似于生活中的锁和钥匙,用自己的锁锁住的门,只有自己手里的钥匙才能打开。不用担心,计算机生成的密钥对不会有相同的情况,这种机率只存在于理论中。

升级WordPress

WordPress一直提示升级,拖了很久了,今天抽空升级了。

现在是WordPress-4.5.2跑在Nginx-1.10.0 + MariaDB-10.1.14 + PHP-7.0.6组合的服务器上,全部是最新版本了。

直接在服务器上操作很简单:

1、下载新版本的WordPress,解压。

2、将旧版本中的文件和目录复制到新版中,主要是:wp-config.php文件和wp-content目录,cp到新目录即可,需要注意的是uploads目录的权限。

3、有需要升级的插件,重新从WordPress下载插件,解压后,放到插件目录。

4、网页打开http://博客地址/wp-admin/upgrade.php,升级数据库。

升级完成后,登录后台,可能还会有升级提示,比如:翻译更新。搜索了一下,用了个简单粗暴的方法:

define('DISALLOW_FILE_MODS',true);

添加到wp-config.php文件中即可。

来源:http://www.wpmee.com/disable-plugin-theme-updates-installation-wordpress/

本博客现在已经运行在PHP7上了

最近这一段时间都在折腾PHP7,组合是最新的Nginx1.9.9+MariaDB10.1.10+PHP7.0.2,成果:

1、Windows下做了一个WNMP一键包:Nginx+MariaDB+PHP,下载地址:http://pan.baidu.com/s/1o87t90m

2、分别在Debian Jessie(Debian8)和CentOS7下成功编译了Nginx+MariaDB+PHP环境,树莓派版下载地址:http://pan.baidu.com/s/1dEuTU9r

3、博客的VPS也全面换成了编译安装的上述组合,感觉打开页面是不是快了些?

有时间把过程写一写,中间遇到了若干问题,好在都一一解决了。

Gentoo安装php7

昨天php7正式发布了,今天发现Gentoo官方源里面已经有了php7的ebuild,于是安装尝试一下。安装过程如下:
1、解除php7的mask状态:

echo "dev-lang/php" >> /etc/portage/package.unmask

2、添加全局use:

echo 'PHP_TARGETS="php7-0"' >> /etc/portage/make.conf

3、编译安装:

emerge php

4、设置php版本为7

eselect php set fpm 2

5、现在是php7与php5共存,有两个命令还是指向php5的,改成php7

rm /usr/bin/phpize
ln -s /usr/lib64/php7.0/bin/phpize /usr/bin/phpize
rm /usr/bin/php-config
ln -s /usr/lib64/php7.0/bin/php-config /usr/bin/php-config

6、启动php

systemctl start php-fpm@7.0.service

发现有出错信息,查看一下,原来是默认日志路径有问题(估计Gentoo官方很快会修复),改一下:

/etc/php/fpm-php7.0/php-fpm.conf

中的

;error_log = log/php-fpm.log

去掉前面的;,并且改成

error_log = /var/log/php-fpm.log

7、再次启动,成功!

树莓派安装LNMP(DietPi)

最近拿到朋友的一个树莓派,因为自己用的就是linux桌面环境,再用它装桌面环境没什么意思,打算做一个精简的web server。

操作系统如果选择Raspbian,除了Wheezy(Debian7)版本,已经有了Jessie(Debian8)版本,Jessie最近还出了一个light版,也就是精简版本的,不带桌面环境。

另一个选择就是DietPi,在Raspbian基础上精简的,也相当不错。

都试了试,感觉还是后者更精简一些,后者是Raspbian light版所占空间的一半,大概600多M,才300来个包,而前者则有400多个包。

下面简单说一下在Linux下安装配置DietPi(Jessie)的过程:

1、DietPi下载地址:http://fuzon.co.uk/phpbb/viewtopic.php?f=8&t=9

下载之后,解压,dd刻录到tf卡上:

dd if=DietPi_v94_RPi-\(Jessie\).img of=/dev/mmcblk0

2、如果用dhcp方式,把卡插上就可以启动了,不过,由于默认是dhcp,想连接的话,还需要想办法获取其ip来ssh连接,因此,建议配置成静态ip,配置方法:

在linux下,修改tf卡上的文件:

vi /run/media/linux/1263ae8d-aaf3-41b6-9ac0-03e7fecb5d6a/etc/network/interfaces

将其中的

# Ethernet
#auto eth0
iface eth0 inet dhcp
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1

改为:

# Ethernet
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1

无线网卡的(前提是无线网卡已经驱动起来,且有无线网络可用):

# Ethernet
auto wlan0
iface wlan0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
wpa-ssid mywifi
wpa-psk mypassword

如果想修改源,则修改下面文件:

vi /run/media/linux/1263ae8d-aaf3-41b6-9ac0-03e7fecb5d6a/etc/apt/sources.list

这个版本的DietPi还有wheezy的源,删掉:

rm /run/media/linux/1263ae8d-aaf3-41b6-9ac0-03e7fecb5d6a/etc/apt/sources.list.d/*

3、配置好上面东西之后,插上tf卡,启动系统。

为了省事,我一般会先设置密钥登录:

ssh-copy-id root@raspberry IP

密码为dietpi,然后:

ssh root@raspberry IP

ssh连接之后,系统会自动升级,让他自动升级,会有一系列的配置,根据自己要求修改。另外,也可以自己调用dietpi-*一系列命令来进行配置或升级等。

下面是我根据自己习惯进行的一些配置:

(1)系统默认ssh server为非常轻量的dropbear,但它不支持客户端scp上传,干掉它,安装openssh-server。

apt-get install openssh-server
apt-get purge dropbear

(2)系统默认编辑器为nano,干掉它,装vim。

apt-get install vim
apt-get purge nano

(3)系统升级

apt-get update;apt-get upgrade -y

4、安装nginx、php、mariadb:

apt-get install nginx-light php5-fpm php5-mysql mariadb-server

安装过程中需要设置mariadb的root密码。安装完成之后,这几个服务会自动启动,并添加开机启动,这也是deb系发行版的一个特色吧。

另外,由于没有ipv6地址,nginx启动会出错。

解决办法就是将/etc/nginx/sites-enabled/default中的listen 80 default_server;下面一行监听ipv6的代码删掉。

具体配置nginx/php-fpm的方法见其他文章,这里就不再写了。

最后写个phpinfo测试一下就好了。

最后:看一下安装的软件包数量及占用空间情况:

root@DietPi:/etc/nginx# dpkg --get-selections|wc -l
316
root@DietPi:/etc/nginx# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/root       7.2G  911M  6.3G   13% /
devtmpfs        483M     0  483M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  6.5M  481M    2% /run
tmpfs           5.0M     0  5.0M    0% /run/lock
tmpfs           487M     0  487M    0% /sys/fs/cgroup
tmpfs            10M  956K  9.1M   10% /DietPi
tmpfs            20M   24K   20M    1% /var/log
tmpfs           487M     0  487M    0% /tmp
/dev/mmcblk0p1   56M   21M   36M   37% /boot
tmpfs            98M     0   98M    0% /run/user/0

当然,如果没有无线网卡,也不连接ntfs的存储设备,还有一些包可以删掉:

apt-get purge firmware* wireless* ntfs

archlinux安装nginx+mariadb+php-fpm

gentoo某次升级之后,残废了,于是转战到arch中,安装了kde5,配置了web开发环境。

arch中安装kde5是相当简单的,一条命令足够了:

pacman -S plasma sddm

好进入正题,arch中安装nginx+mariadb+php-fpm也是相当简单,不过配置起来和别的不太一样,费了点时间。

1、安装基本组件:

pacman -S nginx php-fpm mariadb php-gd

2、配置maridb,安装数据库及设置密码等:

参考:https://wiki.archlinux.org/index.php/MySQL

mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld
mysql_secure_installation
systemctl restart mysqld

3、配置nginx,修改配置文件,主要是改成以下内容

        location / {
            root   /data/web;
            index  index.php index.html index.htm;
        }
......
        location ~ \.php$ {
            fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /data/web$fastcgi_script_name;
            include        fastcgi_params;
        }

按照红色字体修改即可。

4、启动及开机启动

systemctl start nginx
systemctl start php-fpm
systemctl enable nginx
systemctl enable mysqld
systemctl enable php-fpm

写个phpinfo测试一下就行了。

bash脚本学习(二)

端午这几天休息,好好琢磨了一下用bash脚本抓取网页、mysql入库等东西,也算小有所成,把区教育局的2010年以来的4000多条最新公告和学校快讯全部抓下来(没抓图片和附件,太占地方了),并且导入到了mysql数据库中,结合php小程序,可以方便的查询了。

一、从列表页面中抓取所有新闻的链接,存储为一个列表文件

#定义列表文件链接
url="http://***.***.***/node_116"
#由于列表文件分成三种情况,分别抓取
#抓取列表首页
curl $url".htm" | grep '' | sed "s/<a href="/n/g;s/" target/n/g;s/<[^>]+>//g" | grep ".htm" | head -20 | sed 's/^//xxzq/&/g' > newslist 
#上面的20是每页的新闻条数,以下相同
#抓取2-5页列表
for (( i = 2 ; i < 6 ; i ++))
do
	curl $url"_"$i".htm" | grep '' | sed "s/<a href="/n/g;s/" target=/n/g;s/<[^>]+>//g" | grep ".htm" | sed 's/^//xxzq/&/g' >> newslist 
done
#抓取6-153页
pageid=154
for (( i = 6 ; i < $pageid ; i ++))
do
	curl $url"_"$i".htm" | grep '' | sed "s/<a href="/n/g;s/">/n/g;s/<[^>]+>//g" | grep ".htm" | head -20 | sed 's/^//xxzq/&/g' >> newslist 
done

好了,打开newslist文件看看吧,全部链接抓取完成!

二、从列表文件中读取所有链接,抓取新闻

#定义抓取到的目录及链接根目录
dir='news/'
url="http://***.***.***"
#建立抓取到的目录
if [ ! -d $dir ];then
	mkdir $dir
fi
#从列表文件中读取链接并抓取新闻
for i in `cat newslist`
do
	filename=$dir2${i:25}
	curl $url$i > $filename 
done

三、生成sql文件并导入mysql数据库

#定义抓取到的页面目录
dir="news/"
#读取列表文件,将抓取到的htm文件处理成sql,并导入数据库(数据库字段下面有,自己看吧)
for i in `cat newslist`
do
	url="http://***.***.***"$i
	filename=${i:25}
	filenum=${filename%.*}
	sql=$dir$filenum".sql"
	txt=$dir$filenum".txt"
	filename=$dir$filename
#获取文件前面的新闻标题、发布人、发布时间等信息
	cat $filename | head -1 |  sed "s//n/;s/.0/n/;s/</author>/n/;s/</title>/n/;s/<[^>]+>//g;s/
$//g;s/ //g;s/^[ t]*//g;s/[ t]*$//g;" > $sql 
	title=`cat $sql | head -4 | tail -1 | sed 's/"/\"/g'`
	post=`cat $sql | head -3 | tail -1 | sed 's/"/\"/g'`
	posttime=`cat $sql | head -2 | tail -1`
#sql语句写入临时文件
	echo "INSERT INTO `news_article` (`news_id`,`news_web`,`news_type`,`news_url`,`news_title`,`news_post`,`news_posttime`,`news_content`) VALUES("","教育网","学校快讯","" | iconv -f gbk -t utf8 > tmpfile
#继续向临时文件写
	echo "$url","$title","$post","$posttime","" >> tmpfile
#新闻正文各种处理后,写入临时文件
	cat $filename | sed 's//n/g' | sed '1,2d' |  sed "s/<[^>]+>//g;s/
$//g;s/ //g" | tr 'n' ' ' | sed 's/^[ t]*//g;s/[ t]*$//g' | sed 's/"/\"/g' >> tmpfile
	echo "");" >> tmpfile
#去掉回车
	cat tmpfile | tr -d 'n' > $sql
#将新闻正文处理成一个文件,方便php调用
	cat $filename | sed 's//n/g' | sed '1,2d' | sed 's/</div>//;s/../../attachement/http://***.***.***/xxzq/attachement/g;s/../../site2/http://***.***.***/xzbg/site2/g' > $txt
#写入数据库
	mysql -uroot -ppassword dbname < $sql
done
#删除临时文件
rm tmpfile

从上面也应该可以看到,写入到数据库中的正文去掉了所有html标签,并且将段落回车替换成了空格,方便查询,而真正显示页面时,用file_get_contents来读取处理过的正文,去掉了头尾大量没用的信息,另外将图片和附件链接替换成原始链接。

VPS优化及配置网站过程

这几天给一网友配置CentOS6.4的vps,香港的,速度不错,简要记录一下过程:

一、格式化并挂载数据分区、迁移原网站数据

fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /www
mount /dev/sdb1 /www
scp root@原网站ip:/www/* /www/

二、清理无用的桌面软件包(脚本:clean.sh)

#!/bin/bash
yum remove gnome* -y
yum remove blue* -y
yum remove gtk* -y
yum remove qt* -y
yum remove httpd* -y
yum remove openoffice* -y
yum remove libreoffice* -y
yum remove sane* -y
yum remove iwl* -y
yum remove ModemManager* -y
yum remove pulseaudio* -y
yum remove alsa* -y
yum remove wireless* -y
yum remove wpa* -y
yum remove dejavu* -y
yum remove wqy* -y
yum remove w17* -y
yum remove m17* -y
yum remove avahi* -y
yum remove xorg* -y
yum remove cjkuni* -y
yum remove mobile* -y
yum remove mesa* -y
yum remove samba* -y
yum remove selinux* -y
yum remove fontconfig* -y
yum remove ppp* -y
yum remove *firmware* -y
yum remove nano* -y
yum remove postfix* -y
yum remove gstreamer* -y

清理掉500多个包。

三、关闭无用的服务(脚本:killservice.sh)

#!/bin/bash
service acpid stop
chkconfig acpid off
service abrtd stop
chkconfig abrtd off
service certmonger stop
chkconfig certmonger off
service auditd stop
chkconfig auditd off
service rpcbind stop
chkconfig rpcbind off
service xinetd stop
chkconfig xinetd off
service abrt-ccpp stop
chkconfig abrt-ccpp off
service abrt-oops stop
chkconfig abrt-oops off

四、升级系统:

yum update

有228个包需要升级,reboot重启后,卸载旧内核:

yum remove kernel

五、安装LNMP(脚本:lnmp.sh)

#!/bin/bash
#加nginx官方源
rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#安装nginx+php-fpm+mysql
yum install nginx php-fpm mysql-server php-mysql php-mbstring php-gd php-pear -y
#设置mysql密码
service mysqld start
mysqladmin -u root password '密码'
#配置nginx、php
vi /etc/nginx/nginx.conf
vi /etc/nginx/conf.d/default.conf
#启动nmp服务并设置开机启动
service php-fpm start
service nginx start
chkconfig nginx on
chkconfig mysqld on
chkconfig php-fpm on
#打开80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

六、其他优化设置
1、mysql数据库位置迁移

vi /etc/my.cnf

修改如下字段:

datadir = /var/lib/mysql

2、隐藏php版本信息
3、nginx设置优化:隐藏nginx版本号、设置cpu数量、设置静态文件缓存等
4、修改root密码、ssh端口,防止网络扫描攻击
5、mysql定期备份脚本

待续。。。

博客的Akismet好像出问题了,最近的评论被删除了

这两天垃圾评论泛滥,昨天清理的时候,结果把最近的几条评论删除了。。。

第 1 页,共 8 页12345...最旧 »