利用C语言制作网站

news/2024/5/12 5:09:19/文章来源:https://blog.csdn.net/weixin_33754065/article/details/90595843

本文章有什么不懂,可以点击浏览一下。。。
本文同时发表于CSDN

进入终端后,我们先尝试ls命令

ls

ls命令,是显示目录内的文件,类似CMD中的dir。和powershell中的ls类似。

582a17950d0798d503e036256113cfe75bb184b5


如果没有nginx-1.6.0.sh这份文件,我们可以运行一下VIM把下面的文件保存为nginx-1.6.0.sh


#!/bin/bashSRC_URI="http://t-down.oss-cn-hangzhou.aliyuncs.com/nginx-1.6.0.tar.gz"
PKG_NAME=`basename $SRC_URI`
PKG_NAME_DIR=nginx-1.6.0
PREFIX=/alidata/nginx
LOGS=$PREFIX/logs
VHOSTS=$PREFIX/conf/vhosts
DIR=`pwd`
DATE=`date +%Y%m%d%H%M%S`
CPU_NUM=$(cat /proc/cpuinfo | grep processor | wc -l)\mv $PREFIX ${PREFIX}.bak.$DATE &> /dev/null
mkdir -p $PREFIX
mkdir -p $VHOSTS
mkdir -p /alidata/install####---- user add ----begin####
groupadd www &> /dev/null
useradd -g www -M -d /alidata/www -s /sbin/nologin www &> /dev/null
####---- user add ----end####
cd /alidata/installif [ ! -s $PKG_NAME ]; thenwget -c $SRC_URI
fi####---- install dependencies ----begin####
if [ "$(cat /proc/version | grep redhat)" != "" ];thenwget http://git.jiagouyun.com/operation/operation/raw/master/linux/redhat/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repoyum makecacheyum -y install gcc gcc-c++ gcc-g77 make unzip automake openssl openssl-devel curl curl-devel pcre-devel
elif [ "$(cat /proc/version | grep centos)" != "" ];then
#note : The CentOS 5 series, Yum will install 32 bit packet, then filter out 32.if [ `uname -m` == "x86_64" ];thenif cat /etc/issue |grep "5\." &> /dev/null;thenif ! cat /etc/yum.conf |grep "exclude=\*\.i?86" &> /dev/null;thensed -i 's;\[main\];\[main\]\nexclude=*.i?86;' /etc/yum.conffirpm --import /etc/pki/rpm-gpg/RPM*fifiyum makecacheyum -y install gcc gcc-c++ gcc-g77 make unzip automake openssl openssl-devel curl curl-devel pcre-devel
elif [ "$(cat /proc/version | grep ubuntu)" != "" ];thensed -i 's/exit 0//' /etc/rc.localapt-get -y updateapt-get -y install unzip libcurl4-openssl-dev libpcre3-dev 
elif [ "$(cat /proc/version | grep -i debian)" != "" ];thenapt-get -y updateapt-get -y install unzip libcurl4-openssl-dev libpcre3-dev
fi
####---- install dependencies ----end##########----- install ----begin######
rm -rf $PKG_NAME_DIR
tar zxvf $PKG_NAME
cd $PKG_NAME_DIR
./configure --user=www \
--group=www \
--prefix=$PREFIX \
--with-http_stub_status_module \
--without-http-cache \
--with-http_ssl_module \
--with-http_gzip_static_module
if [ $CPU_NUM -gt 1 ];thenmake -j$CPU_NUM
elsemake
fi
make install
######---- install ----end######cat > $PREFIX/conf/nginx.conf << EOF
user  www www;
worker_processes  2;error_log  $LOGS/error.log crit;
pid        $LOGS/nginx.pid;#Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 65535;events 
{use epoll;worker_connections 65535;
}http {include       mime.types;default_type  application/octet-stream;#charset  gb2312;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;sendfile on;tcp_nopush     on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types       text/plain application/x-javascript text/css application/xml;gzip_vary on;#limit_zone  crawler  \$binary_remote_addr  10m;log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" ''\$status \$body_bytes_sent "\$http_referer" ''"\$http_user_agent" "\$http_x_forwarded_for"';include $VHOSTS/*.conf;
}
EOFmkdir -p /alidata/www/default
echo '<html><head><title>Welcome to nginx!</title></head><body bgcolor="white" text="black"><center><h1>Welcome to nginx!</h1></center></body></html>' > /alidata/www/default/index.html
chown www:www /alidata/www/default/index.html
cat > $VHOSTS/default.conf << EOF
server {listen       80 default;server_name  _;#index.php or index.jsp ???index index.html index.htm;root /alidata/www/default;####<<<PHP settings>>>#####location ~ .*\.(php|php5)?$#{#	fastcgi_pass  127.0.0.1:9000;#	fastcgi_index index.php;#	include fastcgi.conf;#}####<<<Tomcat settings>>>#####location / {  #or : location ~ \.jsp\$ {#	proxy_pass http://server:8080;#	proxy_set_header        Host \$host;#	proxy_set_header        X-Real-IP \$remote_addr;#	proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for;#}####<<<Cache settings>>>####location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 1d;}location ~ .*\.(js|css)?${expires 1d;}####<<<The log path set>>>####access_log  $LOGS/default.log;
}
EOFecho '#!/bin/bash' >> /etc/init.d/nginx
cat > /etc/init.d/nginx << EOF
# nginx Startup script for the Nginx HTTP Server
# this script create it by ruijie. at 2014.02.26
# if you find any errors on this scripts,please contact ruijie.
# and send mail to ruijie at gmail dot com.
#            ruijie.qiao@gmail.comnginxd=$PREFIX/sbin/nginx
nginx_config=$PREFIX/conf/nginx.conf
nginx_pid=$PREFIX/logs/nginx.pidRETVAL=0
prog="nginx"[ -x \$nginxd ] || exit 0# Start nginx daemons functions.
start() {if [ -e \$nginx_pid ] && netstat -tunpl | grep nginx &> /dev/null;thenecho "nginx already running...."exit 1fiecho -n \$"Starting \$prog!"\$nginxd -c \${nginx_config}RETVAL=\$?echo[ \$RETVAL = 0 ] && touch /var/lock/nginxreturn \$RETVAL
}# Stop nginx daemons functions.
stop() {echo -n \$"Stopping \$prog!"\$nginxd -s stopRETVAL=\$?echo[ \$RETVAL = 0 ] && rm -f /var/lock/nginx
}# reload nginx service functions.
reload() {echo -n \$"Reloading $prog!"#kill -HUP \`cat \${nginx_pid}\`\$nginxd -s reloadRETVAL=\$?echo}# See how we were called.
case "\$1" in
start)start;;stop)stop;;reload)reload;;restart)stopstart;;*)echo \$"Usage: $prog {start|stop|restart|reload|help}"exit 1
esacexit \$RETVAL
EOF
chmod 755 /etc/init.d/nginxchown -R www:www $LOGS
chmod -R 775 /alidata/www
chown -R www:www /alidata/www
cd ..
sed -i 's/worker_processes  2/worker_processes  '"$CPU_NUM"'/' $PREFIX/conf/nginx.conf
chmod 755 $PREFIX/sbin/nginx#add PATH
if ! cat /etc/profile | grep "export PATH=\$PATH:$PREFIX/sbin" &> /dev/null;thenecho "export PATH=\$PATH:$PREFIX/sbin" >> /etc/profile
fi
source /etc/profile
#add rc.local
if ! cat /etc/rc.local | grep "/etc/init.d/nginx start" &> /dev/null;thenecho "/etc/init.d/nginx start" >> /etc/rc.local
fi
/etc/init.d/nginx start
cd $DIR
bash

