热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ubuntu12.04系统安装配置OpenStackEssex过程记录

3月27日更新:基本完成文档内容4月5日更新:重新安装第三次,修改了文档一下小错误。4月6日更新:完成的novavolume的内容。所有英文文档的内容,已经全部覆盖4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启gl
3月27日更新:基本完成文档内容
4月5日更新:重新安装第三次,修改了文档一下小错误。
4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖
4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787  这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。
4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。
 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。
4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。
硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。
下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。
为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。
目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。

一:准备系统
1:下载ubuntu 12.04. 服务器版本
ubuntu12.04正式版本,需要4月26号发布,目前是beta2
http://releases.ubuntu.com//precise/ubuntu-12.04-beta2-server-amd64.iso
2:安装OS
安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。
IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。
装完系统后。
apt-get update
apt-get upgrade
更新源里的包,更新系统。确保你装的是最新版本的包。
3:设置root权限
为了简单,全部都是用root来运行。
sudo passwd
就可以给root设置一个密码。直接用root运行。
4:设置网络
我的网络设置和文档是完全一样。这样也减少错误的几率。
# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
        address 10.42.0.6
        netmask 255.255.255.0
        network 10.42.0.0
        broadcast 10.42.0.255
        gateway 10.42.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-search test.com
auto eth1
iface eth1 inet static
address 192.168.22.1
network 192.168.22.0
netmask 255.255.255.0
broadcast 192.168.22.255
 重启网络,让修改生效
/etc/init.d/networking restart
5:安装bridge
apt-get install bridge-utils
重启网络或者重启一下机器都可以
/etc/init.d/networking restart
6:设置NTP
apt-get install ntp
编辑 /etc/ntp.conf 在末尾添加下面3行
server ntp.ubuntu.com iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
重启服务
service ntp restart
7:设置Iscsi
apt-get install tgt
重启服务
service tgt start
安装iscsi客户端
apt-get install open-iscsi open-iscsi-utils
8:安装rabbitmq
apt-get install rabbitmq-server memcached python-memcache
apt-get install kvm libvirt-bin

二:安装mysql和创建相关数据库
Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。
1:安装mysql
过程中,会提示你输入root密码。
apt-get install -y mysql-server python-mysqldb
让mysql支持外部访问
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf  
重启服务
service mysql restart
2:安装phpmyadmin (可选)
为了方便,可以把phpmyadmin装上,可以比较方便管理数据库
apt-get install phpmyadmin
安装的时候,第一个提示是让你输入root的密码。
3:创建数据库
nova数据库,   管理员:novadbadmin,密码是:dieD9Mie
glance数据库,管理员:glancedbadmin,密码是:ohC3teiv
如果你修改密码,后面很多配置都需要相应更改。
mysql -uroot -p
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie';
quit
mysql -uroot -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv';
quit

 三:安装和配置keystone
Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
1:安装keystone
apt-get install keystone python-keystone python-keystoneclient
2:配置keystone
需要修改 /etc/keystone/keystone.conf 两个地方
默认定义的token就是ADMIN,我使用hastexo作为token

[DEFAULT]
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
#admin_token = ADMIN
admin_token =hastexo 另外一个地方是
[catalog]
#driver = keystone.catalog.backends.sql.Catalog
driver = keystone.catalog.backends.templated.TemplatedCatalog
template_file = /etc/keystone/default_catalog.templates
重启服务
service keystone restart
3: 导入数据
这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
下载脚本
 wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt
mv keystone_data.sh_.txt keystone_data.sh
让脚本可运行
chmod +x keystone_data.sh
运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
第一个是登录dashboard的admin的密码
第二个就是keystone的token
#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
#export SERVICE_TOKEN="hastexo"
export SERVICE_TOKEN="Centrin"
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
./keystone_data.sh
顺利运行,会什么都没有输出


#echo $?
下面会输出0 ,表示正常。你就别再运行脚本
keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
看到这些,就说明keystone安装正常。


四:安装和配置glance
1:安装软件
apt-get install glance glance-api glance-client glance-common glance-registry python-glance
2:配置/etc/glance/glance-api-paste.ini 
修改文件最后3行,这些设置都是keystone导入数据的时候设置的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD% 改成
admin_tenant_name = admin
admin_user = admin
admin_password = hastexo
3:设置 /etc/glance/glance-registry-paste.ini
也是修改文件最后3行,和上面是一样的。
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = hastexo
4:配置/etc/glance/glance-registry.conf
修改
#sql_cOnnection= sqlite:////var/lib/glance/glance.sqlite
sql_cOnnection= mysql://glancedbadmin:ohC3teiv@10.42.0.6/glance
在末尾添加两行
[paste_deploy]
flavor = keystone 5:配置/etc/glance/glance-api.conf
在末尾添加两行
[paste_deploy]
flavor = keystone 6:同步数据库
目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认glance数据库没任何内容。
# glance-manage version_control 0
# glance-manage db_sync          
/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47: SADeprecationWarning: useexisting is deprecated.  Use extend_existing.
  useexisting=True)