然后,我们需要更改文件的运行权限
chmod +x nginx-1.6.0.sh

然后在运行nginx-1.6.0.sh文件
./nginx-1.6.0.sh

等待运行结束,可以看到这个界面

这个时候,我们再浏览一下IP,可以看到

则证明nginx安装成功。


接下来我们需要安装一下spawn-fcgi和fcgi,在shell界面下执行
yum -y install spawn-fcgi
yum -y install fcgi-devel

切换到网站运行目录
cd /alidata/www/default/
新建一份C文件
vim a.cpp
按下i进入编辑模式

#include "fcgi_stdio.h"
#include <stdlib.h>
#include <stdio.h>int main()
{while(FCGI_Accept() >= 0)     {printf("Content-type: text/*\r\n\r\n"); printf("欢迎来到由阿里云运行的C语言");}return 0;
}


按下ESC退出编辑模式,输入

:wq

保存及退出VIM

编译这个文件

g++ a.cpp -o index.aliC -lfcgi

等待完成后,我们就可以去编译我们的C语言了

接下来,把文件替换一下,因aliyun是经过优化的,我们需要他原来的那份默认配置编辑

\cp -rf /alidata/nginx/conf/nginx.conf.default /alidata/nginx/conf/nginx.conf

运行VIM编辑文件并定位到第65行