重启服务
# service glance-api restart && service glance-registry restart
glance-api stop/waiting
glance-api start/running, process 13321
stop: Unknown instance: 
glance-registry start/running, process 13327
7:验证glance服务是否正常
下面的步骤照做就可以,具体原理可以看英文
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=hastexo
export OS_AUTH_URL="http://localhost:5000/v2.0/" 检查检查
# export | grep OS_
declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"
declare -x OS_PASSWORD="hastexo"
declare -x OS_TENANT_NAME="admin"
declare -x OS_USERNAME="admin"
运行
glance index
没有任何的输出。表示正常。
#echo $?
下面会输出0 ,表示正常。
# glance --version
glance 2012.1
8:下载镜像并上传
ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意
这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。
下载镜像
wget http://uec-images.ubuntu.com/releases/11.10/release/ubuntu-11.10-server-cloudimg-amd64-disk1.img
上传镜像
glance add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/ubuntu-11.10-server-cloudimg-amd64-disk1.img
这里还有一种方法上传,如果你没用环境变量。
glance --tenant=admin--username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/ubuntu-11.10-server-cloudimg-amd64-disk1.img
上传完镜像后。在运行
glance index
或者
glance --username=admin --password=hastexo --tenant=admin --auth_url=http://127.0.0.1:5000/v2.0 index
就可以看到上传的image。
 

五:安装配置nova
1:安装nova相关组件
apt-get install nova-api nova-cert nova-common nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler  nova-volume python-nova python-novaclient  nova-consoleauth python-novnc novnc
2:配置 /etc/nova/nova.conf
把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,
如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。
root@node6:~# cat /etc/nova/nova.conf
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--allow_admin_api=true
--use_deprecated_auth=false
--auth_strategy=keystone
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
--s3_host=10.42.0.6
--ec2_host=10.42.0.6
--rabbit_host=10.42.0.6
--cc_host=10.42.0.6
--nova_url=http://10.42.0.6:8774/v1.1/
--routing_source_ip=10.42.0.6
--glance_api_servers=10.42.0.6:9292
--image_service=nova.image.glance.GlanceImageService
--iscsi_ip_prefix=192.168.22
--sql_cOnnection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova
--ec2_url=http://10.42.0.6:8773/services/Cloud
--keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens
--api_paste_cOnfig=/etc/nova/api-paste.ini
--libvirt_type=kvm
#--libvirt_type=qemu
--libvirt_use_virtio_for_bridges=true
--start_guests_on_host_boot=true
--resume_guests_state_on_host_boot=true #novnc
--novnc_enabled=true
--novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html
--vncserver_proxyclient_address=127.0.0.1
--vncserver_listen=127.0.0.1
 # network specific settings --network_manager=nova.network.manager.FlatDHCPManager
--public_interface=eth0
--flat_interface=eth1
--flat_network_bridge=br100
--fixed_range=192.168.22.32/27
--floating_range=10.42.0.32/27 
--network_size=32
--flat_network_dhcp_start=192.168.22.33
--flat_injected=False
--force_dhcp_release
--iscsi_helper=tgtadm
--connection_type=libvirt
--root_helper=sudo nova-rootwrap
#--verbose
--verbose=False
3:配置/etc/nova/api-paste.ini
也是修改文件最后3行,
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
改成
admin_tenant_name = admin
admin_user = admin
admin_password = hastexo
4:停止和重启nova相关服务
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
5:同步数据库
以前我运行同步数据库,如果正确, 当nova.conf
--verbose=False
是没有任何的输出,否则有一堆是输出。
nova-manage db sync


创建网络
nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32


设定floating IP
nova-manage floating create --ip_range=10.42.0.32/27


设置权限
chown -R nova:nova /etc/nova
再重启相关服务
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done
6:检查nova服务
nova list
nova image-list
nova floating-ip-create


六:创建第一个VM
这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。
1: 创建密钥
# ssh-keygen
一路回车,就可以了。
 
2:上传密钥到数据库 # # nova keypair-add --pub_key .ssh/id_rsa.pub key1
这个时候,就可以查看到上传的key
root@node6:~# nova keypair-list
+------+-------------------------------------------------+
| Name |                   Fingerprint                   |
+------+-------------------------------------------------+
| key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 |
+------+-------------------------------------------------+
4:开始创建虚拟机
 查看image list
nova image-list
查看flavor-list
 nova flavor-list
创建虚拟机
~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator
看图有真相


 查看一下创建的虚拟机
 nova show superfrobnicator


ssh 访问VM
打开防火墙
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
这个时候,就可以直接ssh到虚拟机上。
ssh -i .ssh/id_rsa ubuntu@192.168.22.35
这样就可以登录服务器。
Floating IP访问
如果希望访问floating IP
申请floating IP
nova floating-ip-create
关联vm
# nova add-floating-ip superfrobnicator 10.42.0.36
 查看虚拟机
 nova show superfrobnicator
ssh访问虚拟机
ssh -i .ssh/id_rsa ubuntu@10.42.0.36
查看安全组和规则
# nova secgroup-list
# nova secgroup-list-rules default
看图


看看结果


 ssh访问vm




有用的命令
查看keypair
nova keypair-list
删除keypair
nova keypair-delete
查看vm
nova list
删除vm,vm的ID
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343

七:安装和配置Dashbaord
 1:安装dashbaord
apt-get install libapache2-mod-wsgi openstack-dashboard
2:配置/etc/openstack-dashboard/local_settings.py
把CACHE_BACKEND修改成下面
#CACHE_BACKEND = 'locmem://'
CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
小bug
目前我装的dashboard,会出现下拉菜单无法工作,是因为缺少js导致。
cp -r /usr/share/pyshared/horizon/static/horizon /usr/share/openstack-dashboard/openstack_dashboard/static/
3重启服务 service apache2 restart
这个时候,你就可以登录dashboard
http://10.42.0.6
user:admin
pass:hastexo



5:理解project和user关系
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行


八:euca2ools 工作
euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。
1:安装euca2ools工具
apt-get install -y euca2ools
2:设置环境变量
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
export CREDS=$(keystone ec2-credentials-create)
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
3:运行命令
大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list
现在Essex对Euca的工具支持应该比Diablo好很多。


列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances


Appendix A:  使用nova-volume 
Essex Dashboard可以管理nova-volume。有两种办法来实现
默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。
1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘,
新建一个文件来做 LVM:
DD一个设备
# dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
加载一个设备
# losetup -f nova-volumes.img
查看加载情况
# losetup -a
/dev/loop0: [0801]:35127298 (/opt/nova-volumes.img)
创建一个nova-volume的卷
# vgcreate nova-volumes /dev/loop0
  No physical volume label read from /dev/loop0
  Physical volume "/dev/loop0" successfully created
  Volume group "nova-volumes" successfully created
查看卷
#vgdisplay
就可以看到创建好的nova-volume。
创建一个5G的卷,名字为volume1
nova volume-create --display_name "volume1" 5
创建完后,可以
nova volume-list


创建的过程非常慢,看status完成后,才能attach。
如果希望删除创建的volume,目前我知道的就只能通过
euca-describe-volumes
euca-delete-volume vol-00000001
把卷添加给虚拟机,1,表示ID号
nova volume-attach superfrobnicator 1 /dev/vdb
 2:单独一块盘
 # pvcreate /dev/sdb1
# pvdisplay
#vgcreate nova-volumes /dev/sdb1
# vgdisplay
这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。
参考下面文档
http://www.vpsee.com/2011/09/openstack-nova-storage-management/
http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html
lvm 相关资料http://hi.baidu.com/chenshake/blog/item/6fd327f35595eb4e342acc60.html

Appendix C: Dashboard 创建vm,允许ping,ssh登录
对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。
不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。
从ubuntu下载的image,只能用密钥登录,不能用密码登录。
1:设置安全组 Security group
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。
为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。

默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。


 
2:创建密钥
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
这个时候,你如果有私钥,就可以直接登录。


下载私钥
点击create keypair,就会提示你下载私钥。私钥是pem后缀。




那么你就参考这个文档,就可以。
3:创建vm
创建vm的时候,你会选择keypair,安全组。




创建完成后,得到其实是一个内网规定IP


4:floating IP
给虚拟机分配一个 floating IP,可以理解成是公网的IP


分配完


关联vm


 
 看看结果


5:ssh 访问vm
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
对于ubuntu提供的image,ssh的用户名是:ubuntu,
SecureCRT 6.x版本
对于6.x版本,已经可以直接使用pem后缀的密钥


putty登录
对于putty,需要对密钥进行转换。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
到官方网站下载:PuTTYgen这个工具
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以


存放到本地。
设置putty使用密钥




linux客户端ssh登录vm
如果你是linux服务器上,你可以上传密钥到服务器上
ssh -i key_for_openstack.pem ubuntu@192.168.22.34
就可以直接登录虚拟机。
Appendix D:FAQ
1:我登录服务器后,命令都无法运行
~# nova image-list
ERROR: You must provide a username via either --os_username or env[OS_USERNAME]
如何解决。
这个问题,其实还是你的环境变量导致的。
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=hastexo
export OS_AUTH_URL="http://localhost:5000/v2.0/"
export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')
export CREDS=$(keystone ec2-credentials-create)
export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }') 这样就可以了。ecua 和nova的命令都可以使用。
如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。
http://bbs.chinaunix.net/thread-1958386-1-1.html
root@node6:~# nova image-list
+--------------------------------------+-----------------------------+--------+--------+
|                  ID                  |             Name            | Status | Server |
+--------------------------------------+-----------------------------+--------+--------+
| 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE |        |
+--------------------------------------+-----------------------------+--------+--------+


 2:如何用curl去测试keystone
替换红色部分,就可以了
# curl -d '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "admin", "password": "hastexo"}}}' -H "Content-type: application/json" http://10.42.0.6:35357/v2.0/tokens | python -mjson.tool

推荐阅读
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • linux 聊天工具项目,在linux下实现简单聊天系统(一)项目基本框架内容
    项目主要实现的功能:注册,登陆,获取好友列表,一对一聊天,消息群发,离线消息缓存,下线。需要的工 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
author-avatar
V陈冬梅_717
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有