vim /alidata/nginx/conf/nginx.conf +65


轻轻按下ctrl+v,进入编辑模式

按j选中我们要修改代码的注释

然后再按D删除注释

选到第65行,按i进入编辑模式把php改为aliC

同时,找到第66,68,69,70行可以删除,不删也没关系。

按下ESC然后输入:wq保存及退出

:wq

Center

最后重启nginx

nginx -s reload

或者

killall nginx

nginx


最后,运行一下

spawn-fcgi -f /alidata/www/default/index.aliC -p 9000

看到如下提示证明成功了

20170216191658252


接下来运行浏览器,打开http://localhost/index.aliC,或者执行

curl http://localhost/index.aliC

或者

curl http://127.0.0.1/index.aliC

即可看到如下结果

20170216192037070




遇到的问题及解决方案

曾经遇到spawn-fcgi返回child exited with: 0的问题,经过搜索,解决方案很少,几乎找不到。

经过排查,发现是C的源码问题。需要加上


    while(FCGI_Accept() >= 0) 
这句代码才能正常运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_763451.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python建站与java建站有何不同_外贸自建站Wordpress 如何设置前后台不同语言

Wordpress支持非常多的语言&#xff0c;我们外贸用的一般设置前台为目标客户的语言&#xff0c;后台设置为中文&#xff0c;当然&#xff0c;如果你是大神&#xff0c;可以忽略。设置前台后台不同的语言的前提是&#xff1a;你的网站安装了2个及以上的语言Wordpressp安装后&…

《众妙之门——自由网站设计师成功之道》一1.1 迈向成功的几个必要习惯

本节书摘来异步社区《众妙之门——自由网站设计师成功之道》一书中的第1章&#xff0c;第1.1节&#xff0c;作者&#xff1a; 【德】Smashing Magazine 译者&#xff1a; 王兴 责编&#xff1a; 赵轩, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.1 迈向成功的几个…

个人网站如何使用支付宝收款实现

想给个人网站增加一个支付&#xff0c;找到https://neue.v2ex.com/t/350564&#xff0c;按照里面大家讨论的&#xff0c;还真的可以了。1.开通功能https://neue.v2ex.com/t/326701 有个商家二维码图中二维码是服务商的员工码&#xff0c;作为推广的服务商肯定是会有返利但是不…

Webydo:一款在线自由创建网站的 Web 应用

Webydo 是一款专业的在线建站应用&#xff0c;使平面设计师可以创建和管理 HTML 网站&#xff0c;而无需编写代码。设计人员可以设计任何类型网站&#xff0c;只需要点击按钮&#xff0c;就能够发布先进的 HTML 网站。 你可以控制所有的设计组件&#xff0c;如&#xff1a;元素…

《SEO的艺术(原书第2版)》——1.2 搜索引擎的市场份额

1.2 搜索引擎的市场份额 图1-1显示了2011年7月美国市场上各个搜索引擎所占的份额&#xff0c;资料来自comScore。可以看出&#xff0c;Google在美国市场中占据着统治地位。 图1-1&#xff1a;搜索引擎市场份额&#xff08;2011年7月&#xff09;在许多欧洲国家中&#xff0c;这…

大数据:70多个网站让你免费获取大数据存储库

2019独角兽企业重金招聘Python工程师标准>>> 你是否需要大量的数据来检验你的APP性能&#xff1f;最简单的方法是从网上免费数据存储库下载数据样本。但这种方法最大的缺点是数据很少有独特的内容并且不一定能达到预期的结果。以下是70多家可以获得免费大数据存储库…

10个很棒的学习Android 开发的网站

1. Android Developers 作为一个Android开发者&#xff0c;官网的资料当然不可错过&#xff0c;从设计&#xff0c;培训&#xff0c;指南&#xff0c;文档&#xff0c;都不应该错过&#xff0c;在以后的学习过程中慢慢理解体会。 2. Android Guides - CodePath CodePath是国外一…

严重推荐一个网站!!!

众里寻他千百度&#xff0c;蓦然回首那“人”却在灯火阑珊处~~~有一个网站号称“领先的 Web 技术教程 - 全部免费” 真的8错~~~严重推荐~~~ 网站地址&#xff1a;http://www.w3school.com.cn/index.html 首页截图&#xff1a; 转载于:https://www.cnblogs.com/dushouke/archiv…

网站性能优化

转载于:https://www.cnblogs.com/dashan9zj/archive/2009/03/23/1419510.html

分离到底!用XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站

前言 早在Web标准化风潮到来之前&#xff0c;我就考虑过XMLXSLT建站了&#xff0c;我以为这是一种非常优雅、高效、低耦的方案&#xff0c;必将大行其道。 然而时至今日&#xff0c;使用这种方案建站的人依然寥寥无几&#xff0c;大家还都在抱着Web标准化不撒手&#xff0c;其实…

Gitblog官方网站发布上线

2019独角兽企业重金招聘Python工程师标准>>> Gitblog官方网站发布上线 一. 简介 Gitblog是一个简单易用的Markdown博客系统&#xff0c;它不需要数据库&#xff0c;没有管理后台功能&#xff0c;更新博客只需要添加你写好的Markdown文件即可。它摆脱了在线编辑器排版…

HTML5移动Web开发(一)——HTML5和移动网站基本概念以及一些模拟器

当前&#xff0c;手机设备发展迅猛、屏幕尺寸各不相同、存储和性能仍有局限性&#xff0c;如何结合HTML5的功能&#xff0c;在多平台上创建高性能、响应式的移动网站&#xff0c;是Web开发者所要面对的首要挑战。HTML5以及移动网站都是很有前景的技术&#xff0c;本身也仍在不断…

Mozilla新特性只支持https网站

Mozilla的官方博客2015.4.30正式宣布了淘汰HTTP的方案。 其中包括&#xff1a;设定一个日期&#xff0c;所有的新特性将只提供给HTTPS网站&#xff1b;HTTP网站将逐步被禁止访问浏览器功能&#xff0c;尤其是那些与用户安全和隐私相关的功能。Mozilla此举是向Web开发者社区发出…

为大多数懒人,大多数非网站项目扩展Asp.net1.1里面的DataGrid控件

或许本人才疏学浅&#xff0c;在做项目的时候都是用到DataGrid的内置分页(没办法,公司要提高工作效率呀&#xff0c;至于性能&#xff0c;不是我们的事情了&#xff0c;那是老板的事情&#xff0c;老板只要结果。)如果你想要存储过程分页,请参考Sqlserver存储过程和C#分页类简化…

分享一些与算法相关的网站

我在网上到处找了一些与算法相关的网站&#xff0c;也包括一些acmer的OJ。 大家有什么好的网站也可以推荐推荐。 Virtual Judge &#xff08;好吧&#xff0c;网站打开了喵&#xff0c;但现在好像域名(http://acm.hust.edu.cn)用不了喵&#xff09; 与算法相关的当然会想到ACM了…

如何隐藏MOSS2010的网站操作菜单

1、 用SPD2010打开要修改的站点&#xff0c;找到【母版页】-【V4.Master】&#xff0c;如下图&#xff1a; 2、 【签出】-【在高级模式下编辑文件】&#xff0c;如下图&#xff1a; 3、 找到【网站操作】的控件--【SharePoint:SiteActions】 在<span class"ms-siteacti…

VS2005在开发网站时的一个编译BUG

这两天我在用C#做一个WEB网站&#xff0c;用的是VS2005&#xff0c;碰到一个编译问题&#xff0c;害我查了很长时间&#xff0c;终于找到原因了-_- 放上来&#xff0c;如果有碰到相同问题的兄弟正好看看。现象&#xff1a;编译时&#xff0c;当页面对应的cs文件有错误时&#…

一个网站的head和body是如何进行优化的

我们知道任何一个网站都要被解析成html后&#xff0c;浏览器才能识别&#xff0c;换句话说&#xff0c;用任何一门技术做的网站&#xff0c;都是被浏览器解析成为html。因此我们必须懂得&#xff0c;一个html页面由三部分组成&#xff0c;那就是html的开始标签和结束标签&#…

站长dedecms网站被挂马清理过程与分析解决

最近收到一位客户的反馈&#xff0c;告知网站又被挂马&#xff0c;&#xff08;织梦程序真让人头疼总是被挂马,dedecms经常是被挂马真晕了是的~&#xff09;相信站长们都有遇到过网站被挂马或代码恶意植入的问题。下面把处理流程写下来&#xff0c;帮助大家了解并简单处理的过程…

网站设计中常犯的错误

平面|包装|广告|环艺|工业|网页|服装|数码|摄影|绘画|人才|论坛|沙龙|字体首页网页资讯网页作品酷站欣赏设计文章网页沙龙我的空间网页论坛网页人才在线留言联系我们中国设计网改版上线!欢迎来到中国设计网!中国设计网改版上线!欢迎来到中国设计网! 分类 网页设计 网页编程 网站…